mtumedian.cpp
Go to the documentation of this file.00001 #include <iostream>
00002 #include <string>
00003 #include <numeric>
00004 #include "statutils.h"
00005 #include "TimeSeriesData.h"
00006
00007 using namespace std;
00008 using namespace gplib;
00009
00010 string version = "$Id: ";
00011
00012 int main(int argc, char *argv[])
00013 {
00014 string infilename;
00015 if (argc == 2)
00016 {
00017 infilename = argv[1];
00018 }
00019 else
00020 {
00021 cout
00022 << "This is mtumedian: Apply a median filter to Phoenix time series"
00023 << endl << endl;
00024 cout << " Usage: mtumedian infilename " << endl;
00025 cout << " Ending '.med' will be automatically assigned to outfilename"
00026 << endl << endl;
00027 cout << " This is Version: " << version << endl << endl;
00028 cout << " Mtu-Filename: ";
00029 cin >> infilename;
00030 }
00031 size_t seglength = 0;
00032 cout << "Segment length for Median: ";
00033 cin >> seglength;
00034
00035 TimeSeriesData Data;
00036
00037 Data.GetData(infilename);
00038 size_t datalength = Data.GetData().GetEx().GetData().size();
00039 for (size_t i = seglength / 2; i < datalength - seglength / 2; ++i)
00040 {
00041 const size_t startindex = i - seglength / 2;
00042 const size_t endindex = i + seglength / 2;
00043 Data.GetData().GetEx().GetData().at(i) = Median(
00044 Data.GetData().GetEx().GetData().begin() + startindex,
00045 Data.GetData().GetEx().GetData().begin() + endindex);
00046 Data.GetData().GetEx().GetData().at(i) = Median(
00047 Data.GetData().GetEy().GetData().begin() + startindex,
00048 Data.GetData().GetEy().GetData().begin() + endindex);
00049 Data.GetData().GetEx().GetData().at(i) = Median(
00050 Data.GetData().GetHx().GetData().begin() + startindex,
00051 Data.GetData().GetHx().GetData().begin() + endindex);
00052 Data.GetData().GetEx().GetData().at(i) = Median(
00053 Data.GetData().GetHy().GetData().begin() + startindex,
00054 Data.GetData().GetHy().GetData().begin() + endindex);
00055 }
00056 Data.WriteAsMtu(infilename + ".med");
00057 }