lmsprocessing.cpp

Go to the documentation of this file.
00001 #include <fstream>
00002 #include <iostream>
00003 #include <vector>
00004 #include <string>
00005 #include <algorithm>
00006 #include "CLMSCanceller.h"
00007 #include "CTimeSeriesData.h"
00008 #include "CStackedSpectrum.h"
00009 #include "CMTStation.h"
00010 #include "CMttData.h"
00011 
00012 using namespace std;
00013 
00014 int main()
00015 {
00016         CLMSCanceller Canceller;
00017         CTimeSeriesData TsData;
00018         StackedSpectrum WeightSpectrum;
00019         CMTStation MTData;
00020         CMttData MttData;
00021         //CMTStation Output;
00022         MTData.MTData = &MttData;
00023         const int filterlength = 111;
00024         //const double mu = 1e-17;
00025         const double mu = -1;
00026         const int ntimeseries = 2;
00027         const int shift = 0; // filterlength/2;
00028         //const double freqstep = 150/filterlength;
00029         double freqstep;
00030         int i,j;
00031         string tsfilename;
00032         ifstream noisefile,tsfile;
00033         ofstream outfile, weightfile,epsfile;
00034         double temp;
00035         vector<double> noise, epsilon, output,ts;
00036         
00037         cout << "Time Series Filename: ";
00038         cin >> tsfilename;
00039         TsData.GetData(tsfilename);
00040         freqstep = TsData.Data->samplerate/filterlength;
00041         Canceller.filterlength = filterlength;
00042         Canceller.mu.assign(ntimeseries,-1);
00043         //Canceller.input = &TsData.Data->Ex.data;
00044         Canceller.FilterOutput = &(TsData.Data->Ex.data);
00045         Canceller.Input.push_back(&TsData.Data->Hx.data);
00046         Canceller.Input.push_back(&TsData.Data->Hy.data);
00047         Canceller.Epsilon = &epsilon;
00048         Canceller.Desired = &output;
00049         Canceller.FilterData(shift);
00050         
00051         cout << "Mu: " ;
00052         for (i=0 ; i < ntimeseries; ++i) 
00053                 cout << Canceller.mu.at(i) << " ";
00054         cout <<endl;
00055         epsfile.open((tsfilename+".eps").c_str());
00056         outfile.open( (tsfilename+".clean").c_str());
00057         for (i = 0; i < output.size(); ++i)
00058         {
00059                 outfile << output.at(i) << endl;
00060                 epsfile << Canceller.Epsilon->at(i) << endl;
00061         }
00062         outfile.close();
00063         epsfile.close();
00064         
00065         WeightSpectrum.TimeSeries.assign(filterlength,0);
00066         copy(Canceller.Weights.begin()+filterlength,Canceller.Weights.end(),WeightSpectrum.TimeSeries.begin());
00067         WeightSpectrum.CalcSpectrum(filterlength);
00068         
00069         weightfile.open((tsfilename+".weights").c_str());
00070         for (i = 0; i < WeightSpectrum.Spectrum.size(); ++i)
00071                 weightfile << i << " " << abs(WeightSpectrum.Spectrum.at(i)) << " " << arg(WeightSpectrum.Spectrum.at(i)) << endl;
00072         weightfile.close();
00073         
00074         MTData.MTData->AssignAll(filterlength/2);
00075         cout << "Assigning Tensor values. " << endl << flush;
00076         copy(WeightSpectrum.Spectrum.begin(),WeightSpectrum.Spectrum.begin()+filterlength/2,MTData.MTData->DataXY.Z.begin());
00077         for (int i = 0; i < filterlength/2; ++i)
00078                 MTData.MTData->frequency.at(i) = i* freqstep;
00079         MTData.MTData->frequency.at(0) = 0.00000001;
00080         cout << "Writing Data. " << endl << flush;
00081         MTData.WriteAsMtt(tsfilename);
00082 }

Generated on Fri Jul 4 15:30:20 2008 for GPLIB++ by  doxygen 1.5.5