Main Page   Class Hierarchy   Compound List   File List   Compound Members   File Members  

wavefreq.cpp

Go to the documentation of this file.
00001 
00042 
00043 #include <assert.h>
00044 #include <stdio.h>
00045 
00046 #include <vector>
00047 
00048 #include "signalUtil.h"
00049 #include "spectrum.h"
00050 
00051 #include "haar.h"
00052 #include "daub.h"
00053 #include "line.h"
00054 
00055 // #include "poly.h"
00056 // #include "polyHaar.h"
00057 
00058 
00059 void genSawTooth( double *vec, size_t N)
00060 {
00061   double *A = new double[N];
00062   double *B = new double[N];
00063 
00064   signalUtil::sawToothWave( A, N, 8, 1.5 );  
00065   signalUtil::sawToothWave( B, N, 32, 0.25 );
00066   signalUtil::addSignal( vec, A, B, N );
00067   delete [] A;
00068   delete [] B;
00069 }
00070 
00071 
00094 int
00095 main()
00096 {
00097   const size_t N = 1024;
00098   // const size_t N = sizeof( data ) / sizeof( double );
00099   double vecX[N], vecY[N];
00100 
00101   // signalUtil::gen_freqMix( vecX, vecY, N );
00102   // signalUtil::gen_sinCombo( vecX, vecY, N );
00103 
00104   genSawTooth( vecY, N );
00105   // signalUtil::prVec( vecY, N );
00106 
00107   // signalUtil::prVec( vecY, N );
00108   // signalUtil::prCoords( vecX, vecY, N );
00109 
00110   // The "Haar" transform
00111   // haar<double * > w;
00112 
00113   // Daubechies D4 wavelet
00114   // Daubechies<double * > w;
00115 
00116   // linear interpolation wavelet
00117   line<double *> w;
00118 
00119   //
00120   // Polynomial interpolation wavelets
00121   //
00122   // poly<double *> w;
00123   // polyHaar<double *> w;
00124 
00125   double *ptr = vecY;  
00126   w.forwardTrans( ptr, N );
00127 
00128   std::vector<double> powerVec;
00129   spectrum::spectralCalc( vecY, N, powerVec );
00130 
00131   //
00132   // Print out the power spectrum
00133   //
00134   size_t len = powerVec.size();
00135   for (size_t i = 0; i < len; i++) {
00136     //  printf("%2d, %7.4f\n", i, powerVec[i] );
00137   }
00138 
00139   double d1[N], d2[N];
00140 
00141   spectrum::copyBands( d1, vecY, N, 0, 6 );
00142   spectrum::copyBands( d2, vecY, N, 7, 10 );
00143 
00144   ptr = d1;
00145   w.inverseTrans( ptr, N );
00146 
00147   ptr = d2;
00148   w.inverseTrans( ptr, N );
00149 
00150   //
00151   // Print out the lower half of the spectrum
00152   //
00153   // signalUtil::prCoords( vecX, d1, N );
00154   // signalUtil::prVec( d1, N );
00155 
00156   //
00157   // Print out the upper half of the spectrum
00158   //
00159   // signalUtil::prCoords( vecX, d2, N );
00160   signalUtil::prVec( d2, N );
00161   return 0;
00162 }

Generated at Sun Aug 18 16:56:41 2002 for Wavelet Spectral Analysis by doxygen1.2.8.1 written by Dimitri van Heesch, © 1997-2001