00001 #include <iostream>
00002 #include "CTsSpectrum.h"
00003 #include "CMtuFormat.h"
00004 #include "CMttData.h"
00005 #include "types.h"
00006 using namespace std;
00007 int main()
00008 {
00009 CMtuFormat OriginalData;
00010 CMtuFormat NewData;
00011 CMtuFormat DiffData;
00012 CMttData ZInput;
00013 CTsSpectrum ExSpectrum;
00014 CTsSpectrum EySpectrum;
00015 CTsSpectrum HxSpectrum;
00016 CTsSpectrum HySpectrum;
00017 string tsfilename;
00018 string zfilename;
00019 int seglength = 0;
00020 int nsegs = 0;
00021 double exmean, eymean, hxmean, hymean;
00022 double freqstep;
00023
00024
00025 cout << "Time Series File: ";
00026 cin >> tsfilename;
00027 OriginalData.GetData(tsfilename.c_str());
00028 NewData.GetData(tsfilename.c_str());
00029 DiffData.GetData(tsfilename.c_str());
00030
00031 NewData.Ex.data.clear();
00032 NewData.Ey.data.clear();
00033 DiffData.Ex.data.clear();
00034 DiffData.Ey.data.clear();
00035
00036
00037 cout << "Impedance File: ";
00038 cin >> zfilename;
00039 ZInput.GetData(zfilename.c_str());
00040 seglength = ZInput.frequency.size()*2;
00041 cout << "Seglength : " << seglength << endl;
00042
00043 ExSpectrum.TsData = new ttsdata;
00044 EySpectrum.TsData = new ttsdata;
00045 HxSpectrum.TsData = &OriginalData.Hx.data;
00046 HySpectrum.TsData = &OriginalData.Hy.data;
00047
00048 ExSpectrum.FreqData = new tcompdata;
00049 EySpectrum.FreqData = new tcompdata;
00050 HxSpectrum.FreqData = new tcompdata;
00051 HySpectrum.FreqData = new tcompdata;
00052
00053 ExSpectrum.MultiCalc = false;
00054 EySpectrum.MultiCalc = false;
00055 HxSpectrum.MultiCalc = false;
00056 HySpectrum.MultiCalc = false;
00057
00058
00059 nsegs = HxSpectrum.TsData->size()/seglength-1;
00060 freqstep = 1./(seglength * OriginalData.samplerate);
00061
00062 for (int j = 0; j < nsegs; ++j)
00063 {
00064 exmean = 0;
00065 eymean = 0;
00066 hxmean = 0;
00067 hymean = 0;
00068
00069
00070
00071
00072
00073
00074
00075
00076
00077
00078
00079
00080
00081
00082
00083
00084
00085
00086
00087
00088 HxSpectrum.CalcSpectrum(j*seglength,(j+1)*seglength);
00089 HySpectrum.CalcSpectrum(j*seglength,(j+1)*seglength);
00090 ExSpectrum.FreqData->assign(seglength/2,0);
00091 EySpectrum.FreqData->assign(seglength/2,0);
00092 ExSpectrum.TsData->assign(seglength,0);
00093 EySpectrum.TsData->assign(seglength,0);
00094 for (int k = 0; k < HxSpectrum.FreqData->size()-1; ++k)
00095 {
00096 ExSpectrum.FreqData->at(k) = HxSpectrum.FreqData->at(k) * ZInput.DataXX.Z.at(k)
00097 + HySpectrum.FreqData->at(k) * ZInput.DataXY.Z.at(k);
00098 EySpectrum.FreqData->at(k) = HxSpectrum.FreqData->at(k) * ZInput.DataYX.Z.at(k)
00099 + HySpectrum.FreqData->at(k) * ZInput.DataYY.Z.at(k);
00100 }
00101 ExSpectrum.CalcTimeSeries();
00102 EySpectrum.CalcTimeSeries();
00103 for (int k = 0; k < ExSpectrum.TsData->size(); ++k)
00104 {
00105 NewData.Ex.data.push_back(ExSpectrum.TsData->at(k));
00106 NewData.Ey.data.push_back(EySpectrum.TsData->at(k));
00107
00108 }
00109 }
00110 NewData.Ex.data.insert(NewData.Ex.data.end(),OriginalData.Hx.data.size() - NewData.Ex.data.size(),0);
00111 NewData.Ey.data.insert(NewData.Ey.data.end(),OriginalData.Hy.data.size() - NewData.Ey.data.size(),0);
00112 for (int k = 0; k < NewData.Ex.data.size(); ++k)
00113 {
00114 DiffData.Ex.data.push_back(NewData.Ex.data.at(k)-OriginalData.Ex.data.at(k));
00115 DiffData.Ey.data.push_back(NewData.Ey.data.at(k)-OriginalData.Ey.data.at(k));
00116 }
00117 NewData.WriteData("out.ts");
00118 DiffData.WriteData("diff.ts");
00119 }