📄 yuce.m
字号:
function [outo,d,ave]=yuce(ti,to,IM,MT,hilayers)
[samples,inum]=size(ti);
%归一化
for i=1:inum %找出最大最小值
max(1,i)=ti(1,i);
min(1,i)=ti(1,i);
end
for i=1:inum
for j=1:samples
if max(1,i)<ti(j,i)
max(1,i)=ti(j,i);
end
if min(1,i)>ti(j,i)
min(1,i)=ti(j,i);
end
end
end
for i=1:inum %inputs归一化(0,1)
for j=1:samples
ti(j,i)=(ti(j,i)-min(1,i))/(max(1,i)-min(1,i));
end
end
mmax=to(1,1); %找出最大最小值
mmin=to(1,1);
for i=1:samples
if mmax<to(i,1)
mmax=to(i,1);
end
if mmin>to(i,1)
mmin=to(i,1);
end
end
for i=1:samples %targets归一化(0,1)
to(i,1)=(to(i,1)-mmin)/(mmax-mmin);
end
%hilayers=9; %layers为隐层节点数
outi=zeros(samples,1)
outo=zeros(samples,1)
for k=1:samples
hilayersin=zeros(hilayers,1);
hilayersout=zeros(hilayers,1);
for i=1:hilayers
for j=1:inum
hilayersin(i,1)=hilayersin(i,1)+ti(k,j)*IM(j,i);
end
hilayersout(i,1)=logsig(hilayersin(i,1));
end
for i=1:hilayers
outi(k,1)=outi(k,1)+hilayersout(i,1)*MT(i,1);
end
outo(k,1)=logsig(outi(k,1));
end
d=zeros(samples,1);
E=outo-to;
d=abs(outo-to);
ave=0;
for i=1:inum
ave=ave+abs(outo(i,1)-to(i,1));
end
ave=ave/samples
figure
plot(to,'b-+');
hold on;
plot(outo,'r:*');
hold on;
title('预测值与实际值拟合曲线')
xlabel('预测样本数')
ylabel('输出')
figure
plot(E,'-+');
title('预测绝对误差曲线')
xlabel('预测样本数')
ylabel('绝对误差')
hold on
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -