全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 MATLAB等数学软件专版
735 0
2016-05-03

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%       利用BP拟合函数y=x1^2+x2^2
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
clc
clear
x1=5*rands(2000,1);
x2=5*rands(2000,1);
y=x1.^2+x2.^2;
input=[x1,x2];
output=y;
k=rand(1,2000);
[m,n]=sort(k);

%找出训练数据和预测数据
input_train=input(n(1:1900),:)';
output_train=output(n(1:1900))';
input_test=input(n(1901:2000),:)';
output_test=output(n(1901:2000))';

%选连样本输入输出数据归一化
[inputn,inputps]=mapminmax(input_train);
[outputn,outputps]=mapminmax(output_train);

%% BP网络训练
% %初始化网络结构
net=newff(inputn,outputn,20);

net.trainParam.epochs=2000;
net.trainParam.lr=0.1;
net.trainParam.goal=0.00004;

%网络训练
net=train(net,inputn,outputn);
%预测数据归一化
inputn_test=mapminmax('apply',input_test,inputps);
%网络预测输出
an=sim(net,inputn_test);
%网络输出反归一化
BPoutput=mapminmax('reverse',an,outputps);
%误差分析
error=BPoutput-output_test;
rmse=sqrt(mean(error.^2));
%% 结果分析

figure(1)
[x,y]=meshgrid(-5:0.1:5,-5:0.1:5);
z=x.^2+y.^2;
mesh(x,y,z);
title('函数图形','fontsize',12)

figure(2)
plot(BPoutput,':or')
hold on
plot(output_test,'-*');
text(2,47,['RMSE=',num2str(rmse,'%2.4f')]);
legend('预测输出','期望输出')
title('BP网络预测输出','fontsize',12)
ylabel('函数输出','fontsize',12)
xlabel('样本','fontsize',12)



二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群