simplelp.cpp

Go to the documentation of this file.
00001 #include <iostream>
00002 #include <fstream>
00003 #include <algorithm>
00004 #include <iterator>
00005 #include "WienerInterpolator.h"
00006 #include "UniformRNG.h"
00007 #include <boost/numeric/ublas/vector.hpp>
00008 #include <boost/numeric/ublas/vector_proxy.hpp>
00009 using namespace boost::numeric::ublas;
00010 int main()
00011 {
00012         std::string filename;
00013         std::ifstream infile;
00014         UniformRNG Random;
00015         /*std::cout << "Infile name: ";
00016         std::cin >> filename;
00017         std::vector<double> read;
00018         infile.open(filename.c_str());
00019         std::copy(std::istream_iterator<double>(infile),std::istream_iterator<double>(),std::back_inserter(read));*/
00020         
00021         
00022         const int datasize = 500;
00023         const int filterlength = 20;
00024         const int inputlength = 100;
00025         gplib::rvec Data(datasize);
00026         for (int i = 0; i < datasize; ++i)
00027                 Data(i) = sin(static_cast<double>(i)/0.9)+cos(static_cast<double>(i)/2.7)+ (0.5 - Random.GetNumber())*0.1;
00028         //copy(read.begin(),read.end(),Data.begin());
00029         WienerInterpolator Wiener(filterlength);
00030         gplib::rvec Input(inputlength);
00031         gplib::rvec Prediction(datasize);
00032         for (int i = 0; i < inputlength; ++i)
00033         {
00034                 Input(i) = Data(i);
00035                 Prediction(i) = Data(i);
00036         }
00037         Wiener.AdaptFilter(Input,Input);
00038         
00039         for (int i = inputlength-filterlength; i < datasize - filterlength; ++i)
00040         {
00041                 vector_range<vector<double> > vr(Prediction, range(i,i+filterlength));
00042                 Prediction(i+filterlength) = inner_prod(Wiener.GetWeights(),vr);
00043         }
00044         std::ofstream outfile("out");
00045         for (int i = 0; i < datasize; ++i)
00046            outfile << i << " " << Data(i) << " " << Prediction(i) <<  std::endl;
00047          //copy(Wiener.GetWeights().begin(),Wiener.GetWeights().end(),std::ostream_iterator<double>(std::cout,"\n")); 
00048 }

Generated on Fri Jul 4 15:30:21 2008 for GPLIB++ by  doxygen 1.5.5