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
00020
00021
00022
00023
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
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
00053 }