From dfa8c57424d65702720a7dc4c4d2d136ca7fcb27 Mon Sep 17 00:00:00 2001 From: drowe67 Date: Wed, 8 Aug 2012 01:51:59 +0000 Subject: [PATCH] modified to build codebook by splitting, this seems a better solution ofr initial codebook git-svn-id: https://svn.code.sf.net/p/freetel/code@607 01035d8c-6547-0410-b346-abe4f91aad63 --- codec2-dev/unittest/vqtrainsp.c | 224 ++++++++++++++++++-------------- 1 file changed, 129 insertions(+), 95 deletions(-) diff --git a/codec2-dev/unittest/vqtrainsp.c b/codec2-dev/unittest/vqtrainsp.c index d7cb2e0c..fccd4cfc 100644 --- a/codec2-dev/unittest/vqtrainsp.c +++ b/codec2-dev/unittest/vqtrainsp.c @@ -64,6 +64,7 @@ void acc(float v1[], float v2[], int d); void norm(float v[], int k, int n[]); int quantise(float cb[], float vec[], int d, int e, float *se); void print_vec(float cb[], int d, int e); +void split(float cb[], int d, int b); /*-----------------------------------------------------------------------* \ @@ -88,12 +89,12 @@ int main(int argc, char *argv[]) { int ret; int i,j, finished, iterations; float sd; - int var_n; + int var_n, bits, b, levels; /* Interpret command line arguments */ if (argc != 5) { - printf("usage: %s TrainFile D(dimension) E(number of entries) VQFile\n", argv[0]); + printf("usage: %s TrainFile D(dimension) B(number of bits) VQFile\n", argv[0]); exit(1); } @@ -108,9 +109,10 @@ int main(int argc, char *argv[]) { /* determine k and m, and allocate arrays */ d = atoi(argv[2]); - e = atoi(argv[3]); + bits = atoi(argv[3]); + e = 1< 1) { - if (var > 0.0) { - delta = (var_1 - var)/var; + //#define DBG + #ifdef DBG + printf("cb...\n"); + print_vec(cb, d, levels); + printf("\n\nquantise...\n"); + #endif + + /* quantise training set */ + + se = 0.0; + rewind(ftrain); + for(i=0; i 1) { + if (var > 0.0) { + delta = (var_1 - var)/var; + } + else + delta = 0; + if (delta < DELTAQ) + finished = 1; + } - /* determine new codebook from centroids */ + /* determine new codebook from centroids */ - for(i=0; i