testpca.cpp

Go to the documentation of this file.
00001 #include "PCA.h"
00002 #include "statutils.h"
00003 #include "UniformRNG.h"
00004 #include "VecMat.h"
00005 #include <iostream>
00006 #include <fstream>
00007 #include <vector>
00008 #include <itpp/base/fastica.h>
00009 #include <itpp/base/mat.h>
00010 #include <itpp/base/sigfun.h>
00011 
00012 int main()
00013 {
00014         UniformRNG Random;
00015                 std::ifstream infile ("in.pca");
00016         std::vector<double> invector;
00017         copy(std::istream_iterator<double>(infile),std::istream_iterator<double>(),back_inserter(invector));
00018         const size_t nobs = invector.size()/2;
00019         const size_t nchan = 2;
00020         rmat input(nchan,nobs);
00021         cmat evec(nchan,nchan);
00022         cvec eval(nchan);
00023         itpp::mat ittpInput(nchan,nobs);
00024         
00025         for (int i = 0; i < invector.size()/2; i+=2)
00026         {
00027                 input(0,i/2) = invector.at(i);
00028                 input(1,i/2) = invector.at(i+1);
00029         }
00030     for (size_t i = 0; i < input.size2(); ++i)
00031         for (size_t j = 0; j < input.size1(); ++j)
00032         {
00033                 //input(j,i) = Random.GetNumber();
00034                 ittpInput(j,i) = input(j,i);
00035         }
00036    
00037         itpp::Fast_ICA fastica(ittpInput);
00038         //fastica.set_nrof_independent_components(nchan);
00039         //fastica.set_non_linearity(FICA_NONLIN_TANH);
00040         //fastica.set_approach(FICA_APPROACH_DEFL);
00041         fastica.separate();
00042         PCA(input,evec,eval);
00043         std::cout << "Input: " << input << std::endl;
00044         std::cout << "pca evec: " << evec << std::endl;
00045         std::cout << "pca eval: " << eval << std::endl;
00046         std::cout << "pca WhM: " << WhiteMat(evec, eval) << std::endl;
00047         std::cout << "pca DeWhM: " << DeWhiteMat(evec, eval) << std::endl;
00048         std::cout << "Itpp PEV: " << fastica.get_principal_eigenvectors() << std::endl;
00049         std::cout << "Itpp WhM: " << fastica.get_whitening_matrix() << std::endl;
00050         
00051         
00052 }

Generated on Mon Sep 15 12:54:34 2008 for GPLIB++ by  doxygen 1.5.5