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

📄 pls_simpls.m

📁 一个简单的pls程序吧
💻 M
字号:
function [B,T,U,R]= PLS_SIMPLS(X,Y,Fac);

  %%% Partial Least Squares - de Jong's  SIMPLS algorithm
  %%%  
  %%%
  %%% Inputs  
    %     X    : block A matrix (number of samples  x dim1) - zero mean !
    %     Y    : block B matrix (number of samples  x dim2) - zero mean !
    %     Fac  : number of latent vectors (components)  to extract 
    
    %     Outputs: 
    %     B      : matrix of regression coefficients  
    %     T,U    : matrix of latent vectors (number of samples x Fac)  
    
   
   
   
[n,d]=size(X);       

U=[];V=[];
T=[];Q=[];
R=[];P=[];


%%%% SIMPLS

S=X'*Y; 

for i=1:Fac 
    
    [r,s,q1]=svds(S,1);   %%% X weights   
%     [q2,s2]=eigs(S'S,1);   %%% if you do [q,s]=eigs(S'S,1) instead ; Y weights  
%     [q2,s2]=eigs(S'*S,1);
%     r2=S*q2;          
    
    t=X*r;             %%% X scores 
    norT(i,i)=1/norm(t);
    t=t*norT(i,i);
                   
    p=X'*t;          %%% X loadings  X = T*P' + E 
    q=Y'*t;          %%% Y weights 
    
    u=Y*q;           %%% Y scores 
    u=u/norm(u); 
    
    v=p;  
    
    if i > 1          
        v = v - V*(V'*p);    %%% orthogonalize v to previous loadings
    %    u = u - T*(T'*u);    %%% orthogonalize u to previous t values 
    end 
    
    v=v/sqrt(v'*v);
    S =  S - v * (v' * S);  %%% deflate S    
           
    
    P=[P p];Q=[Q q];
    T=[T t];U=[U u];
    R=[R r];V=[V v];
    
end     


B=R*norT*Q'; 

⌨️ 快捷键说明

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