kopia lustrzana https://github.com/windytan/slowrx
freq tests
rodzic
eef0e19a5d
commit
e46cd31e7a
22
src/tests.cc
22
src/tests.cc
|
@ -1,6 +1,9 @@
|
|||
#include "common.h"
|
||||
#include "dsp.h"
|
||||
|
||||
#include <map>
|
||||
#include <cmath>
|
||||
|
||||
void printWave (Wave wave, double dt) {
|
||||
for (int i=0;i<(int)wave.size();i++)
|
||||
printf("%lf,%lf\n",i*dt,wave[i]);
|
||||
|
@ -21,27 +24,27 @@ double sdev (std::vector<double> nums) {
|
|||
double result = 0;
|
||||
double _mean = mean(nums);
|
||||
for (double d : nums)
|
||||
result += pow(d - _mean, 2);
|
||||
result = sqrt(result / nums.size());
|
||||
result += std::pow(d - _mean, 2);
|
||||
result = std::sqrt(result / nums.size());
|
||||
return result;
|
||||
}
|
||||
|
||||
void runTest(const char *sweepsound) {
|
||||
DSPworker dsp;
|
||||
DSP dsp;
|
||||
double tone_len = 0.3;
|
||||
dsp.openAudioFile(sweepsound);
|
||||
dsp.getInput()->openAudioFile(sweepsound);
|
||||
std::map<double, std::vector<double> > errors;
|
||||
|
||||
while(dsp.is_open()) {
|
||||
double f = dsp.peakFreq(1200,2500,WINDOW_HANN63);
|
||||
double lum_should_be = int(dsp.get_t()/tone_len) % 256;
|
||||
while(dsp.getInput()->isOpen()) {
|
||||
double f = dsp.calcPeakFreq(1200,2500,WINDOW_HANN63);
|
||||
double lum_should_be = int(dsp.getInput()->get_t()/tone_len) % 256;
|
||||
double f_should_be = 1500 + lum_should_be / 255.0 * (2300-1500);
|
||||
|
||||
//printf("f should be %.0f, is %.0f (error %.1f)\n",f_should_be,f,f - f_should_be);
|
||||
printf("at t=%f, f should be %.0f, is %.0f (error %.1f)\n",dsp.getInput()->get_t(),f_should_be,f,f - f_should_be);
|
||||
|
||||
errors[f_should_be].push_back((f - f_should_be) );
|
||||
|
||||
dsp.forward();
|
||||
dsp.getInput()->forward();
|
||||
}
|
||||
|
||||
typedef std::map<double, std::vector<double> >::iterator it_type;
|
||||
|
@ -51,4 +54,3 @@ void runTest(const char *sweepsound) {
|
|||
printf("%f,%f\n",k,sdev(errs));
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Ładowanie…
Reference in New Issue