• 大小: 4KB
    文件类型: .m
    金币: 1
    下载: 0 次
    发布日期: 2021-05-17
  • 语言: Matlab
  • 标签: matlab  PLS  

资源简介

matlab源码 PLS(偏最小二乘法)算法 简单好用

资源截图

代码片段和文件信息

% 非常好用得PLS程序

if exist(‘opt‘) 
disp(‘ ‘)
else
lv=input(‘ How many latent variables should be calculated (default 3!) ‘);if isempty(lv)lv=3;end;
Rx=input(‘ What is the order of X (default 3) ‘);if isempty(Rx)Rx=3;end;
if Rx==2
disp(‘ ‘)
disp(‘ Well a tri-linear model will be made but with on variable in the third order‘)
disp(‘ The only difference between ordinary and this bi-PLS is that no P loadings are‘)
disp(‘ introduced ‘)
disp(‘ ‘)
disp(‘ Hit any key to continue‘)disp(‘ ‘)pauseend
Ry=input(‘ What is the order of Y (default 2 or 1) ‘);if isempty(Ry)Ry=2;end;

Xidx=[‘I‘;‘J‘;‘K‘;‘L‘;‘M‘;‘N‘];
Yidx=[‘Iy‘;‘Jy‘;‘Ky‘];

[IJx]=size(X);[IJyy]=size(y);
if Rx==2 J=Jx;K=1;end
if Rx>2
for rx=2:Rx
if exist(Xidx(rx));rrx=eval(Xidx(rx));
if isempty(rrx)rrx=0;endelserrx=0;end;
str=([Xidx(rx)‘=input(‘‘ What is the dimension of the ‘  num2str(rx)  ‘ order of X (default ‘ num2str(rrx) ‘) ‘‘);‘]);
eval(str)
if isempty(eval(Xidx(rx)))str=([Xidx(rx)‘=rrx;‘]);eval(str);end;
endelseJ=Jx;
end

if Ry>2
for ry=2:Ry
if exist(Yidx(ry:));
rrx=eval(Yidx(ry:));
if isempty(rrx)rrx=0;end
elserrx=0;end
str=([Yidx(ry:)‘=input(‘‘ What is the dimension of the ‘  num2str(ry)  ‘ order of Y  (default ‘ num2str(rrx) ‘) ‘‘);‘]);
eval(str)
if isempty(eval(Yidx(ry:)))str=([Yidx(ry:)‘=rrx;‘]);eval(str)end;
end
else
Jy=Jyy;
endclear rrx


end % if isempty(opt)


yres=y;
Xres=X;
ypred=zeros(size(y));
xmodel=zeros(IJx);
T=zeros(Ilv);
Wj=zeros(Jlv);
Wk=zeros(Klv);
if Rx>3Wl=zeros(Llv);if Rx>4Wm=zeros(Mlv);endend
B=zeros(lvlv);
Q=zeros(lvJyy);
Qj=zeros(Jylv);
if Ry>2Qk=zeros(Kylv);end
U=zeros(Ilv);


sakX=ssq(Xres); saky=ssq(y);

for f=1:lv % #2
[ubbb] = n_pca(yres12);clear bbb
maxit=250; it=0; ugl=u*2;;

while (norm(u-ugl)/norm(u))>1e-8 %  % #3
ugl=u;it=it

评论

共有 条评论