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 
00010 
00011 using namespace boost::numeric::ublas;
00012 using namespace gplib;
00013 
00014 int main()
00015   {
00016     std::string filename;
00017     std::ifstream infile;
00018     UniformRNG Random;
00019     /*std::cout << "Infile name: ";
00020      std::cin >> filename;
00021      std::vector<double> read;
00022      infile.open(filename.c_str());
00023      std::copy(std::istream_iterator<double>(infile),std::istream_iterator<double>(),std::back_inserter(read));*/
00024 
00025     const int datasize = 500;
00026     const int filterlength = 20;
00027     const int inputlength = 100;
00028     gplib::rvec Data(datasize);
00029     for (int i = 0; i < datasize; ++i)
00030       Data(i) = sin(static_cast<double> (i) / 0.9) + cos(
00031           static_cast<double> (i) / 2.7) + (0.5 - Random.GetNumber()) * 0.1;
00032     //copy(read.begin(),read.end(),Data.begin());
00033     WienerInterpolator Wiener(filterlength);
00034     gplib::rvec Input(inputlength);
00035     gplib::rvec Prediction(datasize);
00036     for (int i = 0; i < inputlength; ++i)
00037       {
00038         Input(i) = Data(i);
00039         Prediction(i) = Data(i);
00040       }
00041     Wiener.AdaptFilter(Input, Input);
00042 
00043     for (int i = inputlength - filterlength; i < datasize - filterlength; ++i)
00044       {
00045         vector_range<vector<double> >
00046             vr(Prediction, range(i, i + filterlength));
00047         Prediction(i + filterlength) = inner_prod(Wiener.GetWeights(), vr);
00048       }
00049     std::ofstream outfile("out");
00050     for (int i = 0; i < datasize; ++i)
00051       outfile << i << " " << Data(i) << " " << Prediction(i) << std::endl;
00052     //copy(Wiener.GetWeights().begin(),Wiener.GetWeights().end(),std::ostream_iterator<double>(std::cout,"\n"));
00053   }

Generated on Tue May 4 16:52:15 2010 for GPLIB++ by  doxygen 1.5.8