testwiener.cpp

Go to the documentation of this file.
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         //std::cout << "Length: " << length << " dt: " << dt << " b: " << b << std::endl;
00020         vertical >> length >> dt >> b;
00021         //std::cout << "Length: " << length << " dt: " << dt << " b: " << b << std::endl;
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         //std::cout << "lenght1: " << TimeSeries1.size() << " length2: " << TimeSeries2.size() << std::endl; 
00031         double mean1=std::accumulate(TimeSeries1.begin(),TimeSeries1.end(),0.)/length;
00032         double mean2=std::accumulate(TimeSeries2.begin(),TimeSeries2.end(),0.)/length;
00033         //std::cout << "Mean1: " << mean1 << " Mean2: " << mean2 << std::endl;
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         /*for (int i = 0; i < Output.size(); ++i)
00043             std::cout << Output(i) << " " << std::endl;
00044         std::cout << std::endl;*/
00045 }

Generated on Mon Sep 15 12:54:34 2008 for GPLIB++ by  doxygen 1.5.5