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神经网络的非线性系统建模——非线性函数拟合...相关推荐

  1. matlab建成二维数组,matlab绘制二维数组

    hist 累计图 rose 极座标累计图 stairs 阶梯图 stem 针状图 fill 实心图 feather 羽毛图 compass 罗盘图 quiver 向量场图 Matlab 如何画出一个二 ...

  2. matlab多元二次分析,Matlab篇----常用的回归分析Matlab命令(regress篇)

    前言 最近学了不少回归分析的知识,用到了几个常用的Matlab命令,写在这里做个总结. 回归分析,就是研究几种变量之间的关系.如果你也很喜欢分析数据,这种技巧是基本的一项.(PS:高级的是机器学习.) ...

  3. matlab一元二次回归,MATLAB一元线性回归方程的计算及检验.doc

    MATLAB一元线性回归方程的计算及检验 1. 从input语句键盘输入一组数据(xi,yi),i=1,2,-n. 2. 计算一元线性回归方程y=ax+b的系数a和b,用两种方法计算: 一是公式:: ...

  4. matlab idft 二维,idft matlab

    MATLAB 离散傅里叶变换及应用 一.DFT 与 IDFT.DFS.DTFT 的联系 1. 序列的傅里叶变换(DFT)和逆变换(IDFT) 在实际中常常使用有限长序列.如果有限长序列...... M ...

  5. matlab多元二次分析,MATLAB(2)--因子分析

    目的描述 ​ 出于模型的需要,我们的团队选择做一次因子分析,通常这部分在队伍中是会有同学专门负责这块的,至于为什么笔者就不在这里多说了. 解决思路 ​ 在MATLAB中封装了有关因子分析的方法--fa ...

  6. matlab 反向二值化,MATLAB:图像二值化、互补图(反运算)(im2bw,imcomplement函数)...

    图像二值化.反运算过程涉及到im2bw,imcomplement函数,反运算可以这么理解:原本黑的区域变为白的区域,白的区域变为黑的区域. 实现过程如下: close all;%关闭当前所有图形窗口, ...

  7. 基于matlab的神经网络设计,神经网络模型matlab例子

    matlab神经网络目前有什么具体的实际应用 MATLAB中文论坛2010年出过一本书,北航出版社的,叫<MATLAB神经网络30个案例分析 (豆瓣)>.我觉得把它作为入门书挺好的,每一章 ...

  8. 神经网络二分类问题范例,神经网络解决分类问题

    求运用BP神经网络算法处理分类问题的源程序,例如输入蚊子的翼长和触角长,输出蚊子类型与此类似的源程序 30 这种分类的案例很多,附件里面就有这类案例.主要还是要形成样本,输入输出都做好,进行训练,训练 ...

  9. matlab绘制y3=e (-x),MATLAB图形绘制-二维配套实验

    实验五 MATLAB 绘图-二维 1.在同一坐标系下绘制下面三个函数在t ∈[0,4π]的图象. ) sin(41.0321t e y t y t y t -===π 注意此处的sin (t )前面需 ...

最新文章

  1. python requests 报错 Connection aborted ConnectionResetError RemoteDisconnected 解决方法
  2. Deepin 下安装 LAMP
  3. oracle导出导入数据库
  4. windows+idea运行hadoop demo(亲测)
  5. 在本地进行开发工作置chrome谷歌浏览器解决跨域问题
  6. CentOS7下搭建postfix邮箱服务器并实现extmail的web访问
  7. 测试一下flash显示图片
  8. flutter 手机定位
  9. Html开屏广告源码,开屏(Splash)广告样式
  10. 大数据小结(1-4)
  11. 【Java校招你不知道的那些事儿】java内推是坑吗?纯忽悠,一点用没有?
  12. python12306爬虫_爬虫12306返回数据怎么解析
  13. 判断NSString是否含有某字符rangeOfString
  14. sqlyog导入数据的两种方式
  15. echarts设置背景图片
  16. android 通过adb工具实现无线连接安卓设备并调试
  17. dwz交互式弹窗处理
  18. 电影《不能说的秘密》周杰伦穿越后的结果分析!
  19. linux环境下网卡重启
  20. java的Intersect用法_intersect、minus的用法

热门文章

  1. access注入大全
  2. word自带公式右侧编号
  3. 卷组删除pv_CentOS下删除一个卷组(VG)
  4. node怎么解析vue代码_vue中node_modules中第三方模块的修改使用详解
  5. 讨论需求时组里都是怎么做的
  6. Pc端微信加群的测试用例
  7. 绝地求生更新完后显示服务器忙,绝地求生2月1日更新好了吗?更新后提示服务器繁忙怎么办?...
  8. 月份对比_行业洞察 | 10月份行业概览amp;头部广告主盘点
  9. 亲密关系沟通-【独特性】尊重与探索他人
  10. Java21天打卡Day7-循环