Digital Signal Processing Library
Voice Lab
Program name: vector_classify
Language: C
In file: vector_lib.c
Objective: Find closest codebook vector to each vector
Usage: void classify_vector(double **cb_vector, int cb_length, int vector_width, double **vector, int number_vectors, int *vector_index);
Parameters:
- cb_vector - The pointer to the codebook vector
- cb_length - The number of vectors in the codebook
- vector_width - Number of data points in each vactor
- vector - array of vectors to classify
- number_vectors - number of vectors in array
- vector_index - index of closest codebook vector for each vector in array
Return value
Mathematical Description:
Comments:
User Comments
Code:
void vector_classify(double **cb_vector, int cb_length, int vector_width, double **vector, int number_vectors, int *vector_index) { int i, j, options; double distance, distance_index;
//if(options == 0) distance = distance; //if(options == 2) distance = sqrt(distance); //if(options == 8) distance /= vector_width; options = 2;
for(i = 0; i < number_vectors; i++) { /* set initial distance equal to the first codebook vector */ distance_index = vector_distance(cb_vector[0], vector[i], vector_width, options);
/* set initial vector equal to first codebook vector */ vector_index[i] = 0;
/* for each additional codebook vecto, see if the distance is shorter */ for(j = 1; j < cb_length; j++) { distance = vector_distance(cb_vector[j], vector[i], vector_width, options); number_comps++; if(distance < distance_index) { distance_index = distance; vector_index[i] = j; } } } return; }
|