⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 bp的matlab源代码.txt

📁 一个关于MATLAB的BP实例源程序。对你了解bp神经网络的编程有着非常大的意思
💻 TXT
字号:
clear
%数据输入
huanghe_p=[370	503	434	575	490	420	560	640	558	343	326	405	446	423	422	697	598	377	435	472	451	667	601	689	541	485	425	389	382	707	422];
huanghe_t=[515	713	586	753	720	567	717	987	810	489	453	589	639	568	595	982	849	519	615	652	599	941	893	999	758	701	630	561	520	1040 535];

%归一化处理
p=(huanghe_p-min(huanghe_p))/(max(huanghe_p)-min(huanghe_p));
t=(huanghe_t-min(huanghe_t))/(max(huanghe_t)-min(huanghe_t));

%数据输入2:网络有关参数
EPOCHS=10000;
GOAL=0.000005;

%建立bp神经网络,并训练,仿真。其中输入为p,输出为t

%-------------------------隐层神经元确定-----------------------------

s=3:15;%s 为常向量,表示神经元的个数
res=zeros(size(s));%res将要存储误差向量,这里先置零

pn=[p(1:5);p(6:10);p(11:15);p(16:20)];
tn=[t(1:5);t(6:10);t(11:15);t(16:20)];
for i=1:length(s)           
    net=newff(minmax(pn),[s(i),4],{'tansig','purelin'},'trainlm');
    net.iw{1,1}=zeros(size(net.iw{1,1}))+0.5;
    net.lw{2,1}=zeros(size(net.lw{2,1}))+0.75;
    net.b{1,1}=zeros(size(net.b{1,1}))+0.5;
    net.b{2,1}=zeros(size(net.b{2,1}));
    net.trainParam.epochs=EPOCHS;
    net.trainParam.goal =GOAL;
    net=train(net,pn,tn);
    y=sim(net,pn);
e=tn-y;
error=mse(e,net);
res(i)=norm(error);
    
end
%选取最优神经元数,number为使得误差最小的隐层神经元个数
number=find(res==min(res));
if(length(number)>1) no=number(1)
else no=number
end

clear error,res
%选定隐层神经元数目后,建立网络,训练仿真。
net=newff(minmax(pn),[no,4],{'tansig','purelin'},'trainlm');
    net.iw{1,1}=zeros(size(net.iw{1,1}))+0.5;
    net.lw{2,1}=zeros(size(net.lw{2,1}))+0.75;
    net.b{1,1}=zeros(size(net.b{1,1}))+0.5;
    net.b{2,1}=zeros(size(net.b{2,1}));
    net.trainParam.epochs=EPOCHS;
    net.trainParam.goal =GOAL;
net=train(net,pn,tn);
y=sim(net,pn);
e=tn-y;
error=mse(e,net)%error为网络的误差向量
r=norm(error);%r为网络的整体误差
save net                      %保存最好的网络

%预测
input=[p(11:15);p(16:20);p(21:25);p(26:30)];
yuce=sim(net,input);

%结果反归一化
y1=[y(1,:) y(2,:) y(3,:) y(4,:)];
yuce1=[yuce(1,:) yuce(2,:) yuce(3,:) yuce(4,:)];
t1=y1*(max(huanghe_t(1:20))-min(huanghe_t(1:20)))+min(huanghe_t(1:20));
yuce2=yuce1*(max(huanghe_t(1:20))-min(huanghe_t(1:20)))+min(huanghe_t(1:20));

%计算误差
wucha=abs(t1-huanghe_t(1:20))./huanghe_t(1:20)
b=minmax(wucha);
average_wucha=mean(wucha);
%作图
figure(1)
plot(1:20,huanghe_t(1:20),'*-',1:20,t1,'o:')

figure(2)
plot(1:20,huanghe_t(11:30),'*-',1:20,yuce2,'o:')

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -