Mercurial > hg > qm-dsp
diff dsp/rateconversion/TestResampler.cpp @ 369:192d6b3f4379
Fixes to tests
author | Chris Cannam <c.cannam@qmul.ac.uk> |
---|---|
date | Wed, 16 Oct 2013 08:16:23 +0100 |
parents | ee8ace7fdc88 |
children | c1e98c18628a |
line wrap: on
line diff
--- a/dsp/rateconversion/TestResampler.cpp Tue Oct 15 18:27:19 2013 +0100 +++ b/dsp/rateconversion/TestResampler.cpp Wed Oct 16 08:16:23 2013 +0100 @@ -151,15 +151,16 @@ } vector<double> -squareWave(int rate, int freq, int n) +squareWave(int rate, double freq, int n) { //!!! todo: hoist, test vector<double> v(n, 0.0); for (int h = 0; h < (rate/4)/freq; ++h) { double m = h * 2 + 1; - double scale = 1 / m; + double scale = 1.0 / m; for (int i = 0; i < n; ++i) { - v[i] += scale * sin(i * 2 * M_PI * freq / rate); + double s = scale * sin((i * 2.0 * M_PI * m * freq) / rate); + v[i] += s; } } return v; @@ -190,14 +191,33 @@ vector<double> inSpectrum(inrate, 0.0); FFTReal(inrate).forwardMagnitude(square.data(), inSpectrum.data()); + for (int i = 0; i < inSpectrum.size(); ++i) { + inSpectrum[i] /= inrate; + } vector<double> outSpectrum(outrate, 0.0); FFTReal(outrate).forwardMagnitude(maybeSquare.data(), outSpectrum.data()); + for (int i = 0; i < outSpectrum.size(); ++i) { + outSpectrum[i] /= outrate; + } // Don't compare bins any higher than 99% of Nyquist freq of lower sr int lengthOfInterest = (inrate < outrate ? inrate : outrate) / 2; lengthOfInterest = lengthOfInterest - (lengthOfInterest / 100); +/* + std::cerr << "inSpectrum:" << std::endl; + for (int i = 0; i < lengthOfInterest; ++i) { + if (i % 5 == 0) std::cerr << std::endl << i << ": "; + std::cerr << inSpectrum[i] << " "; + } + std::cerr << "\noutSpectrum:" << std::endl; + for (int i = 0; i < lengthOfInterest; ++i) { + if (i % 5 == 0) std::cerr << std::endl << i << ": "; + std::cerr << outSpectrum[i] << " "; + } + std::cerr << std::endl; +*/ for (int i = 0; i < lengthOfInterest; ++i) { BOOST_CHECK_SMALL(inSpectrum[i] - outSpectrum[i], 1e-7); }