Esempio n. 1
0
int partition(const vector<string>& args)
{
    if (args.size() != 2) throw runtime_error(usage_);
    const string& filename = args[0];
    int partitionCount = atoi(args[1].c_str());
    if (partitionCount < 2) 
        throw runtime_error("Nothing to do.");

    TransientData td(filename); 
    if (td.data().size() % partitionCount != 0) 
        throw runtime_error("Must choose an even partition.");

    int partitionSize = td.data().size()/partitionCount;
    double partitionDuration = td.observationDuration()/partitionCount;

    for (int i=0; i<partitionCount; i++)
    {
        TransientData partition;
        partition.startTime(td.startTime() + partitionDuration*i);
        partition.observationDuration(partitionDuration); 
        partition.A(td.A());
        partition.B(td.B());
        partition.data().resize(partitionSize);
        copy(td.data().begin()+(partitionSize*i), 
             td.data().begin()+(partitionSize*(i+1)), 
             partition.data().begin());
        partition.write(partitionFilename(filename, i, digitCount(partitionCount-1)));
    }

    return 0;
}
Esempio n. 2
0
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");
}