123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104 |
- /*
- genampdata.c
- Generates test sparse amplitude data for vqtrainsp testing.
- */
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- #include <math.h>
- #include <ctype.h>
- #include <assert.h>
- #include "../src/defines.h"
- typedef struct {
- float real;
- float imag;
- } COMP;
- #define NVEC 200000
- #define D 2
- #define E 8
- int main(void) {
- FILE *f=fopen("testamp.flt", "wb");
- int i, j, m, L, index;
- float amp, noisey_amp, pitch, Wo;
- float sparse_pe[MAX_AMP];
- #ifdef TEST1
- /* D fixed amplitude vectors of E elements long,
- with D=2, E=8:
- $ ./vqtrainsp testamp.flt 2 8 test.txt
- test.txt should be same as training data.
- */
- for(i=0; i<E; i++) {
- amp = i+1;
- for(j=0; j<D; j++)
- fwrite(&, sizeof(float), 1, f);
- }
- #endif
- #ifdef TEST2
- /*
- Bunch of amps uniformly distributed between -1 and 1. With e
- entry "codebook" (1 dimensional vector or scalar):
- $ ./vqtrainsp testamp.flt 1 e test.txt
- should get std dev of 1/(e*sqrt(3))
- */
- for(i=0; i<NVEC; i++) {
- amp = 1.0 - 2.0*rand()/RAND_MAX;
- fwrite(&, sizeof(float), 1, f);
- }
- #endif
- #define TEST3
- #ifdef TEST3
- /*
- Data for testing training of spare amplitudes. Similar to TEST1, each
- sparse vector is set to the same amplitude.
- /vqtrainsp testamp.flt 20 8 test.txt
- */
- for(i=0; i<NVEC; i++) {
- for(amp=1.0; amp<=8.0; amp++) {
- pitch = P_MIN + (P_MAX-P_MIN)*((float)rand()/RAND_MAX);
- Wo = TWO_PI/pitch;
- L = floor(PI/Wo);
- //printf("pitch %f Wo %f L %d\n", pitch, Wo, L);
- for(m=0; m<MAX_AMP; m++) {
- sparse_pe[m] = 0.0;
- }
- for(m=1; m<=L; m++) {
- index = MAX_AMP*m*Wo/PI;
- assert(index < MAX_AMP);
- noisey_amp = amp + 0.2*(1.0 - 2.0*rand()/RAND_MAX);
- sparse_pe[index] = noisey_amp;
- #ifdef DBG
- if (m < MAX_AMP/8)
- printf(" %4.3f ", noisey_amp);
- #endif
- }
- #ifdef DBG
- printf("\n");
- #endif
- fwrite(sparse_pe, sizeof(float), MAX_AMP/8, f);
- }
- }
- #endif
- return 0;
- }
|