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

_本文是我基于自己的理解实现的双模型法离线神经网络便是,可能不太正确,但仍记录下来。_在这里插入图片描述

辨识的具体流程

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

具体搭建可参考以下博客离散系统simulink搭建
搭建完成后,为以下效果
在这里插入图片描述

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

在这里插入图片描述
在这里插入图片描述
之后再搭建如下的待辨识的系统:
在这里插入图片描述

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

在这里插入图片描述

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

在这里插入图片描述

这里可以设置隐含层节点,但是第二层我不知道怎么设置
开始训练
在这里插入图片描述
我这里是retrian,是因为我训练过了
在这里插入图片描述
按performance出现
在这里插入图片描述
在这里插入图片描述

可以选择导入fcn模块中,也可以生成simulink模块。我选择了后者,如下
在这里插入图片描述
将中间的网络应用到sinulink中
要有两个神经网络,因为如下

在这里插入图片描述
搭建的simulink最终模型如下:
在这里插入图片描述
得到示波器3的输出
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
可以看到,除了在峰值位置的辨识系统的输出不尽如人意,其他部分的输出较能接近原非线性系统。