資源簡(jiǎn)介
matlab源碼 PLS(偏最小二乘法)算法 簡(jiǎn)單好用
代碼片段和文件信息
%?非常好用得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
評(píng)論
共有 條評(píng)論