Example #1
0
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
}