⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 fttplsp1.m

📁 Tucker, PARAFAC, GRAM, RAFA and misc. 2nd order models with a test data set (old version now covered
💻 M
字号:
function [Ypred]=fttplsp1(Xcal,r1,r2,r3,W,Xpred,Ycal,CenMode)
%function [Ypred]=fttplsp1(Xcal,r1,r2,r3,W,Xpred,Ycal,CenMode)
%
%This tri-linear PLS prediction program predicts on basis of an
%unknown X The procedure has been implemented excactly as proposed
%by Bro (1995)
%
% Xcal     : Supermatrix (r1 x r2穜3) from cube (r1 x r2 x r3).
%            This supermatrix contains the data on which to 
%            calibrate prediction parameters.
% r1,r2,r3 : Number of observations along each way.
% W1,W2,W3 : Number of factors along each way.
% Xpred    : Supermatrix (rp x r2穜3) with objects whose
%            Y-values must be estimated.
% Ycal     : Y values to use for calibration, must have same 
%            number of rows as Xcal. Ycal (r1 x ry)
% CenMode  : If CenMode=0 no centering - else centering.
% Ypred    : Ypred (rp x ry) Predicted values for the objects
%            contained in Xpred.
% R        : Regression coefficients. R (W1 x ry)            
% Author   : Claus A. Andersson, June 1995
% Copyright: Food Technology,
%            Royal Veterinary & Agricultural University
%            Copenhagen, Denmark
% E-mail   : claus.andersson@pop.foodsci.kvl.dk

rpred1=size(Xpred,1);
ry=size(Ycal,2);

%Center X and Y
if CenMode==1,
  st=ones(size(Xcal,1),1);
  XCen=mean(Xcal);
  Xcal=Xcal-(st*XCen);
end;
if CenMode==1,
  st=ones(size(Ycal,1),1);
  YCen=mean(Ycal);
  Ycal=Ycal-(st*YCen);
end;

%Calculate the factors for prediction
[T,Wj,Wk,U,Q,B]=fttpls01(Xcal,Ycal,r1,r2,r3,W,0);

%Unfolds the loadingplane 
loads=zeros(W,r2*r3);
for w=1:W,
  loads(w,:)=kron(Wk(:,w)',Wj(:,w)');
end;

%Calculates scores of each old object
Tcal=zeros(r1,W);
for i=1:r1,
  for w=1:W,
    Tcal(i,w)=Tcal(i,w)+Xcal(i,:)*loads(w,:)';
  end;
end;

%Center Xpred
if CenMode==1,
  st=ones(size(Xpred,1),1);
  Xpred=Xpred-(st*XCen);
end;

%Calculates the scores of Xpred
Tpred=zeros(rpred1,W);
for i=1:rpred1,
  for w=1:W,
    Tpred(i,w)=Tpred(i,w)+Xpred(i,:)*loads(w,:)';
  end;
end;

%Calculates the predicted values from Xpred
Ypred=zeros(rpred1,ry);
for y=1:ry,
  R=Tcal\Ycal(:,y);
  Ypred(:,y)=Tpred*R;
end;

%Center Ypred
if CenMode==1,
  st=ones(size(Ypred,1),1);
  Ypred=Ypred+(st*YCen);
end;

disp('FTTPLSP1: Execution ended.')

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -