⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 whitenv.m

📁 一种很好的Fast ICA算法。根据西安理工大学的一遍硕论文而写有很好的效果。
💻 M
字号:
function [newVectors, whiteningMatrix, dewhiteningMatrix] = whitenv ...    (vectors, E, D, s_verbose);%WHITENV - Whitenv vectors.%% [newVectors, whiteningMatrix, dewhiteningMatrix] = ...%                               whitenv(vectors, E, D, verbose);%% Whitens the data (row vectors) and reduces dimension. Returns% the whitened vectors (row vectors), whitening and dewhitening matrices.%% ARGUMENTS%% vectors       Data in row vectors.% E             Eigenvector matrix from function 'pcamat'% D             Diagonal eigenvalue matrix from function 'pcamat'% verbose       Optional. Default is 'on'%% EXAMPLE%       [E, D] = pcamat(vectors);%       [nv, wm, dwm] = whitenv(vectors, E, D);%%% This function is needed by FASTICA and FASTICAG%%   See also PCAMAT% @(#)$Id: whitenv.m,v 1.3 2003/10/12 09:04:43 jarmo Exp $% ========================================================% Default value for 'verbose'if nargin < 4, s_verbose = 'on'; end% Check the optional parameter verbose;switch lower(s_verbose) case 'on'  b_verbose = 1; case 'off'  b_verbose = 0; otherwise  error(sprintf('Illegal value [ %s ] for parameter: ''verbose''\n', s_verbose));end% ========================================================% In some cases, rounding errors in Matlab cause negative% eigenvalues (elements in the diagonal of D). Since it% is difficult to know when this happens, it is difficult% to correct it automatically. Therefore an error is % signalled and the correction is left to the user.if any (diag (D) < 0),  error (sprintf (['[ %d ] negative eigenvalues computed from the' ...		   ' covariance matrix.\nThese are due to rounding' ...		   ' errors in Matlab (the correct eigenvalues are\n' ...		   'probably very small).\nTo correct the situation,' ...		   ' please reduce the number of dimensions in the' ...		   ' data\nby using the ''lastEig'' argument in' ...		   ' function FASTICA, or ''Reduce dim.'' button\nin' ...		   ' the graphical user interface.'], ...		  sum (diag (D) < 0)));end% ========================================================% Calculate the whitening and dewhitening matrices (these handle% dimensionality simultaneously).whiteningMatrix = inv (sqrt (D)) * E';dewhiteningMatrix = E * sqrt (D);% Project to the eigenvectors of the covariance matrix.% Whiten the samples and reduce dimension simultaneously.if b_verbose, fprintf ('Whitening...\n'); endnewVectors =  whiteningMatrix * vectors;% ========================================================% Just some security...if ~isreal(newVectors)  error ('Whitened vectors have imaginary values.');end% Print some information to userif b_verbose  fprintf ('Check: covariance differs from identity by [ %g ].\n', ...    max (max (abs (cov (newVectors', 1) - eye (size (newVectors, 1))))));end

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -