資源簡介
經過驗證的matlab的PLS代碼,直接輸入樣品的xo、y0和驗證的樣品X,即可直接輸出Y,可以放心使用
代碼片段和文件信息
function?[solQ_h2datarryww_startxishu]=pls(x0y0x)
pz=[x0y0];
mu=mean(pz);
sig=std(pz);?%求均值和標準差
rr=corrcoef(pz);?%求相關系數矩陣
data=zscore(pz);?%數據標準化
n=size(x02);m=size(y02);num=size(x01);?%n是自變量的個數,m是因變量的個數num是樣本點的個數
e0=data(:1:n);f0=data(:n+1:end);?%提取標準化后的自變量、因變量數據
chg=eye(n);%對角陣
for?i=1:n
%以下計算?w,w*和?t?的得分向量,
matrix=e0‘*f0*f0‘*e0;
[vecval]=eig(matrix);
val=diag(val);
[valind]=sort(val‘descend‘);
w(:i)=vec(:ind(1));%提出最大特征值對應的特征向量
w_star(:i)=chg*w(:i);%計算w*的取值
t(:i)=e0*w(:i)?%計算成分?ti?的得分
alpha=e0‘*t(:i)/(t(:i)‘*t(:i))?%計算?alpha_i
e=e0-t(:i)*alpha‘?%計算殘差矩陣
e0=e;
%以下計算?ss(i)的值
beta=[t(:1:i)ones(num1)]\f0?%求回歸方程的系數
beta(end:)=[];?%刪除回歸分析的常數項
cancha=f0-t(:1:i)*beta;?%求殘差矩陣
ss(i)=sum(sum(cancha.^2));?%求誤差平方和
%以下計算?press(i)
for?j=1:n
- 上一篇:MATLAB指數擬合程序
- 下一篇:大矩陣數據降維
評論
共有 條評論