说明:《MATLAB/Simulink系统仿真超级学习手册》石良臣 matlab2018a——仅作为笔记。
神经网络工具箱的四种类型:函数拟合、模式识别、数据聚类、时间序列预测。
神经网络设计与应用的步骤:
12.2.2神经网路函数拟合
1、神经网络拟合GUI
命令行:nnstart nftool
2、网格创建
(1)数据获取
上图点击“Next”
(2)样本分配
(3)网络结构设置
3、网络训练
回归图 误差柱状图
(4)网络评定
如果在训练样本上的性能是好的,但检测性能相当糟糕,说明过度拟合了,需要减少神经元个数;如果训练样本性能样本也不好,则需要增加神经元个数。
(5)结果保存
三种保存方式:生成脚本文件、导入MATLAB工作空间、生成Simulink模型。
simulink模块
12.2.3神经网络模式识别
GUI工具nprtool和命令行函数
1、神经网络模式识别GUI
2、网络创建
上图点击“Next”
(1)数据获取
(2)样本分配
(3)网络结构设置
3、网络训练
4、网络评定
5、结果保存
三种保存方式:生成脚本文件、导入MATLAB工作空间、生成Simulink模型。
12.2.4神经网络数据聚类
1、神经网络聚类GUI
命令行:nctool——回车键
无隐含层,而是SOM层。
2、网络创建
上图点击“Next”
(1)数据获取
(2)数据结构设置
注意:神经网络聚类不需要对样本数据进行分配。
3、网络训练
4、网络评定
5、结果保存。
12.2.5神经网络时间序列预测
1、神经网路时间序列GUI
命令行:ntstool
2、网络创建
(1)数据获取
(2)样本分配
(3)网络结构设置
3、网络训练
时间序列响应图、误差自动校正图
4、网络评定和结果保存
12.2.6神经网络函数命令
1、网络创建函数
调用格式:
变量名 = 网络名称 (隐含层维数,传递函数)
注意:具有延迟结构的网络还需要设置其延迟信息。
2、网络训练函数
(1)使用语法
[net,tr]=train(NET,X,T,Xi,Ai)
(2)功能描述
例12-1
[x,t]=house_dataset; %导入示例数据
net=feedforwardnet(15) %创建前馈型神经网路
[net,tr]=train(net,x,t); %训练网络
y=net(x); %网络实际输出
perf_mse=mes(net,x,t) %计算平方误差均值
[r,m,b]=regression(t,y) %计算回归值
4、图像绘制
例12-2
接例12-1的代码
e=t-y; %计算误差
figure(1),ploterrhist(e) %误差柱状图
figure(2),plotperform(tr) %性能图
figure(3),plotregression(t,y) %训练状态图
12.3神经网络与Simulink
12.3.1神经网路Simulink模块
1、Transfer Functions
2、Net Input Functions
3、Weight Functions
4、Processing Functions
5、Control Systems
12.3.2神经网络Simulink建模
方法:GUI;MATLAB命令创建,通过gensim生成simulink模型(常用);
使用语法:gensim(net,st)
注释:结构体;采样时间。
例12-3利用gensim函数创建一个前馈型神经网络的simulink模型。
[x,t]=simplefit_dataset;
net=feedforwardnet(10);
net=train(net,x,t);
gensim(net)
2、模型仿真
例12-4
12.4自定义神经网络
12.4.1自定义神经网络函数命令
两种使用语法:
net=network
net=network(numInputs,numLayers,biasConnect,layerConnect,outConnect)
例12-5利用network创建一个自定义神经网络,并对其进行仿真。
net=network
net.numInputs=1
net.numLayers=2
% net=networkk(1,2) %用这句代码可创建相同的网格
%上述代码可创建一个一输入两层的网格。
%下面一行代码可以让网络第一层具有阈值,
%第一层与第一个输入之间有输入权重,第一层与第二层为网格的输出。
net=network(1,2,[1;0],[1;0],[0 0;1 0],[0 1])
%下面代码可以查看自子对象的属性
net.inputs{1}
net.layers{1},net.layers{2}
net.biases{1}
net.inputWeights{1,1},net.layerWeights{2,1}
net.outputs{2}
%下面代码可以获取权重矩阵和阈值向量
net.iw{1,1},net.iw{2,1}
net.b{1}
%运行下面代码可以对网络进行仿真
p=[0.5;-0.1];
y=sim(net,p)
12.4.2神经网络数据管理GUI
1、神经网络数据管理界面“nntool”
2、网络创建
3、网络训练
4、网络仿真
结束。