📄 csppstrtrem.m
字号:
function X = csppstrtrem(Z,a,b)
% CSPPSTRTREM Projection pursuit structure removal.
%
% X = CSPPSTRTREM(Z,ALPHA,BETA) Removes the structure
% in a projection to the plane spanned by ALPHA and BETA.
% Usually, this plane is found using projection pursuit EDA.
%
% The input matrix Z is an n x d matrix of spherized observations,
% one for each row. The output matrix X is the data with the
% structure removed.
%
% See also CSPPEDA, CSPPIND
% W. L. and A. R. Martinez, 9/15/01
% Computational Statistics Toolbox
% just do this 5 times
maxiter=5; % maximum number of iterations allowed
[n,d]=size(Z);
% find the orthonormal matrix needed via Gram-Schmidt
U = eye(d,d);
U(1,:)=a'; % vector for best plane
U(2,:)=b';
for i=3:d
for j = 1:(i-1)
U(i,:)=U(i,:)-(U(j,:)*U(i,:)')*U(j,:);
end
U(i,:)=U(i,:)/sqrt(sum(U(i,:).^2));
end
% Transform data using the matrix U
T = U*Z'; % to match Friedman's treatment. T is d x n
x1=T(1,:); % These should be the 2-d projection that is 'best'
x2=T(2,:);
% Gaussianize the first two rows of T
% set of vector of angles
gam = [0,pi/4, pi/8, 3*pi/8];
for m = 1:maxiter
% gaussianize the data
for i=1:4
% rotate about origin
xp1 = x1*cos(gam(i))+x2*sin(gam(i));
xp2 = x2*cos(gam(i))-x1*sin(gam(i));
% Transform to normality
[m,rnk1]=sort(xp1); % get the ranks
[m,rnk2]=sort(xp2);
arg1 = (rnk1-0.5)/n; % get the arguments
arg2 = (rnk2-0.5)/n;
x1 = norminv(arg1,0,1); % transform to normality
x2 = norminv(arg2,0,1);
end
end
% Set the first two rows of T to the Gaussianized values
T(1,:) = x1;
T(2,:) = x2;
X = (U'*T)';
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -