00001 #include "CTimeSeriesData.h"
00002 #include <iostream>
00003 #include <string>
00004 #include <vector>
00005 #include <fstream>
00006 #include <gsl/gsl_wavelet.h>
00007
00008 using namespace std;
00009
00010 int main(void)
00011 {
00012 string infilename, outfilename;
00013 int componentindex = 0;
00014 ptsdata currentdata;
00015 double *dataarray;
00016 const int seglength = 1024;
00017
00018
00019
00020 cout << "Input - Filename: ";
00021 cin >> infilename;
00022 CTimeSeriesData TsData;
00023 TsData.GetData(infilename);
00024 cout << "Component: ";
00025 cin >> componentindex;
00026 switch (componentindex)
00027 {
00028 case 0:
00029 currentdata = &(TsData.Data->Ex.data);
00030 break;
00031 case 1:
00032 currentdata = &(TsData.Data->Ey.data);
00033 break;
00034 case 2:
00035 currentdata = &(TsData.Data->Hx.data);
00036 break;
00037 case 3:
00038 currentdata = &(TsData.Data->Hy.data);
00039 break;
00040 case 4:
00041 currentdata = &(TsData.Data->Hz.data);
00042 break;
00043 }
00044 outfilename = infilename + ".wav";
00045 const int size = currentdata->size();
00046 const int nsegs = size/seglength;
00047 vector<double> stackedcoeffs(seglength,0);
00048 dataarray = new double[seglength];
00049
00050
00051 gsl_wavelet *w = gsl_wavelet_alloc(gsl_wavelet_daubechies,4);
00052 gsl_wavelet_workspace *work = gsl_wavelet_workspace_alloc(seglength);
00053
00054 for (int i = 0; i < nsegs; ++i)
00055 {
00056 for (int j = 0; j < seglength; ++j)
00057 dataarray[j] = currentdata->at(j+i*seglength);
00058 gsl_wavelet_transform_forward(w, dataarray, 1, seglength, work);
00059 for (int j = 0; j < seglength; ++j)
00060 stackedcoeffs.at(j) += dataarray[j];
00061 }
00062 ofstream outfile(outfilename.c_str());
00063 for (int j = 0; j < seglength; ++j)
00064 outfile << stackedcoeffs.at(j) << endl;
00065 delete []dataarray;
00066
00067
00068 }