matlab 根据输出响应求传递函数

1、内容简介


38-可以交流、咨询、答疑

2、内容说明

原始数据分析

被控对象的开环单位阶跃响应数据在文件matlab_work.mat中。在MATLAB指令窗中键入:

>> load matlab_work.mat

>> plot(t,y)

>> xlabel('t')

>> ylabel('y')

>> title('原始响应曲线')

在matlab中画出在输入为单位阶跃响应数据时输出随时间的变化曲线如下图所示:

图1 被控对象的单位阶跃响应

2 系统模型的辨识

由于被控对象模型结构未知,题中仅给出了被控对象的单位阶跃响应。因此需要根据原始的数据分析得出原系统的基本结构。至于结构以及参数的最终确定,将使用MATLAB的系统辨识工具箱来实现。

2.1系统模型结构的估计

系统辨识工具箱提供的模型结构选择函数有struc、arxstruc和selstruc。

函数struc 生成arx结构参数,调用格式为:

nn=struc (Na, Nb, Nk)

其中,Na、Nb 分别为arx模型多项式A(q)、B(q) 的阶次范围;Nk为arx模型纯滞后的大小范围;nn为模型结构参数集构成的矩阵。

函数arxstruc用来计算arx模型结构的损失函数,即归一化的输出预测误差平方和,调用格式为:

v=arxstruc (ze, zv, nn)

其中,ze=[y u]为模型辨识的I/O数据向量或矩阵。zv=[yr ur]为模型验证的I/O数据向量或矩阵。nn为多个模型结构参数构成的矩阵,nn的每行都具有格式:nn=[na nb nk]。v的第一行为各个模型结构损失函数值,后面的各行为模型结构参数。

函数selstruc 用来在损失函数的基础上进行模型结构选择,调用格式为:

[nn, vmod]=selstruc (v, c)

其中v 由函数arxstruc获得的输出矩阵,为各个模型结构的损失函数。c为可选参数,用于指定模型结构选择的方式。

根据图2所示曲线的形状初步估测被控对象的模型应该为二阶系统或者更高阶系统。并且可以看出,纯滞后为0,故Nk恒为零。

在MATLAB指令窗中键入:

>> u=ones(size(y))

>> Z=[y,u]

>> v2=arxstruc(Z,Z,struc(2,0:2,0))

>> nn2=selstruc(v2,0)

>> v3=arxstruc(Z,Z,struc(3,0:3,0))

>> nn3=selstruc(v3,0)

>> v4=arxstruc(Z,Z,struc(4,0:4,0))

>> nn4=selstruc(v4,0)

>> v5=arxstruc(Z,Z,struc(5,0:5,0))

>> nn5=selstruc(v5,0)

>> v6=arxstruc(Z,Z,struc(6,0:6,0))

>> nn6=selstruc(v6,0)

>> v7=arxstruc(Z,Z,struc(7,0:7,0))

>> nn7=selstruc(v7,0)

>> v8=arxstruc(Z,Z,struc(8,0:8,0))

>> nn8=selstruc(v8,0)

得到如下结果:

nn2 =     2     2     0

nn3 =     3     1     0

nn4 =     4     1     0

nn5 =     5     5     0

nn6 =     6     2     0

nn7 =     7     1     0

nn8 =     8     1     0

于是,去除积分环节后的模型阶数为:二阶系统[2 1 0]、三阶模型[3 2 0]和四阶模型[4 1 0],五阶系统模型为[5 5 0],六阶系统模型为[6 2 0],七阶系统模型为[7 1 0],八阶系统模型为[8 1 0]。

2.2系统模型结构的确定

为了确定模型结构以及参数,使用MATLAB的系统辨识工具箱中已有的辨识函数arx()。辨识函数arx()的使用方法是:如果输入信号的列向量为u,输出信号的列向量为y,并选定了系统的分子多项式阶次m-1,分母多项式阶次n及系统的纯滞后d,则可以通过下面的指令辨识出系统的数学模型:

T=arx([y,u],[ n,m,d])

该函数将直接显示辨识的结果,且所得的T为一个结构体,其中T.A和T.B分别表示辨识得到的分子和分母多项式。由给定的观测数据建立系统数学模型后,还需要进行检验,看模型是否适用,如果不适用,则要修改模型结构,重新进行参数估计等。MATLAB的系统辨识工具箱中用于模型验证和仿真的函数主要有compare、resid、pe、predict 和idsim。此次实验主要用的是函数compare对模型进行验证。函数compare可将模型的预测输出与对象实际输出进行比较。验证过程与结果如下所示。

  • 对二阶系统的验证

在MATLAB指令窗中键入:

>> Z=iddata(y,u,0.05)

>> M=arx(Z,[2,3,0])

>> compare(M,Z)

得到结果如图2所示。

图2 二阶模型的匹配结果

  • 阶系统的验证

在MATLAB指令窗中键入:

>> Z=iddata(y,u,0.05)

>> M=arx(Z,[2,4,0])

>> compare(M,Z)

得到结果如图3所示

图3 三阶模型的匹配结果

  • 阶系统的验证

在MATLAB指令窗中键入:

>> Z=iddata(y,u,0.05)

>> M=arx(Z,[4,2,0])

>> compare(M,Z)

得到结果如图4所示

图4 四阶模型的匹配结果

  • 阶系统的验证

在MATLAB指令窗中键入:

>> Z=iddata(y,u,0.05)

>> M=arx(Z,[5,6,0])

>> compare(M,Z)

得到结果如图5所

图5 五阶模型的匹配结果

3、仿真分析

4、参考论文

你可能感兴趣的:(Matlab系列案例,matlab)