


brede_ica_nbs_est - Non-symmetric Bell & Sejnowski ICA
function [S, A] = brede_ica_nbs_est(X, varargin)
Input: X Data matrix, objects x sensors
Property: Components [ {20} | positive integer ]
Winit [ {eye} | rand | randn | a matrix with
the size of A ] Initialization of the
inverse mixing matrix (the demixing
matrix)
Output: S Source matrix, objects x sources
A Mixing matrix, sources x sensors
Independent component analysis with non-symmetric Bell and
Sejnowski, ie, non-square mixing matrix. Optimization of the
mixing matrix is done by conjugate gradient optimization. The
estimated mixing matrix is square and is applied on the right
side of the source matrix:
X = S * A
An initial singular value decomposition is performed and the
ordinary ICA algorithm is performed in the subspace.
The optimization is performed with conjugate gradient
implemented in brede_opt_cg via the brede_ica_bs_est
function.
The property 'Components' governs how many sources are
found. It will be the minimum of the rank of X and the number
given by 'Components'.
Example:
Strue = randn(500, 2).^3;
Atrue = [ 3 4 -8 ; 1 4 2 ];
X = Strue * Atrue;
[S, A] = brede_ica_nbs_est(X, 'components', 2);
figure, plot(X(:,1), X(:,2), '.', ...
5*[-A(1,1) A(1,1)], 5*[-A(1,2) A(1,2)], 'r-', ...
5*[-A(2,1) A(2,1)], 5*[-A(2,2) A(2,2)], 'g-')
See also BREDE, BREDE_ICA_BS_EST, BREDE_SVD_EST, BREDE_OPT_CG.
$Id: brede_ica_nbs_est.m,v 1.5 2004/09/22 15:04:53 fnielsen Exp $