nippls.m
来自「有监督自组织映射-偏最小二乘算法(A supervised self-organ」· M 代码 · 共 39 行
M
39 行
function [B,P] = NIPPLS(X, Y, LatVar)
[Nobj, NvarX] = size(X);
[Dummy, NvarY] = size(Y);
if NvarX < LatVar
disp('too much latent variables selected');
return;
end
% Initialise zero valued matrices
P = zeros(NvarX,LatVar); %
Q = zeros(NvarY,LatVar);
W = zeros(NvarX,LatVar);
T = zeros(Nobj,LatVar);
U = zeros(Nobj,LatVar);
B = zeros(1,LatVar);
% Scan PLS model for all latent variables
for lv = 1:LatVar
[PN,QN,WN,TN,UN] = Nipals(X,Y);
B(1,lv) = UN'*TN/(TN'*TN);
X = X - TN*PN'; % deflate X matrix
Y = Y - B(1,lv)*TN*QN'; % deflate Y matrix
T(:,lv) = TN(:,1); % replace loadings, scores and weights
U(:,lv) = UN(:,1);
P(:,lv) = PN(:,1);
W(:,lv) = WN(:,1);
Q(:,lv) = QN(:,1);
end
BCoeff=TransformBack(B, W, P, Q, LatVar);
if NvarY > 1
for lv = 2:LatVar
j = (lv-1)*NvarY+1;
k = j-NvarY;
BCoeff(j:lv*NvarY,:) = BCoeff(j:lv*NvarY,:) + BCoeff(k:(lv-1)*NvarY,:);
end
else
BCoeff = cumsum(BCoeff);
end
B=BCoeff(1+(LatVar-1)*NvarY:LatVar*NvarY,:)';
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?