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