fastica.cpp File Reference

Implementation of FastICA (Independent Component Analysis) for IT++. More...

`#include <itpp/signal/fastica.h>`
`#include <itpp/signal/sigfun.h>`
`#include <itpp/signal/resampling.h>`
`#include <itpp/base/algebra/eigen.h>`
`#include <itpp/base/algebra/svd.h>`
`#include <itpp/base/math/trig_hyp.h>`
`#include <itpp/base/matfunc.h>`
`#include <itpp/base/random.h>`
`#include <itpp/base/sort.h>`
`#include <itpp/base/specmat.h>`
`#include <itpp/base/svec.h>`
`#include <itpp/base/math/min_max.h>`
`#include <itpp/stat/misc_stat.h>`

Go to the source code of this file.

## Namespaces

namespace | itpp
| itpp namespace

## Functions

static void | selcol (const mat oldMatrix, const vec maskVector, mat &newMatrix)
| Local functions for FastICA.
static int | pcamat (const mat vectors, const int numOfIC, int firstEig, int lastEig, mat &Es, vec &Ds)
| Local functions for FastICA.
static void | remmean (mat inVectors, mat &outVectors, vec &meanValue)
| Local functions for FastICA.
static void | whitenv (const mat vectors, const mat E, const mat D, mat &newVectors, mat &whiteningMatrix, mat &dewhiteningMatrix)
| Local functions for FastICA.
static mat | orth (const mat A)
| Local functions for FastICA.
static mat | mpower (const mat A, const double y)
| Local functions for FastICA.
static ivec | getSamples (const int max, const double percentage)
| Local functions for FastICA.
static vec | sumcol (const mat A)
| Local functions for FastICA.
static bool | fpica (const mat X, const mat whiteningMatrix, const mat dewhiteningMatrix, const int approach, const int numOfIC, const int g, const int finetune, const double a1, const double a2, double myy, const int stabilization, const double epsilon, const int maxNumIterations, const int maxFinetune, const int initState, mat guess, double sampleSize, mat &A, mat &W)
| Local functions for FastICA.

## Detailed Description

Implementation of FastICA (Independent Component Analysis) for IT++.

Author
  Francois Cayre and Teddy Furon

Copyright (C) 1995-2010 (see AUTHORS file for a list of contributors)

This file is part of IT++ - a C++ library of mathematical, signal processing, speech processing, and communications classes and functions.

IT++ is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

IT++ is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with IT++. If not, see http://www.gnu.org/licenses/.

This is IT++ implementation of the original Matlab package FastICA.

This code is Copyright (C) 2004 by: Francois CAYRE and Teddy FURON TEMICS Project INRIA/Rennes (IRISA) Campus Universitaire de Beaulieu 35042 RENNES cedex FRANCE

Email : first.nosp@m.name.nosp@m..last.nosp@m.name.nosp@m.@iris.nosp@m.a.fr

Matlab package is Copyright (C) 1998 by: Jarmo HURRI, Hugo GAVERT, Jaakko SARELA and Aapo HYVARINEN Laboratory of Information and Computer Science Helsinki University of Technology *

URL : http://www.cis.hut.fi/projects/ica/fastica/about.shtml

If you use results given by this FastICA software in an article for a scientific journal, conference proceedings or similar, please include the following original reference in the bibliography :

A. Hyvarinen, Fast and Robust Fixed-Point Algorithms for Independent Component Analysis, IEEE Transactions on Neural Networks 10(3):626-634, 1999

Differences with the original Matlab implementation:

- no GUI
- return something even in the case of a convergence problem
- optimization of SVD decomposition (performed 2 times in Matlab, only 1 time in IT++)
- default approach is SYMM with non-linearity POW3

Definition in file fastica.cpp.

## Function Documentation

## selcol()

void selcol | ( | const mat | oldMatrix,
|  | const vec | maskVector,
|  | mat & | newMatrix )

static

Local functions for FastICA.

Definition at line 237 of file fastica.cpp.

References itpp::size(), and itpp::zeros().

Referenced by pcamat().

## pcamat()

int pcamat | ( | const mat | vectors,
|  | const int | numOfIC,
|  | int | firstEig,
|  | int | lastEig,
|  | mat & | Es,
|  | vec & | Ds )

static

Local functions for FastICA.

Definition at line 262 of file fastica.cpp.

References itpp::cov(), itpp::eig_sym(), FICA_TOL, selcol(), itpp::size(), itpp::transpose(), and itpp::zeros().

Referenced by itpp::Fast_ICA::separate().

## remmean()

void remmean | ( | mat | inVectors,
|  | mat & | outVectors,
|  | vec & | meanValue )

static

Local functions for FastICA.

Definition at line 335 of file fastica.cpp.

References itpp::mean(), and itpp::zeros().

Referenced by itpp::Fast_ICA::separate().

## whitenv()

void whitenv | ( | const mat | vectors,
|  | const mat | E,
|  | const mat | D,
|  | mat & | newVectors,
|  | mat & | whiteningMatrix,
|  | mat & | dewhiteningMatrix )

static

Local functions for FastICA.

Definition at line 351 of file fastica.cpp.

References itpp::zeros().

Referenced by itpp::Fast_ICA::separate().

## orth()

mat orth | ( | const mat | A | ) |

static

Local functions for FastICA.

Definition at line 368 of file fastica.cpp.

References itpp::eps, itpp::max(), itpp::size(), and itpp::svd().

Referenced by fpica().

## mpower()

mat mpower | ( | const mat | A,
|  | const double | y )

static

Local functions for FastICA.

Definition at line 397 of file fastica.cpp.

References itpp::diag(), itpp::eig_sym(), itpp::norm(), itpp::pow(), itpp::transpose(), and itpp::zeros().

Referenced by fpica().

## getSamples()

ivec getSamples | ( | const int | max,
|  | const double | percentage )

static

Local functions for FastICA.

Definition at line 417 of file fastica.cpp.

References itpp::full(), itpp::max(), itpp::randu(), and itpp::to_ivec().

Referenced by fpica().

## sumcol()

vec sumcol | ( | const mat | A | ) |

static

Local functions for FastICA.

Definition at line 433 of file fastica.cpp.

References itpp::sum(), and itpp::zeros().

Referenced by fpica().

## fpica()

bool fpica | ( | const mat | X,
|  | const mat | whiteningMatrix,
|  | const mat | dewhiteningMatrix,
|  | const int | approach,
|  | const int | numOfIC,
|  | const int | g,
|  | const int | finetune,
|  | const double | a1,
|  | const double | a2,
|  | double | myy,
|  | const int | stabilization,
|  | const double | epsilon,
|  | const int | maxNumIterations,
|  | const int | maxFinetune,
|  | const int | initState,
|  | mat | guess,
|  | double | sampleSize,
|  | mat & | A,
|  | mat & | W )

static

Local functions for FastICA.

Definition at line 444 of file fastica.cpp.

References itpp::abs(), itpp::concat_horizontal(), itpp::diag(), itpp::dot(), itpp::elem_mult(), itpp::exp(), FICA_APPROACH_SYMM, FICA_INIT_GUESS, FICA_NONLIN_GAUSS, FICA_NONLIN_POW3, FICA_NONLIN_SKEW, FICA_NONLIN_TANH, getSamples(), itpp::min(), itpp::mod(), mpower(), itpp::norm(), orth(), itpp::pow(), itpp::randu(), itpp::reshape(), itpp::round(), itpp::sum(), sumcol(), itpp::tanh(), itpp::transpose(), and itpp::zeros().

Referenced by itpp::Fast_ICA::separate().

Generated on for IT++ by Doxygen 1.15.0