Mercurial > hg > audiodb
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 |