vector_classify

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
  • void

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