matlab神经网络(二)-bp神经网络,MATLAB神经网络(2) BP神经网络的非线性系统建模——非线性函数拟合...
2.1 案例背景
在工程应用中经常会遇到一些复杂的非线性系统,这些系统状态方程复杂,难以用数学方法准确建模。在这种情况下,可以建立BP神经网络表达这些非线性系统。该方法把未知系统看成是一个黑箱,首先用系统输入输出数据训练BP神经网络,使网络能够表达该未知函数,然后用训练好的BP神经网络预测系统输出。
本章拟合的非线性函数为\[y = {x_1}^2 + {x_2}^2\]该函数的图形如下图所示。
t=-5:0.1:5;
[x1,x2] =meshgrid(t);
y=x1.^2+x2.^2;
surfc(x1,x2,y);
shading interp
xlabel(‘x1‘);
ylabel(‘x2‘);
zlabel(‘y‘);
title(‘非线性函数‘);
2.2 模型建立
神经网络结构:2-5-1
从非线性函数中随机得到2000组输入输出数据,从中随机选择1900 组作为训练数据,用于网络训练,100组作为测试数据,用于测试网络的拟合性能。
2.3 MATLAB实现
2.3.1 BP神经网络工具箱函数
newff
BP神经网络参数设置函数。
net=newff(P, T, S, TF, BTF, BLF, PF, IPF, OPF, DDF)
P:输入数据矩阵;
T:输出数据矩阵;
S:隐含层节点数;
TF:结点传递函数。包括硬限幅传递函数hardlim、对称硬限幅传递函数hardlims、线性传递函数purelin、正切 型传递函数tansig、对数型传递函数logsig;
x=-5:0.1:5;
subplot(2,6,[2,3]);
y=hardlim(x);
plot(x,y,‘LineWidth‘,1.5);
title(‘hardlim‘);
subplot(2,6,[4,5]);
y=hardlims(x);
plot(x,y,‘LineWidth‘,1.5);
title(‘hardlims‘);
subplot(2,6,[7,8]);
y=purelin(x);
plot(x,y,‘LineWidth‘,1.5);
title(‘purelin‘);
subplot(2,6,[9,10]);
y=tansig(x);
plot(x,y,‘LineWidth‘,1.5);
title(‘tansig‘);
subplot(2,6,[11,12]);
y=logsig(x);
plot(x,y,‘LineWidth‘,1.5);
title(‘logsig‘);
BTF:训练函数。包括梯度下降BP算法训练函数traingd、动量反传的梯度下降BP算法训练函数traingdm、动态自适应学习率的梯度下降BP算法训练函数traingda、动量反传和动态自适应学习率的梯度下降BP算法训练函数traingdx、Levenberg_Marquardt的BP算法训练函数trainlm;
BLF:网络学习函数。包括BP学习规则learngd、带动量项的BP学习规则learngdm;
PF:性能分析函数,包括均值绝对误差性能分析函数mae、均方差性能分析函数mse;
IPF:输入处理函数;
OPF:输出处理函数;
DDF:验证数据划分函数。
一般在使用过程中设置前面6个参数,后面4个参数采用系统默认参数。
train
用训练数据训练BP神经网络。
[net, tr]=train(NET, X, T, Pi, Ai)
NET:待训练网络;
X:输入数据矩阵;
T输出数据矩阵;
Pi:初始化输入层条件;
Ai:初始化输出层条件;
net:训练好的网络;
训练过程记录。
sim
BP神经网络预测函数。
y=sim(net, x)
net:训练好的网络;
x:输入数据;
y:网络预测数据。
2.3.2 数据选择和归一化
%% 基于BP神经网络的预测算法
%% 清空环境变量
clc
clear
%% 训练数据预测数据提取及归一化
input=10*randn(2,2000);
output=sum(input.*input);
%从1到2000间随机排序
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);
2.3.3 BP神经网络训练
%% BP网络训练
% %初始化网络结构
net=newff(inputn,outputn,5);
% 配置网络参数(迭代次数,学习率,目标)
net.trainParam.epochs=100;
net.trainParam.lr=0.1;
net.trainParam.goal=0.00004;
%网络训练
net=train(net,inputn,outputn);
2.3.4 BP神经网络预测
%% BP网络预测
%预测数据归一化
inputn_test=mapminmax(‘apply‘,input_test,inputps);
%网络预测输出
an=sim(net,inputn_test);
%网络输出反归一化
BPoutput=mapminmax(‘reverse‘,an,outputps);
2.3.5 结果分析
%% 结果分析
figure(1)
plot(BPoutput,‘:og‘)
hold on
plot(output_test,‘-*‘);
legend(‘预测输出‘,‘期望输出‘)
title(‘BP网络预测输出‘,‘fontsize‘,12)
ylabel(‘函数输出‘,‘fontsize‘,12)
xlabel(‘样本‘,‘fontsize‘,12)
%预测误差
error=BPoutput-output_test;
figure(2)
plot(error,‘-*‘)
title(‘BP网络预测误差‘,‘fontsize‘,12)
ylabel(‘误差‘,‘fontsize‘,12)
xlabel(‘样本‘,‘fontsize‘,12)
figure(3)
plot((BPoutput-output_test)./output_test,‘-*‘);
title(‘神经网络预测误差百分比‘)
% 计算平均绝对百分比误差(mean absolute percentage error)
MAPE=mean(abs(BPoutput-output_test)./output_test)
原文:https://www.cnblogs.com/dingdangsunny/p/12324107.html
matlab神经网络(二)-bp神经网络,MATLAB神经网络(2) BP神经网络的非线性系统建模——非线性函数拟合...相关推荐
- matlab建成二维数组,matlab绘制二维数组
hist 累计图 rose 极座标累计图 stairs 阶梯图 stem 针状图 fill 实心图 feather 羽毛图 compass 罗盘图 quiver 向量场图 Matlab 如何画出一个二 ...
- matlab多元二次分析,Matlab篇----常用的回归分析Matlab命令(regress篇)
前言 最近学了不少回归分析的知识,用到了几个常用的Matlab命令,写在这里做个总结. 回归分析,就是研究几种变量之间的关系.如果你也很喜欢分析数据,这种技巧是基本的一项.(PS:高级的是机器学习.) ...
- matlab一元二次回归,MATLAB一元线性回归方程的计算及检验.doc
MATLAB一元线性回归方程的计算及检验 1. 从input语句键盘输入一组数据(xi,yi),i=1,2,-n. 2. 计算一元线性回归方程y=ax+b的系数a和b,用两种方法计算: 一是公式:: ...
- matlab idft 二维,idft matlab
MATLAB 离散傅里叶变换及应用 一.DFT 与 IDFT.DFS.DTFT 的联系 1. 序列的傅里叶变换(DFT)和逆变换(IDFT) 在实际中常常使用有限长序列.如果有限长序列...... M ...
- matlab多元二次分析,MATLAB(2)--因子分析
目的描述 出于模型的需要,我们的团队选择做一次因子分析,通常这部分在队伍中是会有同学专门负责这块的,至于为什么笔者就不在这里多说了. 解决思路 在MATLAB中封装了有关因子分析的方法--fa ...
- matlab 反向二值化,MATLAB:图像二值化、互补图(反运算)(im2bw,imcomplement函数)...
图像二值化.反运算过程涉及到im2bw,imcomplement函数,反运算可以这么理解:原本黑的区域变为白的区域,白的区域变为黑的区域. 实现过程如下: close all;%关闭当前所有图形窗口, ...
- 基于matlab的神经网络设计,神经网络模型matlab例子
matlab神经网络目前有什么具体的实际应用 MATLAB中文论坛2010年出过一本书,北航出版社的,叫<MATLAB神经网络30个案例分析 (豆瓣)>.我觉得把它作为入门书挺好的,每一章 ...
- 神经网络二分类问题范例,神经网络解决分类问题
求运用BP神经网络算法处理分类问题的源程序,例如输入蚊子的翼长和触角长,输出蚊子类型与此类似的源程序 30 这种分类的案例很多,附件里面就有这类案例.主要还是要形成样本,输入输出都做好,进行训练,训练 ...
- matlab绘制y3=e (-x),MATLAB图形绘制-二维配套实验
实验五 MATLAB 绘图-二维 1.在同一坐标系下绘制下面三个函数在t ∈[0,4π]的图象. ) sin(41.0321t e y t y t y t -===π 注意此处的sin (t )前面需 ...
最新文章
- python requests 报错 Connection aborted ConnectionResetError RemoteDisconnected 解决方法
- Deepin 下安装 LAMP
- oracle导出导入数据库
- windows+idea运行hadoop demo(亲测)
- 在本地进行开发工作置chrome谷歌浏览器解决跨域问题
- CentOS7下搭建postfix邮箱服务器并实现extmail的web访问
- 测试一下flash显示图片
- flutter 手机定位
- Html开屏广告源码,开屏(Splash)广告样式
- 大数据小结(1-4)
- 【Java校招你不知道的那些事儿】java内推是坑吗?纯忽悠,一点用没有?
- python12306爬虫_爬虫12306返回数据怎么解析
- 判断NSString是否含有某字符rangeOfString
- sqlyog导入数据的两种方式
- echarts设置背景图片
- android 通过adb工具实现无线连接安卓设备并调试
- dwz交互式弹窗处理
- 电影《不能说的秘密》周杰伦穿越后的结果分析!
- linux环境下网卡重启
- java的Intersect用法_intersect、minus的用法
热门文章
- access注入大全
- word自带公式右侧编号
- 卷组删除pv_CentOS下删除一个卷组(VG)
- node怎么解析vue代码_vue中node_modules中第三方模块的修改使用详解
- 讨论需求时组里都是怎么做的
- Pc端微信加群的测试用例
- 绝地求生更新完后显示服务器忙,绝地求生2月1日更新好了吗?更新后提示服务器繁忙怎么办?...
- 月份对比_行业洞察 | 10月份行业概览amp;头部广告主盘点
- 亲密关系沟通-【独特性】尊重与探索他人
- Java21天打卡Day7-循环