目录

1.0 红外光传感器检测数据融合

2.0 网络结构设计:

3.0 网络结构设计:

4. BP代码运行结果

4.1 预测值和真实值的误差计算(MAE、MSE、MRSE)

4.2 BP网络训练的性能分析图像

5.0 总结


1.0 红外光传感器检测数据融合

  • 由于红外光在介质中的传播速度受到温度等环境因素影响,为获得较准确的测量结果需要对红外测距系统的测量数据进行处理。
  • 为确定某一红外测距传感器系统的数据处理算法,利用该测距系统进行如下实验:在不同温度下将目标放置不同的距离分别进行测距,每一温度下对同一目标连续测量5次,测量的实验数据见附表所示。
  • 请利用BP神经网络完成该系统的数据处理。
理论值(mm) 750
环境温度(℃) 20 45
测量值(mm) 756.575 770.997 765.326 762.908 762.734 778.058 768.418 767.072 753.332 754.777
理论值(mm) 850
环境温度(℃) 20 45
测量值(mm) 869.189 837.808 846.641 850.121 871.750 886.931 896.766 855.983 844.269 878.671
理论值(mm) 950
环境温度(℃) 20 45
测量值(mm) 975.678 936.677 953.530 936.952 972.731 969.696 966.840 967.399 991.950 960.165

注:为说明问题上述数据扩大了温度对结果的影响。

2.0 网络结构设计:

  • 由于输入向量有2个元素、输出向量有1个元素,所以网络输入层的神经元有2个,输出层神经元数目为1。
  • 神经网络是误差后身传播神经网络,其隐含层结构的层数与各层的节点数直接影响网络性能的优劣。若隐层数较多,网络所表达的映射就越复杂,不仅增大计算量,而且易导致数据失真;若各隐含层的节点数较多,会使其学习时间过长,误差也不一定最小,若节点数较少,会导致网络容错性较差,局部极小就多。因此,隐含层是网络结构设计的重要问题。

3.0 网络结构设计:

  • 隐含层数设计:

隐含层的层数应大于1层,可由下式试算:

其中,N为隐层层数;J为输出层神经元个数;I为输入层神经元个数;K为标准样本个数。本例取1层隐层。

  • 隐含层神经元个数设计:

隐含层节点个数设计相对于隐含层数的设计比较复杂,一般有基于最小二乘设计法、基于黄金分割设计法等。本例取:M=2n+1,其中n输入层神经元的个数。

  • 作用函数设计:

隐层作用函数取正切S型传递函数tansig函数,即:

输出层作用函数取对数S型传递函数logsig函数,即:

  • 学习算法设计:

traingdm是带动量的梯度下降法、trainlm是指L-M优化算法、trainscg是指量化共辄梯度法等,本例选择trainlm学习算法。

  • 输入/输出向量设计:

根据已知条件,可将目标距离的理论值作为对测量温度和测量值的一个映射(二元函数)。由此,可以确定网络的输入为2维向量,且该网络为单输出神经网络。

  • 训练样本和测试样本设计:

题给数据共30组,可在同类(共六类)数据组中各挑选一个样本,从而得到六个测试样本,构成测试样本集。剩余24组数据可作为训练样本集。

  • matlab代码编写
%% 此程序为matlab编程实现的BP神经网络
% 清空环境变量
clear;clc;close all
%% 第一步 读取数据,输入2维输出1维
input=[20 20 20 20 45 45 45 45 20 20 20 20 45 45 45 45 20 20 20 20 45 45 45 45 20 45 20 45 20 45756.575    770.997 765.326 762.908 778.058 768.418 767.072 753.332 869.189 837.808 846.641 850.121 886.931 896.766 855.983 844.269 975.678 936.677 953.530 936.952 969.696 966.840 967.399 991.950 762.734 754.777 871.750 878.671 972.731 960.165];
output=[750 750 750 750 750 750 750 750 850 850 850 850 850 850 850 850 950 950 950 950 950 950 950 950 750 750 850 850 950 950];
%% 第二步 设置训练数据和预测数据
input_train = input(:,1:24);
output_train =output(:,1:24);
input_test = input(:,25:30);
output_test =output(:,25:30);
%节点个数
inputnum=2; % 输入层节点数量
hiddennum=5;% 隐含层节点数量
outputnum=1; % 输出层节点数量
%% 第三本 训练样本数据归一化
[inputn,inputps]=mapminmax(input_train);%归一化到[-1,1]之间,inputps用来作下一次同样的归一化
[outputn,outputps]=mapminmax(output_train);
%% 第四步 构建BP神经网络
net=newff(inputn,outputn,hiddennum,{'tansig','purelin'},'trainlm');% 建立模型,传递函数使用purelin,采用梯度下降法训练W1= net. iw{1, 1};%输入层到中间层的权值
B1 = net.b{1};%中间各层神经元阈值W2 = net.lw{2,1};%中间层到输出层的权值
B2 = net. b{2};%输出层各神经元阈值%% 第五步 网络参数配置( 训练次数,学习速率,训练目标最小误差等)
net.trainParam.epochs=1000;         % 训练次数,这里设置为1000次
net.trainParam.lr=0.01;                   % 学习速率,这里设置为0.01
net.trainParam.goal=0.00001;                    % 训练目标最小误差,这里设置为0.00001%% 第六步 BP神经网络训练
net=train(net,inputn,outputn);%开始训练,其中inputn,outputn分别为输入输出样本%% 第七步 测试样本归一化
inputn_test=mapminmax('apply',input_test,inputps);% 对样本数据进行归一化%% 第八步 BP神经网络预测
an=sim(net,inputn_test); %用训练好的模型进行仿真%% 第九步 预测结果反归一化与误差计算
test_simu=mapminmax('reverse',an,outputps); %把仿真得到的数据还原为原始的数量级
error=test_simu-output_test;      %预测值和真实值的误差%%第十步 真实值与预测值误差比较
figure('units','normalized','position',[0.119 0.2 0.38 0.5])
plot(output_test,'bo-')
hold on
plot(test_simu,'r*-')
hold on
plot(error,'square','MarkerFaceColor','b')
legend('期望值','预测值','误差')
xlabel('数据组数')
ylabel('样本值')
title('BP神经网络测试集的预测值与实际值对比图')[c,l]=size(output_test);
MAE1=sum(abs(error))/l;
MSE1=error*error'/l;
RMSE1=MSE1^(1/2);
disp(['-----------------------误差计算--------------------------'])
disp(['隐含层节点数为',num2str(hiddennum),'时的误差结果如下:'])
disp(['平均绝对误差MAE为:',num2str(MAE1)])
disp(['均方误差MSE为:       ',num2str(MSE1)])
disp(['均方根误差RMSE为:  ',num2str(RMSE1)])

4. BP代码运行结果

4.1 预测值和真实值的误差计算(MAE、MSE、MRSE)

4.2 BP网络训练的性能分析图像

注:小圆圈位置代表终止的训练次数(即代数)处的均方误差

5.0 总结

通过以上内容我们对两输出一输入BP神经网络设计有了初步了解,大家可以根据自己的需要设计合适的多输出多输入的传感器检测数据融合。
在以后的博文中我们将学会用NodeMCU和arduino物联网交互使用,从而实现对外部世界进行感知,充分认识这个有机与无机的环境,科学地合理地进行创作和发挥效益,然后为人类社会发展贡献一点微薄之力。

参考文献:

CSDN:BP神经网络预测matlab代码讲解与实现步骤

B站:BP神经网络分类器的原理与matlab代码实现

基于两输出一输入BP神经网络的传感器检测数据融合(附带MATLAB代码)相关推荐

  1. 【毕业设计/Matlab系列】基于PCA和BP神经网络的人脸识别系统(附matlab代码)

    Date: 2022.4.26 文章目录 前言 1.总体介绍 2.详细分析 2.1.训练程序 2.2.测试程序 3.测试效果图 4.测试部分matlab代码 前言 在毕业设计中实现了基于PCA和BP神 ...

  2. 【图像识别】基于BP神经网络实现手写体大写字母识别附matlab代码

    1 简介 手写体字符识别是人机交互领域的一个重要内容,本文基于 BP 神经网络实现了任意数量字符模版的多字符手写体字符识别.分为以下几步,第一,首先对目标图像进行识别前预处理.包括灰度图像二值化,图像 ...

  3. 【电池健康状态预测】基于灰狼算法优化BP神经网络实现电池健康状态预测附matlab代码

    ✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信.

  4. 【电池健康状态预测】基于灰狼算法优化BP神经网络实现电池健康状态预测附matlab代码...

    ✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信.

  5. 期货策略matlab,用BP神经网络,分析期货数据,附详细代码

    clr; load('data7.mat'); %% 倒转数据 CLOSE = CLOSE0'; OPENINTCHG=OPENINTCHG0'; VOL=VOL0'/10; HIGH = HIGH0 ...

  6. 【负荷预测】布谷鸟(CS)算法优化BP神经网络的负荷及天气预测(Matlab代码实现)

  7. 【预测模型-RBF预测】基于RBF神经网络实现腐蚀失重数据预测附matlab代码

    ✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信.

  8. 【负荷预测】布谷鸟(CS)算法优化BP神经网络的负荷及天气预测附Matlab代码

    ✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信.

  9. 【RVM预测】基于粒子群算法优化相关向量机RVM实现数据回归预测附matlab代码

    1 简介 由于进出口贸易额波动较大,影响因素较多,一般预测算法难以得到较为准确的预测结果.针对该问题,提出基于PSO优化混合RVM模型的贸易预测方法.该方法首先找出影响进出口贸易的指标并通过主成分分析 ...

  10. 【BP预测】基于哈里斯鹰算法改进BP神经网络实现数据预测

    一. BP神经网络预测算法简介 1.人工神经网络简介 人工神经网络(ANN)是一种旨在模仿人脑结构及其功能的由多个非常简单的处理单元彼此按某种方式相互连接而形成的计算机系统,该系统靠其状态对外部输入信 ...

最新文章

  1. 【css】padding 和 margin的区别
  2. 两个黑箱问题 ——深度神经网络和脑神经网络
  3. Linq to xml API中 XName 的奇怪实现
  4. JMeter 分布式性能测试
  5. 如何打造园本特色_如何打造一个可持续发展的特色观光园?
  6. 如果有200万存款吃利息,可以不用上班吗?
  7. ASP.NET MVC中ApiController与Controller的区别
  8. Python网络爬虫第一弹《Python网络爬虫相关基础概念》
  9. PPT常见的几种排版技巧,你都掌握了吗?
  10. 小米air耳机重新配对_小米air耳机重新配对_「小三爷出品」不错的新年礼物,小米蓝牙耳机Air体验...
  11. 解密百度前端技术体系
  12. 【python】parser.add_argument后面为什么要加-和--?
  13. xp无法访问2012r2域计算机列表,新安装Windows 2012域控无法没有自动创建Sysvol netlogon共享--钉子-Exchange MVP...
  14. Jenkins SonarQube Quality Gate质量门禁检查
  15. 基于javaweb+SSM的校园外卖点餐系统(java+SSM+JSP+maven+mysql)
  16. Python大数据培训班特色优势及工作方向
  17. 国外6个最好的广告联盟营销推荐
  18. java1.7 apk 签名_【keytool jarsigner工具的使用】Android 使用JDK1.7的工具 进行APK文件的签名,以及keystore文件的使用...
  19. HTML生成word文档
  20. while,do while,for 循环语句总结大全,一步到位

热门文章

  1. html标签和css的语法web的一些知识汇总
  2. C# 快递单批量打印
  3. Socket编程之聊天室
  4. JS时间轴效果(类似于qq空间时间轴效果)
  5. Python自动化爬虫教程:Pyppeteer采集京东商城书籍信息
  6. 2021年北京高考成绩排名查询,北京2021高考成绩排名榜单,北京各高中高考成绩喜报...
  7. 模型压缩——重参数化
  8. django前戏准备
  9. Jupyter Nbextensions插件功能大全
  10. DRAM存储系统结构