📄 maxcovariance.m.svn-base
字号:
function u = maxCovariance(X, Y)
% A function to compute the maximum covariance vector between matrices X and Y
%
% Usage: u = maxCovariance(X, Y)
% Inputs/Outputs:
% X - an (l x n) matrix whose rows are examples
% Y - an (l x n) matrix with labels as rows
%
% u - the projection vector of maximal covariance
%
% Copyright (C) 2006 Charanpal Dhanjal
% This library is free software; you can redistribute it and/or
% modify it under the terms of the GNU Lesser General Public
% License as published by the Free Software Foundation; either
% version 2.1 of the License, or (at your option) any later version.
%
% This library 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
% Lesser General Public License for more details.
%
% You should have received a copy of the GNU Lesser General Public
% License along with this library; if not, write to the Free Software
% Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301
% USA
if (nargin ~= 2)
fprintf('%s\n', help('maxCovariance'));
error('Incorrect number of inputs - see above usage instructions.');
end
tol = 0.001;
YX = Y'*X;
if(cond(X) > 1e+18)
disp(sprintf('Warning: condition number is pretty big - %g', condX));
end
u = YX(1,:)'/norm(YX(1,:));
% Only loop if dimension greater than 1 (since X'y is just a vector is
% dim(Y)=1 and so u(:, j) = X'yy'XX'y/norm = X'y/norm)
if size(Y, 2) > 1
uold = u + 1;
while norm(u - uold) > tol
uold = u;
tu = (YX'*YX)*uold;
u = tu/norm(tu);
end
end
u = u/norm(u);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -