read_vector_file

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
  • Number of vectors read

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);
}