00001 #include <iostream>
00002 #include <CUniformRNG.h>
00003 #include <numeric>
00004 #include <algorithm>
00005 #include <fstream>
00006 #include "WienerFilter.h"
00007 #include <boost/numeric/ublas/vector.hpp>
00008
00009 namespace ublas=boost::numeric::ublas;
00010 int main()
00011 {
00012 int length = 500;
00013 double dt = 0;
00014 double b = 0;
00015
00016 std::ifstream radial("smp.r"), vertical("smp.z");
00017 std::ofstream outfile("out");
00018 radial >> length >> dt >> b;
00019
00020 vertical >> length >> dt >> b;
00021
00022 gplib::rvec TimeSeries1(length);
00023 gplib::rvec TimeSeries2(length);
00024 gplib::rvec Output(length);
00025 for (int i = 0; i < length; ++i)
00026 {
00027 radial >> TimeSeries2(i);
00028 vertical >> TimeSeries1(i);
00029 }
00030
00031 double mean1=std::accumulate(TimeSeries1.begin(),TimeSeries1.end(),0.)/length;
00032 double mean2=std::accumulate(TimeSeries2.begin(),TimeSeries2.end(),0.)/length;
00033
00034 std::transform(TimeSeries2.begin(),TimeSeries2.end(),TimeSeries2.begin(),bind2nd(std::minus<double>(),mean2));
00035 std::transform(TimeSeries1.begin(),TimeSeries1.end(),TimeSeries1.begin(),bind2nd(std::minus<double>(),mean1));
00036
00037 WienerFilter Wiener(length);
00038 Wiener.SetLambda(1.);
00039 Wiener.AdaptFilter(TimeSeries1,TimeSeries2);
00040 Wiener.CalcOutput(TimeSeries1,Output);
00041 Wiener.PrintWeights(outfile);
00042
00043
00044
00045 }