00001 #include <fstream>
00002 #include <iostream>
00003 #include <vector>
00004 #include <string>
00005 #include <algorithm>
00006 #include "LMSCanceller.h"
00007 #include "RLSCanceller.h"
00008 #include "ApplyFilter.h"
00009 #include "UniformRNG.h"
00010 #include "TimeSeriesComponent.h"
00011 #include "VecMat.h"
00012 namespace ublas = boost::numeric::ublas;
00013 using namespace std;
00014
00015
00016 int main()
00017 {
00018
00019
00020 const int filterlength = 2;
00021 const int inputsize = 2;
00022 const int outputsize = 1;
00023 const int maxiter = 1;
00024 const double mu = 0.2;
00025 LMSCanceller Filter(filterlength);
00026 Filter.SetMu(mu);
00027 UniformRNG Random;
00028 ApplyFilter Canceller(Filter);
00029
00030 gplib::rvec currentinput(inputsize), currdesired(outputsize), currout(outputsize);
00031 TimeSeriesComponent Input1, Input2, Desired;
00032 Input1.GetData().assign(3*inputsize,0.0);
00033 Input2.GetData().assign(3*inputsize,0.0);
00034 Desired.GetData().assign(3*inputsize,0.0);
00035 Canceller.AddInputChannel(Input1);
00036 Canceller.AddInputChannel(Input2);
00037 Canceller.AddReferenceChannel(Desired);
00038 for (int iter = 0; iter < maxiter; ++iter)
00039 {
00040 for (int i = 0; i < 3*inputsize; ++i)
00041 {
00042 Input1.GetData().at(i) = Random.GetNumber();
00043 Input2.GetData().at(i) = Random.GetNumber();
00044 Desired.GetData().at(i) = Random.GetNumber();
00045 }
00046 Canceller.FilterData();
00047 cout << "Input1: ";
00048 copy(Input1.GetData().begin(),Input1.GetData().end(),
00049 ostream_iterator<double>(cout," "));
00050 cout << endl;
00051 cout << "Input2: ";
00052 copy(Input2.GetData().begin(),Input2.GetData().end(),
00053 ostream_iterator<double>(cout," "));
00054 cout << endl;
00055 cout << "Output: ";
00056 copy(Canceller.GetOutChannels().front()->GetData().begin(),Canceller.GetOutChannels().front()->GetData().end(),
00057 ostream_iterator<double>(cout," "));
00058 cout << endl;
00059 cout << "Desired: ";
00060 copy(Desired.GetData().begin(),Desired.GetData().end(),
00061 ostream_iterator<double>(cout," "));
00062 cout << endl;
00063 cout << "Eps: ";
00064 copy(Canceller.GetEpsValues().front().begin(),Canceller.GetEpsValues().front().end(),
00065 ostream_iterator<double>(cout," "));
00066 cout << endl << endl;
00067 }
00068 }