資源簡介
偏最小二乘算法,多輸入單輸出系統模型的matlab程序。
代碼片段和文件信息
%PLS?多輸入單輸出
clc
clear?all
close?all
%?f1=100;f2=120;f3=130;f4=140;f5=150;f6=160;
f1=100;f2=120;f3=130;f4=140;f5=150;f6=160;
fs=400;
t=0:1/fs:0.6;
x1=1.5*sin(2*pi*f1*t)+2.4*sin(2*pi*f2*t)+0.5*sin(2*pi*f3*t);
x2=2.5*sin(2*pi*f1*t+pi/2)+1.4*sin(2*pi*f2*t)+1.8*sin(2*pi*f4*t);
x3=1.6*sin(2*pi*f3*t)+2.4*sin(2*pi*f4*t)+1.2*sin(2*pi*f5*t);
x4=0.5*sin(2*pi*f4*t+pi/2)+2.5*sin(2*pi*f5*t)+1.2*sin(2*pi*f6*t);
x5=2.8*sin(2*pi*f1*t)+2.1*sin(2*pi*f3*t);
x6=1.3*sin(2*pi*f2*t+pi/2)+2*sin(2*pi*f4*t);
y=x1+x2+x3+x4+x6+randn(size(t));
y=y‘;
x=[x1‘x2‘x3‘x4‘x5‘x6‘];
figure
subplot(211)
plot(x);
title(‘輸入變量‘);
xlabel(‘樣本數‘);
ylabel(‘變量值‘);
subplot(212)
plot(y)
title(‘輸出變量‘);
xlabel(‘樣本數‘);
ylabel(‘變量值‘);
%?顯示變量
whos
%?數據標準化
[mn]?=?size(x);
meanx=mean(x);??
stdx=std(x);?
E0=(x-meanx(ones(m1):))./stdx(ones(m1):);?
[myny]?=?size(y);
meany=mean(y);??
stdy=std(y);??
F0=(y-meany(ones(my1):))./stdy(ones(my1):);
figure
subplot(211)
plot(E0);
title(‘標準化輸入變量‘);
xlabel(‘樣本數‘);
ylabel(‘變量值‘);
subplot(212)
plot(F0)
title(‘標準化輸出變量‘);
xlabel(‘樣本數‘);
ylabel(‘變量值‘);
figure?
[plspressplscumpress]?=?crossval(E0F0‘sim‘‘con‘n2);
figure
subplot(221)
plot(plspress‘‘-o‘)
xlabel(‘潛變量數‘)
title(‘PLS?Individual?PRESS?Curves‘)
ylabel(‘PRESS‘)
subplot(222)
plot(plscumpress‘-o‘)
xlabe
評論
共有 條評論