|
clear;clc;
a=load('已知数据.mat');
a1=a.A(:,1); %读取横坐标已知数据%
a2=a.A(:,2); %读取纵坐标已知数据%
a3=a.B(:,1); %读取横坐标预测数据,测试数据%
a4=a.B(:,2); %读取纵坐标预测数据,测试数据%
[p1,minp,maxp,t1,mint,maxt]=premnmx(a1,a2);
%% BP网络训练
% %初始化网络结构
net=newff(p1,a2,[1,10,1],{'tansig','tansig','purelin'},'trainlm');
%%设置训练次数
net.trainParam.epochs = 5000;
%%设置收敛误差
net.trainParam.goal=0.0000001;
%%训练网络
[net,tr]=train(net,p1,t1);
%% BP网络预测
%预测数据归一化
b1=premnmx(a3);
%网络预测输出
b2=sim(net,b1);
%网络输出反归一化
%%将得到的数据反归一化得到预测数据
c=postmnmx(b2,mint,maxt)
%% 结果分析
figure(1)
plot(a3,a4,'g-');
hold on
plot(a3,c,'b*')
legend('期望输出','预测输出')
title('BP网络预测输出','fontsize',12)
ylabel('函数输出','fontsize',12)
xlabel('样本','fontsize',12)
%预测误差
error=BPoutput-a4;
figure(2)
plot(error,'-*')
title('BP网络预测误差','fontsize',12)
ylabel('误差','fontsize',12)
xlabel('样本','fontsize',12)
修改后,仍出现错误使用 network/sim (line 271)
Input data sizes do not match net.inputs{1}.size.
出错 bp1m (line 21)
b2=sim(net,b1);
估计是sim函数用错了,求教!网络图中输出层与隐含层、隐含层和输出层没有箭头连接 |
|