BP神经网络非线性函数拟合应用

本文详细介绍了使用BP神经网络进行输入输出数据处理和预测的方法,包括数据预处理、网络训练和预测过程,以及结果分析。通过随机生成的数据集,展示了BP神经网络在预测任务中的应用,并提供了预测误差的分析。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

%% BP神经网络的输入输出数据
% clear all
% clc
% x=rand(1,1500);
% y=rand(1,1500);
% p=[x;y]';
% z=x.^2-y.^2+3;
% save x x
% save y y
% save p p
% save z z 
%%
clear all
clc
%% 训练数据预测数据提取及归一化
% 下载输入输出数据
% load x y z p
x=rand(1,1500);
y=rand(1,1500);
p=[x;y]';
z=x.^2-y.^2+3;
% 从1到1500间随机排序
k=rand(1,1500);
[m,n]=sort(k);
% 找出训练数据和预测数据
input_train=p(n(1:1400),:)';
output_train=z(n(1:1400));
input_test=p(n(1401:1500),:)';
output_test=z(n(1401:1500));
% 训练样本输入输出数据归一化
[inputn,inputps]=mapminmax(input_train);
[outputn,outputps]=mapminmax(output_train);
%% BP网络训练
% 初始化网络结构
net=newff(inputn,outputn,5);

net.trainParam.epochs=500;
net.trainParam.lr=0.05;
net.trainParam.goal=0.0004;
% 网络训练
net=train(net,inputn,outputn);
%% BP网络预测
% 预测数据归一化
inputn_test=mapminmax('apply',input_test,inputps);
% 网络预测输出
an=sim(net,inputn_test);
% 网络输出反归一化
BPoutput=mapminmax('reverse',an,outputps);
%% 结果分析
figure(1)
plot(BPoutput,':og');
hold on
plot(output_test,'-*');
ylabel('仿真输出','fontsize',12);
xlabel('样本','fontsize',12);
% 预测误差
error=BPoutput-output_test;
figure(2)
subplot(2,1,1)
plot(error,'-*');
ylabel('绝对误差','fontsize',12);
xlabel('样本','fontsize',12);

subplot(2,1,2)
plot((output_test-BPoutput)./BPoutput*100,'-*');
ylabel('误差百分比','fontsize',12)
xlabel('样本','fontsize',12)

errorsum=sum(abs(error))
%%

转载于:https://www.cnblogs.com/javafly/p/6037206.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值