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; }
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"); }