wavelet_decomp.cpp

Go to the documentation of this file.
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 }

Generated on Mon Sep 15 12:54:34 2008 for GPLIB++ by  doxygen 1.5.5