void NoisyData::generateData() { const ublas::vector<double>& p = tlp_.parameters(); const int sampleCount = 21; double delta = 1/tlp_.T; double fBegin = tlp_.f0 - delta*(sampleCount/2) + delta*relativeGridOffset_; double peakHeight = abs(L_(tlp_.f0, p)); double noiseLevel = peakHeight / signalToNoise_; noiseVariance_ = noiseLevel*noiseLevel; for (int i=0; i<sampleCount; i++) { double f = fBegin + i*delta; complex<double> value = L_(f, p); complex<double> noise(Random::gaussian(noiseLevel/sqrt(2.)), Random::gaussian(noiseLevel/sqrt(2.))); fd_.data().push_back(FrequencyDatum(f, value+noise)); } fd_.calibration(Calibration(1.075e8, -3.455e8)); fd_.observationDuration(tlp_.T); fd_.analyze(); // recache }