双模型法离线神经网络辨识非线性动态系统

双模型法离线神经网络辨识非线性动态系统

本文是我基于自己的理解实现的双模型法离线神经网络便是,可能不太正确,但仍记录下来。双模型法离线神经网络辨识非线性动态系统_第1张图片

辨识的具体流程

首先搭建下式的离散系统simulink模型
y(k+1)=(y(k))/(1+y(k)*y(k))
y(k+1)=u^3 (k)

具体搭建可参考以下博客离散系统simulink搭建
搭建完成后,为以下效果
双模型法离线神经网络辨识非线性动态系统_第2张图片

输入信号采用正弦函数(实际上更好地应该采用随机信号,随机信号能充分激励系统)
正弦函数的幅值设置为1,unit Delay 的初值设置为2,可以得到如下的波形

双模型法离线神经网络辨识非线性动态系统_第3张图片
双模型法离线神经网络辨识非线性动态系统_第4张图片
之后再搭建如下的待辨识的系统:
在这里插入图片描述

双模型法离线神经网络辨识非线性动态系统_第5张图片
其输出为:
双模型法离线神经网络辨识非线性动态系统_第6张图片
(需要设置采样频率,示波器中和unit delay中设置为0.001,采样时间为1ms)。将图1的非线性动态系统的输入u(k)、u(k+1)、y(k)、y(k+1)导出到工作区。(array数组形式)
并用其训练神经网络
训练神经网络采用神经网络工具箱
参考以下博客MATLAB神经网络工具箱使用
输入以下代码
nnstart
打开神经网络工具箱
双模型法离线神经网络辨识非线性动态系统_第7张图片
选择四种模式中的一种,我选择的是第一种Fitting app,具体选择哪一种我也不太清楚
选择next

双模型法离线神经网络辨识非线性动态系统_第8张图片

选择输入和训练后的输出(数据应在工作区中)
一直next

双模型法离线神经网络辨识非线性动态系统_第9张图片

这里可以设置隐含层节点,但是第二层我不知道怎么设置
开始训练
双模型法离线神经网络辨识非线性动态系统_第10张图片
我这里是retrian,是因为我训练过了
双模型法离线神经网络辨识非线性动态系统_第11张图片
按performance出现
双模型法离线神经网络辨识非线性动态系统_第12张图片
双模型法离线神经网络辨识非线性动态系统_第13张图片

可以选择导入fcn模块中,也可以生成simulink模块。我选择了后者,如下
双模型法离线神经网络辨识非线性动态系统_第14张图片
将中间的网络应用到sinulink中
要有两个神经网络,因为如下

双模型法离线神经网络辨识非线性动态系统_第15张图片
搭建的simulink最终模型如下:
双模型法离线神经网络辨识非线性动态系统_第16张图片
得到示波器3的输出
双模型法离线神经网络辨识非线性动态系统_第17张图片

双模型法离线神经网络辨识非线性动态系统_第18张图片
双模型法离线神经网络辨识非线性动态系统_第19张图片
可以看到,除了在峰值位置的辨识系统的输出不尽如人意,其他部分的输出较能接近原非线性系统。

你可能感兴趣的:(神经网络,神经网络)