comparison audioDB.cpp @ 70:c3f7ee73bdde

Fix various off-by-one errors in the radius search (makes tests/0010 pass)
author mas01cr
date Wed, 26 Sep 2007 15:14:54 +0000
parents 4c4c4ca6b59e
children ec349966368c
comparison
equal deleted inserted replaced
69:8ef2efe604c9 70:c3f7ee73bdde
1935 *pn++=0.0; 1935 *pn++=0.0;
1936 ps=sNorm; 1936 ps=sNorm;
1937 unsigned processedTracks=0; 1937 unsigned processedTracks=0;
1938 for(i=0; i<dbH->numFiles; i++){ 1938 for(i=0; i<dbH->numFiles; i++){
1939 if(trackTable[i]>sequenceLength-1){ 1939 if(trackTable[i]>sequenceLength-1){
1940 w = trackTable[i]-sequenceLength; 1940 w = trackTable[i]-sequenceLength+1;
1941 pn = sMeanL2+i; 1941 pn = sMeanL2+i;
1942 *pn=0; 1942 *pn=0;
1943 while(w--) 1943 while(w--)
1944 if(*ps>0) 1944 if(*ps>0)
1945 *pn+=*ps++; 1945 *pn+=*ps++;
1946 *pn/=trackTable[i]-sequenceLength; 1946 *pn/=trackTable[i]-sequenceLength+1;
1947 SILENCE_THRESH+=*pn; 1947 SILENCE_THRESH+=*pn;
1948 processedTracks++; 1948 processedTracks++;
1949 } 1949 }
1950 ps = sNorm + trackTable[i]; 1950 ps = sNorm + trackTable[i];
1951 } 1951 }
2116 } 2116 }
2117 2117
2118 trackOffset=trackOffsetTable[track]; // numDoubles offset 2118 trackOffset=trackOffsetTable[track]; // numDoubles offset
2119 trackIndexOffset=trackOffset/dbH->dim; // numVectors offset 2119 trackIndexOffset=trackOffset/dbH->dim; // numVectors offset
2120 2120
2121 if(sequenceLength<trackTable[track]){ // test for short sequences 2121 if(sequenceLength<=trackTable[track]){ // test for short sequences
2122 2122
2123 if(verbosity>7) { 2123 if(verbosity>7) {
2124 cerr << track << "." << trackIndexOffset << "." << trackTable[track] << " | ";cerr.flush(); 2124 cerr << track << "." << trackIndexOffset << "." << trackTable[track] << " | ";cerr.flush();
2125 } 2125 }
2126 2126
2190 cerr << "within duration tolerance." << endl; 2190 cerr << "within duration tolerance." << endl;
2191 cerr.flush(); 2191 cerr.flush();
2192 } 2192 }
2193 2193
2194 // Search for minimum distance by shingles (concatenated vectors) 2194 // Search for minimum distance by shingles (concatenated vectors)
2195 for(j=0;j<numVectors-wL;j+=HOP_SIZE) 2195 for(j=0;j<=numVectors-wL;j+=HOP_SIZE)
2196 for(k=0;k<trackTable[track]-wL;k+=HOP_SIZE){ 2196 for(k=0;k<=trackTable[track]-wL;k+=HOP_SIZE){
2197 thisDist=2-(2/(qNorm[j]*sNorm[trackIndexOffset+k]))*DD[j][k]; 2197 thisDist=2-(2/(qNorm[j]*sNorm[trackIndexOffset+k]))*DD[j][k];
2198 if(verbosity>10) { 2198 if(verbosity>10) {
2199 cerr << thisDist << " " << qNorm[j] << " " << sNorm[trackIndexOffset+k] << endl; 2199 cerr << thisDist << " " << qNorm[j] << " " << sNorm[trackIndexOffset+k] << endl;
2200 } 2200 }
2201 // Gather chi^2 statistics 2201 // Gather chi^2 statistics