00001
00062 #ifndef FASTICA_H
00063 #define FASTICA_H
00064
00065 #include <itpp/base/mat.h>
00066
00067
00069 #define FICA_APPROACH_DEFL 2
00071 #define FICA_APPROACH_SYMM 1
00072
00074 #define FICA_NONLIN_POW3 10
00076 #define FICA_NONLIN_TANH 20
00078 #define FICA_NONLIN_GAUSS 30
00080 #define FICA_NONLIN_SKEW 40
00081
00083 #define FICA_INIT_RAND 0
00085 #define FICA_INIT_GUESS 1
00086
00088 #define FICA_TOL 1e-9
00089
00090 namespace itpp
00091 {
00092
00097
00098
00118 class Fast_ICA
00119 {
00120
00121 public:
00122
00130 Fast_ICA(mat ma_mixed_sig);
00131
00137 void separate(void);
00138
00146 void set_approach(int in_approach);
00147
00155 void set_nrof_independent_components(int in_nrIC);
00156
00164 void set_non_linearity(int in_g);
00165
00173 void set_fine_tune(bool in_finetune);
00174
00182 void set_a1(double fl_a1);
00183
00191 void set_a2(double fl_a2);
00192
00200 void set_mu(double fl_mu);
00201
00209 void set_epsilon(double fl_epsilon);
00210
00218 void set_sample_size(double fl_sampleSize);
00219
00227 void set_stabilization(bool in_stabilization);
00228
00236 void set_max_num_iterations(int in_maxNumIterations);
00237
00245 void set_max_fine_tune(int in_maxFineTune);
00246
00254 void set_first_eig(int in_firstEig);
00255
00263 void set_last_eig(int in_lastEig);
00264
00272 void set_pca_only(bool in_PCAonly);
00273
00281 void set_init_guess(mat ma_initGuess);
00282
00283
00291 mat get_mixing_matrix();
00292
00300 mat get_separating_matrix();
00301
00309 mat get_independent_components();
00310
00318 int get_nrof_independent_components();
00319
00327 mat get_principal_eigenvectors();
00328
00336 mat get_whitening_matrix();
00337
00345 mat get_dewhitening_matrix();
00346
00354 mat get_white_sig();
00355
00356 private:
00357
00358 int approach, numOfIC, g, initState;
00359 bool finetune, stabilization, PCAonly;
00360 double a1, a2, mu, epsilon, sampleSize;
00361 int maxNumIterations, maxFineTune;
00362
00363 int firstEig, lastEig;
00364
00365 mat initGuess;
00366
00367 mat mixedSig, A, W, icasig;
00368
00369 mat whiteningMatrix;
00370 mat dewhiteningMatrix;
00371 mat whitesig;
00372
00373 mat E, VecPr;
00374 vec D;
00375
00376 };
00377
00378 }
00379
00380
00381 #endif // #ifndef FASTICA_H