Listing 4: Instantiating a Signal<> object.
int _tmain(int argc, _TCHAR* argv[]) { typedef double DataType; // this can be float or double typedef Signal<DataType> SigType; // instantiate signal object and read in the data from the CSV file ... SigType signal(NUM_SAMPLES); ifstream ifstr(DATA_FILE); if (!ifstr) { cerr << "Failed to open " << DATA_FILE << "\n"; return -1; } DataType *pData = signal; for (int ii=0; ii<NUM_SAMPLES; ++ii) { if (!(ifstr >> pData[ii])) { cerr << "Expected " << NUM_SAMPLES << " data points in the file " << DATA_FILE << "\n"; return -1; } } // get min and max values in this signal ... int iiMin, iiMax; DataType minVal = signal.min(&iiMin), maxVal = signal.max(&iiMax); cout << "Min value is " << minVal << "\nMax val is " << maxVal << "\n"; // compute magnitude of the FFT ... SigType magFFT; signal.fftMagnitude(&magFFT); // save it to a file ... pData = magFFT; ofstream ofstr(FFT_FILE); for (int ii=0; ii<magFFT.getNumSamples(); ++ii) ofstr << pData[ii] << "\n"; ofstr.close(); return 0; }