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 + -
显示快捷键?