void sinusoidTest() { TransientData td; td.observationDuration(T_); td.A(A_); td.B(B_); td.data().resize(sampleCount_); SinusoidSignal signal; td.add(signal); td.write("sinusoid.dat"); FrequencyData fd; td.computeFFT(1, fd); fd.write("sinusoid.cfd"); }
void testInteraction(double separation) { double f1 = 100000/.768; double f2 = f1 + separation; CombinedSignal signal; const double A = 1; const double tau = .768; signal.push_back(DecayingSinusoid(A, tau, f1, 0)); signal.push_back(DecayingSinusoid(A, tau, f2, 0)); TransientData td; td.observationDuration(T_); td.A(A_); td.B(B_); td.data().resize(sampleCount_); td.add(signal); FrequencyData fd; td.computeFFT(1, fd); vector<PeakInfo> peaks; peaks.push_back(PeakInfo(f1)); peaks.push_back(PeakInfo(f2)); int windowRadius = 10; int iterationCount = 20; auto_ptr<FrequencyEstimatorPhysicalModel> estimator = FrequencyEstimatorPhysicalModel::create(windowRadius, iterationCount); vector<PeakInfo> estimatedPeaks; estimator->estimateFrequencies(fd, peaks, estimatedPeaks, ""); if (estimatedPeaks.size() != 2) throw runtime_error("not happening"); cout << setprecision(2) << fixed << setw(10) << separation << setw(15) << setprecision(8) << estimatedPeaks[0].frequency - f1 << " " << setw(15) << setprecision(8) << estimatedPeaks[1].frequency - f2 << " " << endl; }