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
00022 MTData.MTData = &MttData;
00023 const int filterlength = 111;
00024
00025 const double mu = -1;
00026 const int ntimeseries = 2;
00027 const int shift = 0;
00028
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
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 = ε
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 }