MCPcopy Create free account
hub / github.com/FastLED/FastLED / runAccuracyTest

Function runAccuracyTest

tests/profile/fft_cq_compare.cpp:160–189  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

158};
159
160static void runAccuracyTest(Mode mode, const char *modeName,
161 int samples, int bands, float fmin, float fmax,
162 int sampleRate, const float *testFreqs, int nFreqs,
163 fl::vector<AccuracyResult> &results) {
164 Args args(samples, bands, fmin, fmax, sampleRate, mode);
165 Impl fft(args);
166 Bins out(bands);
167 fl::vector<fl::i16> signal;
168
169 for (int f = 0; f < nFreqs; f++) {
170 generateSine(signal, samples, sampleRate, testFreqs[f]);
171 fft.run(signal, &out);
172
173 int expected = out.freqToBin(testFreqs[f]);
174 int actual = peakBin(out.raw());
175 float leak = leakageRatio(out.raw(), actual);
176
177 AccuracyResult r;
178 r.modeName = modeName;
179 r.testFreq = testFreqs[f];
180 r.expectedBinFreq = out.binToFreq(expected);
181 r.actualBinFreq = out.binToFreq(actual);
182 r.expectedBin = expected;
183 r.actualBin = actual;
184 r.binError = (actual > expected) ? (actual - expected)
185 : (expected - actual);
186 r.leakage = leak;
187 results.push_back(r);
188 }
189}
190
191struct ModeEntry {
192 Mode mode;

Callers 1

printAccuracyReportFunction · 0.85

Calls 8

leakageRatioFunction · 0.85
freqToBinMethod · 0.80
binToFreqMethod · 0.80
generateSineFunction · 0.70
peakBinFunction · 0.70
runMethod · 0.45
rawMethod · 0.45
push_backMethod · 0.45

Tested by

no test coverage detected