欢迎订阅《FPGA学习入门100例教程》、《MATLAB学习入门100例教程》

目录

一、理论基础

二、核心程序

三、测试结果


一、理论基础

在人工神经网络的发展历史上,感知机(Multilayer Perceptron,MLP)网络曾对人工神经网络的发展发挥了极大的作用,也被认为是一种真正能够使用的人工神经网络模型,它的出现曾掀起了人们研究人工神经元网络的热潮。单层感知网络(M-P模型)做为最初的神经网络,具有模型清晰、结构简单、计算量小等优点。但是,随着研究工作的深入,人们发现它还存在不足,例如无法处理非线性问题,即使计算单元的作用函数不用阀函数而用其他较复杂的非线性函数,仍然只能解决线性可分问题.不能实现某些基本功能,从而限制了它的应用。增强网络的分类和识别能力、解决非线性问题的唯一途径是采用多层前馈网络,即在输入层和输出层之间加上隐含层。构成多层前馈感知器网络。
      20世纪80年代中期,David Runelhart。Geoffrey Hinton和Ronald W-llians、DavidParker等人分别独立发现了误差反向传播算法(Error Back Propagation Training),简称BP,系统解决了多层神经网络隐含层连接权学习问题,并在数学上给出了完整推导。人们把采用这种算法进行误差校正的多层前馈网络称为BP网。
BP神经网络具有任意复杂的模式分类能力和优良的多维函数映射能力,解决了简单感知器不能解决的异或(Exclusive OR,XOR)和一些其他问题。从结构上讲,BP网络具有输入层、隐藏层和输出层;从本质上讲,BP算法就是以网络误差平方为目标函数、采用梯度下降法来计算目标函数的最小值。

BP神经网络,即Back Propagation神经网络,其本质是一种基于误差反馈传播的神经网络算法。从结构上讲,BP神经网络是由一个信息的正向传播网络和一个误差的反向传播网络两个模块构成。BP神经网络的基本结构如下图所示:

从图2的结构可知,BP神经网络主要由输入层,隐含层以及输出层构成。来自外界的信息通过输入层传输进入到隐含层进行处理,并由输出层输出处理结果。当BP神经网络的输出结果和其期望结果之间的误差较大的时候,则进入反向传播阶段,并进行进行审计网络权值的修正,直到输出结果和期望结果误差满足一定条件为止。

BP神经网络模型包括其输入输出模型、作用函数模型、误差计算模型和自学习模型。

二、核心程序

clc;
clear;
close all;
warning off;
rand('state',0);%%
%输入数据为温度T,风速V,厚度h以及时间t
Ni         = 4;
No         = 1;
Num_Hidden = 8;%隐含层数量
%输出为水分比FSB
Num        = Ni + No;
%%
%训练数据设置
data = xlsread('datas\data.xlsx');
[R,C] = size(data);
for i = 1:C/Numtmps = [];tmps = data(:,Num*(i-1)+1:Num*(i));tmps_check = tmps(:,1);tmps(isnan(tmps_check),:)=[];Train_input1{i}  = tmps(:,1:Ni);Train_output1{i} = tmps(:,Ni+1:Ni+No);
end%%
%输入BP神经网络进行训练
P = [];
T = [];
for i=1:length(Train_input1);P = [P;Train_input1{i}];T = [T;Train_output1{i}];
end%BP神经网络参数
net = newff(P',T',Num_Hidden);
net.adaptFcn='adaptwb';
net.trainParam.mu=1.0000e-05;
net.trainParam.mu_dec=0.1000;
net.trainParam.mu_inc=10;
net.trainParam.mu_max=1e10;
net.trainparam.mc=0.2;
net.trainparam.lr=0.005;
net.trainparam.epochs=2000;
net.trainparam.goal=1e-9;
% net.trainParam.max_fail=6;
% net.trainParam.min_grad=1e-7;
% net.performFcn='mse';
net.trainFcn       ='trainlm';
net = train(net,P',T');   save model.mat net
%输出BP神经网络的参数
Input_W        = net.IW{1,1}
LayerOne_Bias  = net.b{1}
LayerOneToTwo_W= net.LW{2,1}
LayerTwo_Bias  = net.b{2}
%%
%通过BP神经网络训练后测试
for i = 1:length(Train_input1);y1{i} = sim(net,Train_input1{i}');
end%%
%各种指标的输出分析
NAME{1} = ['T=55,v=0.3,h=3'];
NAME{2} = ['T=55,v=0.6,h=3'];
NAME{3} = ['T=55,v=0.7,h=3'];
NAME{4} = ['T=55,v=1.2,h=3'];
NAME{5} = ['h=3,T=55,v=0.9'];
NAME{6} = ['h=6,T=55,v=0.9'];
NAME{7} = ['h=9,T=55,v=0.9'];
NAME{8} = ['h=12,T=55,v=0.9'];
NAME{9} = ['T=45,v=0.9,h=3'];
NAME{10}= ['T=55,v=0.9,h=3'];
NAME{11}= ['T=65,v=0.9,h=3'];
NAME{12}= ['T=60,v=0.9,h=3'];
NAME{13}= ['T=50,v=0.9,h=3']; for i = 1:13;figure;subplot(211);plot(y1{i},'ro');hold onplot(Train_output1{i},'b');xlabel('times');ylabel('水分比');legend('BP神经网络输出水分比','实际测量水分比');title(NAME{i});grid onsubplot(212);plot(y1{i}-Train_output1{i}' ,'b-*');xlabel('times');ylabel('水分比误差');grid onylim([-1,1]);
end%风速变化显示
figure;
subplot(121);
plot(y1{1},'r-o');
hold on
plot(y1{2},'b-s');
hold on
plot(y1{3},'k-*');
hold on
plot(y1{4},'m-^');
hold on
xlabel('times');
ylabel('水分比');
legend('T=55,v=0.3,h=3','T=55,v=0.6,h=3','T=55,v=0.9,h=3','T=55,v=1.2,h=3');
grid on
title('BP神经网络输出');
ylim([0,1.2]);
subplot(122);
plot(Train_output1{1},'r-o');
hold on
plot(Train_output1{2},'b-s');
hold on
plot(Train_output1{3},'k-*');
hold on
plot(Train_output1{4},'m-^');
hold on
xlabel('times');
ylabel('水分比');
legend('T=55,v=0.3,h=3','T=55,v=0.6,h=3','T=55,v=0.9,h=3','T=55,v=1.2,h=3');
grid on
title('测量值');
grid on
ylim([0,1.2]);%厚度变化显示
figure;
subplot(121);
plot(y1{5},'r-o');
hold on
plot(y1{6},'b-s');
hold on
plot(y1{7},'k-*');
hold on
plot(y1{8},'m-^');
hold on
xlabel('times');
ylabel('水分比');
legend('h=3,T=55,v=0.9','h=6,T=55,v=0.9','h=9,T=55,v=0.9','h=12,T=55,v=0.9');
grid on
title('BP神经网络输出');
ylim([0,1.2]);
subplot(122);
plot(Train_output1{5},'r-o');
hold on
plot(Train_output1{6},'b-s');
hold on
plot(Train_output1{7},'k-*');
hold on
plot(Train_output1{8},'m-^');
hold on
xlabel('times');
ylabel('水分比');
legend('h=3,T=55,v=0.9','h=6,T=55,v=0.9','h=9,T=55,v=0.9','h=12,T=55,v=0.9');
grid on
title('测量值');
grid on
ylim([0,1.2]);%温度变化显示
figure;
subplot(121);
plot(y1{9},'r-o');
hold on
plot(y1{10},'b-s');
hold on
plot(y1{11},'k-*');
hold on
plot(y1{12},'m-^');
hold on
plot(y1{13},'c->');
hold on
xlabel('times');
ylabel('水分比');
legend('T=45,v=0.9,h=3','T=55,v=0.9,h=3','T=65,v=0.9,h=3','T=60,v=0.9,h=3','T=50,v=0.9,h=3');
grid on
title('BP神经网络输出');
ylim([0,1.2]);
subplot(122);
plot(Train_output1{9},'r-o');
hold on
plot(Train_output1{10},'b-s');
hold on
plot(Train_output1{11},'k-*');
hold on
plot(Train_output1{12},'m-^');
hold on
plot(Train_output1{13},'c->');
hold on
xlabel('times');
ylabel('水分比');
legend('T=45,v=0.9,h=3','T=55,v=0.9,h=3','T=65,v=0.9,h=3','T=60,v=0.9,h=3','T=50,v=0.9,h=3');
grid on
title('测量值');
grid on
ylim([0,1.2]);

三、测试结果

A05-60

基于BP神经网络的含水率预测模型matlab仿真相关推荐

  1. 【树叶分类】基于BP神经网络植物叶片分类Matlab代码

    1 简介 本文以树叶为实验对象,针对传统分类问题耗时长,效率低的不足,提出了一个基于BP神经网络植物智能分类系统.这个计算机辅助分类系统不仅能够帮助提高植物分类的准确率同时也能缩减工作人员的工作量. ...

  2. 【遗传优化BP网络】基于自适应遗传算法的BP神经网络的股票预测MATLAB仿真

    1.软件版本 MATLAB2021a 2.本算法理论知识 通过MATLAB对BP神经网络,基于遗传优化的BP神经网络,基于改进遗传优化的BP神经网络以及基于改进遗传优化的组合BP神经网络等多种算法的股 ...

  3. 【语音识别】基于BP神经网络实现语音识别附matlab代码

    1 简介 2 部分代码 %% 该代码为基于BP网络的语言识别​%% 清空环境变量clcclear​%% 训练数据预测数据提取及归一化​%下载四类语音信号load data1 c1load data2 ...

  4. 【小波能量BP】基于小波能量系数提取和BP神经网络的检测算法matlab仿真

    1.软件版本 MATLAB2013b 2.算法理论 步骤1:小波能量系数提取的方法进行降维 小波降维处理,将高维的数据转换为低维的数据. %对数据进行小波变换 [C,L] = wavedec(data ...

  5. 【预测模型】基于 bp神经网络风电功率预测matlab源码

    一.简介 BP网络(Back Propagation),是1986年由Rumelhart和McCelland为首的科学家小组提出,是一种按误差逆传播算法训练的多层前馈网络,是目前应用最广泛的神经网络模 ...

  6. 【预测模型】基于BP神经网络、LSTM、GRNN实现风电功率预测附matlab代码

    1 简介 风电功率预测结果的准确性,不仅关系到风力发电厂的综合运行效率,也与区域运行成本具备直接联系,基于BP神经网络.LSTM.GRNN实现风电功率预测.​经过实例分析,证明设计的方法对风电功率的预 ...

  7. matlab流量预测模型,基于MATLAB工具箱的BP神经网络年径流量预测模型研究——以塔城地区乌拉斯台河为例...

    水 文 JOURNAL OF CHINA HYDROLOGY 第28卷第1期 2008年2月 Vol.28 No.1 Feb., 2008 塔城地区位于新疆维吾尔自治区西北边陲, 地处中纬, 虽属内陆 ...

  8. 神经网络pid控制器MATLAB,基于BP神经网络的PID控制器及其MATLAB仿真.pdf

    基于BP神经网络的PID控制器及其MATLAB仿真.pdf 2009 NO.10 中国新技术新产品 China New Technologies and Products 高新技术 基于BP 神经网络 ...

  9. 【预测模型】基于Logistic混沌映射改进麻雀算法改进BP神经网络实现数据预测matlab源码

    1  模型 简介见这里. 2 部分代码 function [FoodFitness,FoodPosition,Convergence_curve]=SSA(N,Max_iter,lb,ub,dim,f ...

  10. 【论文研读】基于BP 神经网络的 Q235 钢力学性能预测模型

    基于BP 神经网络的 Q235 钢力学性能预测模型 刘志伟1, 2 , 马劲红1, 2 , 陈伟1 , 王文正1 1.华北理工大学 冶金与能源学院, 河北 唐山 063210; 2.现代冶金技术教育部 ...

最新文章

  1. Excel导入异常Cannot get a text value from a numeric cell解决
  2. 深入探讨用位掩码代替分支(8):SSE指令集速度测试
  3. 如何点击打印,直接打印出来,不弹打印设置选项
  4. 同一master,两个slave的server_id相同问题处理
  5. python 惰性属性_在Python中处理惰性JSON-“期望属性名称”
  6. MySql安装错误代码1045的解决方案
  7. 递归法:从n个小球中取m个小球(不放回),共有多少种取法?
  8. 数据存储与访问之——初见SQLite数据库
  9. 单播、多播(组播)和广播的区别
  10. lammps学习总结3
  11. 百度地图迁徙大数据_百度地图迁徙大数据:北上广深城内出行年后首次大幅增长...
  12. 设置Win10 输入法默认简体中文
  13. 数字孪生数字汽车风洞技术研究案例
  14. 紫色特别舒服的UI趣味测试微信小程序源码下载包含多种评测
  15. hbulider初学教程及html5五子棋小程序
  16. Joint Coronary Centerline Extraction and Lumen Segmentation from CCTA CNNTracker and Vascular Grap
  17. residual block、bottleneck、skip connection……都是些什么?
  18. 保底掉落装备matlab,DNF团本减负计划 保底深渊票史诗装备删除
  19. WEB前端开发工具--整理
  20. 使用C#在Visual studio 2012调用OCX控件

热门文章

  1. android模拟器 vt,逍遥安卓模拟器怎么开启VT模式 VT虚拟化设置方法
  2. matlab 分子动力学,两体的分子动力学模型-MATLAB源程序
  3. 【Windows 逆向】CE 地址遍历工具 ( CE 结构剖析工具 | 人物数据内存结构 | 人物三维坐标数据分析 )
  4. windows清理_一个Windows系统下好用的内存清理工具
  5. RDL 报表 - 横向合并单元格后单元格被撑高
  6. HIVE 系列 (4) hive 内部表和外部表HQL查询统计
  7. HTML网页内联框架
  8. CDC的DrawText
  9. 1G ,2G, 3G,4G简单概述
  10. android wear 兼容问题,多款Android Wear手表不兼容iPhone 7