系统辨识
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数字控制理论与设计上机报告
一、背景知识
辨识是通过测量得到的动态系统输入/输出数据确定系统的模型。设计和实现高性能的控制系统需要系统模型。多数实际情况中,我们需要能够直接辨识动态(控制)模型的方法。主要采用的是辨识离散时间参数化动态模型的方法。
二、实验目的。
1、学会使用递归最小二乘法(RLS)与递归增广最小二乘法(RELS)进行系统辨识。
2、理解上述两种方法的异同并验证辨识得到的模型,加深对数字控制理论的理解。
三、实验原理
1、系统辨识
本次实验采用的是Ⅰ型辨识方法——基于白化预测误差的辨识方法。
辨识采样离散时间参数化动态模型的方法是最适合设计和调试数字控制系统的方法。系统辨识是一种确定系统动态模型的实验方法,它包含有四个步骤:
⑴在设定的实验条件下采集输入/输出数据;
⑵选择或估计模型结构(复杂度);
⑶估计模型参数;
⑷验证辨识模型(结构和参数值)。
一个完整的系统辨识算法必须包含以上四个步骤,每个步骤使用的方法取决于期望模型的类型(参数化的还是非参数化的、连续时间的还是离散时间的)以及实验条件(如对噪声的假设、开环或闭环辨识)。模型验证是判断辨识模型是否有效的关键一步。由于获取高质量辨识模型的参数估计算法和实验方法并非唯一,并且获得的模型也不是总能够通过验证测试。在这种情况下需要重新考虑辨识算法、模型复杂度和实验条件,系统辨识应视为一种反复过程。
2、验证模型
主要验证基于白化预测误差的方法辨识得到的模型,验证方法的准则如下:
⑴ 选择的对象+扰动结构是否正确,即能否代表实际系统; ⑵ 选择的多项式()()()1
1
1
A q
B q
C q ---、、的阶数和d (时延)的值是否正确。
验证方法基于以上准则,由以下几步构成:
⑴ 为辨识模型创建一个I/O 文件(使用和原系统一样的输入序列); ⑵ 为辨识模型创建一个预测误差文件(最少100个采样值); ⑶ 测试预测误差序列(即预测残差序列)的白度(不相关性)。
四、实验内容
1、Session LS1-1
打开T0.mat 文件,将已经测量得到的数据T0.mat 装载入工作空间。 输入plot(u)及plot(y)观察系统输入u 及输出y 的波形,如下图所示:
input u
然后输入以下指令对输入输出数据进行归一化处理: >> y=y-mean(y) >> u=u-mean(u)
因为用于辨识的模型结构应能表达动态关系,亦即在工作的附近,输入变化如何影响输出的函数关系。因此,为了辨识准确,应从I/O 数据中消除(对应工作点的)直流分量。分为两个阶段完成:①计算I/O 数据的平均值;②从I/O 数据中减去平均值,得到新的I/O 数据。因此需要对I/O 数据进行上述语句的处理。
打开函数文件夹下的rls.m 文件,依据Session LS1-1中所给的条件,输入 >> na=2;nb=2;d=1; >> [B,A]=rls(y,u,na,nb,d)
而rls.m 文件中函数的格式为[B,A]=rls(y,u,na,nb,d,Fin,lam1,lam0),其中输入参数后三个这里都没有指定,因此舍去,使用程序中默认的缺省值。得到辨识出的结果如下:
B =
0 0 1.0000 0.5000 A =
1.0000 -1.5000 0.7000 也就是()1
2
310.5B q
q
q ---=+,()1121 1.50.7A q q q ---=-+,说明我们能够将此
output y
系统模型辨识出来。
通过同样的步骤再打开T1.mat 数据文件,与T0.mat 文件不同之处在于其是基于以下ARMAX 模型获取:
()()()()()()111d A q y t q B q u t C q e t ----=+
其中,多项式()1
A q
-和()1B q -与前面相同,()e t 为新增的随机扰动,是由计算机
产生的近似白噪声,()1
C q -的阶数为2C
n
=。
最后Matlab 运算得到的结果为: B =
0 0 0.9831 0.6512 A =
1.0000 -1.4035 0.6066 也就是()1
2
30.98310.6512B q
q
q ---=+,()1121 1.40350.6066A q q q ---=-+。与
上述辨识存在差异。这是由于文件T1受噪声的高度干扰,RLS 方法将产生有偏差的参数估计,因此需要对辨识结果的质量进行验证,同时验证与辨识都是基于同样的输入/输出数据集进行。
验证所用的函数[wlossf,ulossf,wrni,urni,wyhat,uyhat]=olvalid(B,A,C,y,u)封装在olvaid.m 文件中,其输入参数中带有C ,但是之前的辨识模型中并没有考虑C ,也就是并没有得到C ,因此我们默认C=1,输入以下指令:
>> [wlossf,wrni]=olvalid(B,A,1,y,u) 得到白噪声图像如下:
由图可知其归一化自相关函数()N R i 在1i =时超出了实践值的限制。也就是说估计的参数有偏差,验证结果也不理想(()10.15N R >),预测残差不近似白噪声,因此,需要考虑其他的对象+扰动结构。
下面将采用RELS 方法再次对数据T1.mat 进行系统辨识与验证。
打开rels.m 文件,通过函数名[B,A,C]=rels(y,u,na,nb,nc,d,Fin,lam1,lam0)可以发现输入比RLS 方法中多了nc ,输出多了个矩阵C 来形容干扰误差。在Matlab 命令行输入:
>> [B,A,C]=rels(y,u,na,nb,na,d)
输入中的后一个na 表示的是多项式C 的阶次nc 与na 相等,得到的模型为: B =
0 0 0.9516 0.5479 A =
1.0000 -1.4981 0.6942 C =
1.0000 -0.8383 0.0415
也就是()1230.95160.5479B q q q ---=+,()112
1 1.49810.6942A q q q ---=-+,
0.51 1.52
2.53
3.54
4.55
i
W R N (i )
Whiteness test for the OL identification