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
00034 ittpInput(j,i) = input(j,i);
00035 }
00036
00037 itpp::Fast_ICA fastica(ittpInput);
00038
00039
00040
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 }