mticatest.cpp

Go to the documentation of this file.
00001 #include <iostream>
00002 #include <itpp/base/fastica.h>
00003 #include <itpp/base/mat.h>
00004 #include <itpp/base/sigfun.h>
00005 #include <string>
00006 #include <fstream>
00007 #include "CUniformRNG.h"
00008 #include "TimeSeriesData.h"
00009 #include "statutils.h"
00010 #include <itpp/base/stat.h>
00011 using namespace std;
00012 
00013 void WriteToFile(const itpp::Vec<double> &in,const  itpp::Vec<double> &out,const string &base)
00014 {
00015         ofstream ints((base+".in").c_str());
00016         //ofstream inspec((base+".spec.in").c_str());
00017         ofstream outts((base+".out").c_str());
00018         //ofstream outspec((base+".spec.out").c_str());
00019         const int size = in.length();
00020     //int speclength = 2;
00021     //while (speclength < size)
00022     //  speclength *= 2;
00023         //itpp::Vec<double> insp = itpp::spectrum(in,speclength,0);
00024         //itpp::Vec<double> outsp = itpp::spectrum(out,speclength,0);
00025         for (int i = 0; i < size; ++i)
00026         {
00027                 ints << in(i) <<  endl;
00028                 //inspec << insp(i) <<  endl;
00029                 outts << out(i) <<  endl;
00030                 //outspec << outsp(i) <<  endl;
00031         }
00032 }
00033 
00034 
00035 int main()
00036 {
00037         string datafilename, reffilename;
00038         TimeSeriesData MTData, RefData;    
00039             
00040         cout << "Data filename: ";
00041         cin >> datafilename;
00042         MTData.GetData(datafilename);
00043         
00044         
00045         cout << "Reference filename: ";
00046         cin >> reffilename;
00047         RefData.GetData(reffilename);
00048         
00049         const size_t tslength = MTData.GetData().GetEx().GetData().size();
00050         
00051         SubMean(MTData.GetData().GetHx().GetData().begin(),MTData.GetData().GetHx().GetData().end());
00052         SubMean(MTData.GetData().GetHy().GetData().begin(),MTData.GetData().GetHy().GetData().end());
00053         SubMean(RefData.GetData().GetHx().GetData().begin(),RefData.GetData().GetHx().GetData().end());
00054         SubMean(RefData.GetData().GetHy().GetData().begin(),RefData.GetData().GetHy().GetData().end());
00055         
00056     const int nchannels =4;
00057         itpp::mat Input(nchannels,tslength);
00058     for (size_t i = 0; i < tslength; ++i)
00059     {
00060         Input(0,i) = MTData.GetData().GetHx().GetData().at(i);
00061         Input(1,i) = MTData.GetData().GetHy().GetData().at(i);
00062         Input(2,i) = RefData.GetData().GetHx().GetData().at(i);
00063         Input(3,i) = RefData.GetData().GetHy().GetData().at(i);
00064     }
00065     for (int i = 0; i < nchannels; ++i)
00066          cout << "Kurt " << i << ": "<< itpp::kurtosis(Input.get_row(i)) << endl;
00067         itpp::Fast_ICA fastica(Input);
00068         fastica.set_stabilization(true);
00069         fastica.set_nrof_independent_components(nchannels);
00070         fastica.set_non_linearity(FICA_NONLIN_GAUSS);
00071         fastica.set_approach(FICA_APPROACH_DEFL);
00072         fastica.separate();
00073         itpp::mat Output = fastica.get_independent_components();
00074         itpp::mat White = fastica.get_white_sig();
00075         WriteToFile(Input.get_row(0),Output.get_row(0),datafilename+".hx");
00076         WriteToFile(Input.get_row(1),Output.get_row(1),datafilename+".hy");
00077         WriteToFile(Input.get_row(2),Output.get_row(2),reffilename+".hx");
00078         WriteToFile(Input.get_row(3),Output.get_row(3),reffilename+".hy");
00079         cout << "Mix Mat: " << endl << fastica.get_mixing_matrix() << endl;
00080         cout << "Whit Mat: " << endl << fastica.get_whitening_matrix() << endl;
00081 }

Generated on Tue Aug 4 16:04:06 2009 for GPLIB++ by  doxygen 1.5.8