Digital Signal Processing Library
Voice Lab
Program name: read_vector_file
Language: C
In file: vector_lib.c
Objective: read list of vectors from file
Usage: int read_vector_file(double ***vector, double **vector_data_ptr,\
int vector_width, int *number_vectors_max, char *file_name);
Parameters:
- vector - The pointer to the vector array
- vector_data_ptr - Pointer to the actual data - Auxiliary pointer
- vector_width - Number of elements in each vector
- number_vectors_max - Number of vectors memory was allocated for
- file_name - name of input file with vectors to be read
Return
Mathematical Description:
Comments: Routine is used to read a list of vectors from a file
User Comments
Code:
int read_vector_file(double ***vector, double **vector_data_ptr, int vector_width, int *number_vectors_max, char *file_name) { double y; int number_vectors = 0; int i, j, k; FILE *input;
if((*number_vectors_max) == 0) (*number_vectors_max) = VECTOR_QUANTITY;
if((input = fopen(file_name,"rb")) == NULL) { //printf("File not found\n"); exit(1); } else { //printf("File opened for reading\n"); }
/* allocate space for reading in the vectors */ matrix_allocate(&(*vector), &(*vector_data_ptr), vector_width, number_vectors_max);
do { if(number_vectors == (*number_vectors_max)) { /* increase maximum number of vectors permitted */ matrix_reallocate(&(*vector), &(*vector_data_ptr), vector_width, number_vectors_max); } k = 1; /* read in the individual values for each vector */ for(j = 0; (j < vector_width) && (k == 1); j++) { k = fscanf(input, "%lf", &y); if(k == 1) { (*vector)[number_vectors][j] = y; } } if(k == 1) { /* if vector read, bump counter */ number_vectors++; } } while(k == 1);
fclose(input);
return(number_vectors); }
|