nipals.m
来自「有监督自组织映射-偏最小二乘算法(A supervised self-organ」· M 代码 · 共 38 行
M
38 行
function [P, Q, W, T, U] = Nipals(X, Y)
[Nobj, NvarY] = size(Y);
if NvarY > 1
SumSquaresY = sum(Y.^2);
[Dummy,IndexSSQY] = max(SumSquaresY);
U = Y(:, IndexSSQY);
else
U = Y(:, 1);
end
Iter=1;
Convergence = 1;
SaveCol = X(:,1);
while Convergence > 1e-10
Iter = Iter + 1;
W = (U' * X)';
W = (W' / norm(W'))'; % Normalise
T = X * W;
if NvarY == 1 % Only one output variable
Q = 1;
break
end
Q = (T' * Y)';
Q = (Q' / norm(Q'))'; % normalise!!
U = Y * Q;
Convergence = norm(SaveCol - T);
SaveCol = T;
if Iter >= 100
break; % No proper convergence, quit the algorithm
end
end
P = (T' * X / (T' * T))';
NormVal = norm(P); % Normalise all
T = T * NormVal;
W = W * NormVal;
P = P / NormVal;
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?