还剩13页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
4444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444《系统辨识实验》实验指导书赵英凯南京工业大学自动化学院2006-04-17目录实验一基于OLS法的系统辨识数字仿真实验2实验二基于RLS法的系统辨识数字仿真实验7实验一基于OLS法的系统辨识数字仿真实验
一、实验目的
1、深入理解系统辨识中相关分析法及最小二乘法的相关内容
2、学会用__tlab或C语言等进行系统辨识的仿真研究
二、实验设备装有相应软件的计算机
三、实验原理请见教材,次处从略
四、实验内容
1.伪随机二位式__(PRBS)的生成
2.用普通最小二乘法(OLS)法辨识对象数学模型
五、实验要求
1.熟悉系统辨识中的相关内容
2.掌握__tlab或C语言等进行系统辨识仿真研究的一般步骤
3.实验前基本应完成相关的编程任务,实验时调试相应程序
4.修改相应参数与随机噪声幅度,观察并分析结果
5.软件包人机界面的__与设计(选做)
六、.实验步骤实验步骤
1、运行__tlab1File-New-M-File打开M文件编辑窗口2输入自己编写的程序3__run按钮,如果程序出错则调试程序,如果运行正常的话则观察程序的运行结果具体的实验步骤
1.伪随机二位式__(PRBS)的生成:X1=1;X2=0;X3=1;X4=0;%移位寄存器输入Xi初态
(0101),Yi为移位寄存器各级输出m=60;%置M序列总长度fori=1:mY4=X4;Y3=X3;Y2=X2;Y1=X1;X4=Y3;X3=Y2;X2=Y1;X1=xorY3Y4;%异或运算ifY4==0Ui=-1;elseUi=Y4;endendM=U%绘图i1=ik=1:1:i1;plotkUkUrxxlabelkylabelM序列title移位寄存器产生的M序列注这是一个采用四级移位寄存器产生prbs__的程序,同学们可以将这个程序编写的更具通用性,使得移位寄存器的级数可以选择
2.用普通最小二乘法(OLS)法辨识对象数学模型选择的仿真对象的数学模型如下其中,是服从正态分布的白噪声N输入__采用4阶M序列,幅度为1选择如下形式的辨识模型设输入__的取值是从k=1到k=16的M序列,则待辨识参数为=其中,被辨识参数、观测矩阵zL、HL的表达式为,程序框图如下所示参考程序%olsu=[-11-11111-1-1-11-1-111];%系统辨识的输入__为一个周期的M序列z=zeros116;%定义输出观测值的长度fork=3:16zk=
1.5*zk-1-
0.7*zk-2+uk-1+
0.5*uk-2;%用理想输出值作为观测值endsubplot311%画三行一列图形窗口中的第一个图形stemu%画出输入__u的经线图形subplot312%画三行一列图形窗口中的第二个图形i=1:1:16;%横坐标范围是1到16,步长为1plotiz%图形的横坐标是采样时刻i纵坐标是输出观测值z图形格式为连续曲线subplot313%画三行一列图形窗口中的第三个图形stemzgridon%画出输出观测值z的经线图形,并显示坐标网格uz%显示输入__和输出观测__%L=14%数据长度HL=[-z2-z1u2u1;-z3-z2u3u2;-z4-z3u4u3;-z5-z4u5u4;-z6-z5u6u5;-z7-z6u7u6;-z8-z7u8u7;-z9-z8u9u8;-z10-z9u10u9;-z11-z10u11u10;-z12-z11u12u11;-z13-z12u13u12;-z14-z13u14u13;-z15-z14u15u14]%给样本矩阵HL赋值ZL=[z3;z4;z5;z6;z7;z8;z9;z10;z11;z12;z13;z14;z15;z16]%给样本矩阵zL赋值%calculatingparameters%计算参数c1=HL*HL;c2=invc1;c3=HL*ZL;c=c2*c3%计算并显示%DISPLAYPARAMETERSa1=c1a2=c2b1=c3b2=c4%从中分离出并显示a
1、a
2、b
1、b2%End注由于输出观测值没有任何噪音成分,所以辨识结果也无任何误差,同学们可以在输出观测值中添加噪音,观察ols的辨识效果同时,可以尝试增加输入__的数量,看辨识结果有何变化
七、实验报告要求
1、整理分析实验结果与程序,并打印之
2、小结调试程序的方法,并提出改进意见
3、上交相关软盘或将程序与电子文档通过E__IL发给老师八.实验思考题
1、用C语言编程实现递推最小二乘法和对象阶的辨识的编程
2、用F检验法来进行对象阶的辨识
3、修改相应参数与随机噪声幅度,观察并分析结果
4、编制系统辨识的软件包,制作良好的用户界面(选作)
5、自己可选取一个具体的对象(如某化工厂的加热炉)进行建模实验二基于RLS法的系统辨识数字仿真实验
一、实验目的
1、深入理解系统辨识中相关分析法及最小二乘法的相关内容
2、学会用__tlab或C语言等进行系统辨识的仿真研究
二、实验设备装有相应软件的计算机
三、实验原理
1.考虑如下图所示的仿真对象图中,是服从N分布的不相关随机噪声且,,
(1)选择上图所示的辨识模型仿真对象选择如下的模型结构
(2)其中,是服从正态分布的白噪声N输入__采用4位移位寄存器产生的M序列,幅度为
0.03按式33构造hk;加权阵取单位阵;利用如下公式计算Kk、和Pk,计算各次参数辨识的相对误差,精度满足要求后停机递推最小二乘法的推导公式如下
(4)
2.阶的辨识前面所讨论的系统辨识方法,都是假定模型的阶次是已知的,因此仅仅要求估计差分方程的系数但实际上,系统的阶次是很难被准确知道的因为对阶次的理解程度是直接与一个线性差分方程的准确结构有关的,所以有关阶次的确定也可以称为系统结构的确定经验指出,一个模型的阶次不准,就可能在控制系统设计时发生严重问题故在辨识过程中,模型的阶次是否合适是必须加以检验的一般阶的方法中,常用的有这么几种零极点相消法、目标函数法和F检验法下面只介绍其中的目标函数法当我们用不同阶的模型给系统的输入——输出观测数据进行最小二乘拟合时,会得到不同的估计误差因此利用J极小化确定阶是很自然的实验表明,假设模型具有大于1而小于的阶n,当n取12…时若随着n的增加在阶的估计量-1时,J最后一次出现陡峭的下降,往后就近似地保持不变或者只有微小的下降见下图则取也就是说,模型阶次的确定可以直接依次计算阶次n=1,2,…时的最小二乘估计以及相应的损失函数,然后选择当下降不明显时的阶次作为合适的模型阶次n,这种方法也叫确定阶的估计准则方法,有很广的应用J
四、实验内容
1.用递推最小二乘法(RLS)法辨识对象数学模型
2.对象阶的辨识
五、实验要求
1.熟悉系统辨识中的相关内容
2.掌握__tlab或C语言等进行系统辨识仿真研究的一般步骤
3.实验前基本应完成相关的编程任务,实验时调试相应程序
4.修改相应参数与随机噪声幅度,观察并分析结果
5.软件包人机界面的__与设计(选做)
六、实验步骤
1.首先要熟悉一下__TLAB的运行环境:1File-New-M-File打开M文件编辑窗口2输入自己编写的程序3__run按钮,如果程序出错则调试程序,如果运行正常的话则观察程序的运行结果
2.用递推最小二乘法(RLS)法辨识对象数学模型在这个实验中,我们采用以下模型进行仿真5其中u[k]是幅值为1的PRBS__输入,e[k]是白噪声,即(0,1)的正态分布序列,它的方差时可以调整的这个系统的采样值y(k)和uk作为已知数据,采用实验一的最小二乘法估计这个系统的参数下面是递推最小二乘法的流程图相关程序如下%RLSclear%清理工作间变量L=15;%M序列的周期y1=1;y2=1;y3=1;y4=0;%四个移位寄存器的输出初始值fori=1:L;%开始循环,长度为Lx1=xory3y4;%第一个移位积存器的输入是第3个与第4个移位积存器的输出的“或”x2=y1;%第二个移位积存器的输入是第3个移位积存器的输出x3=y2;%第三个移位积存器的输入是第2个移位积存器的输出x4=y3;%第四个移位积存器的输入是第3个移位积存器的输出yi=y4;%取出第四个移位积存器幅值为0和1的输出__,ifyi
0.5ui=-
0.03;%如果M序列的值为1时辨识的输入__取“-
0.03”elseui=
0.03;%当M序列的值为0时辨识的输入__取“
0.03”end%小循环结束y1=x1;y2=x2;y3=x3;y4=x4;%为下一次的输入__做准备end%大循环结束,产生输入__ufigure1;%第1个图形stemugridon%以径的形式显示出输入__并给图形加上网格z2=0;z1=0;%取z的前两个初始值为零fork=3:15;%循环变量从3到15zk=
1.5*zk-1-
0.7*zk-2+uk-1+
0.5*uk-2;%给出理想的辨识输出采样__end%RLS递推最小二乘辨识c0=[
0.
0010.
0010.
0010.001];%直接给出被辨识参数的初始值即一个充分小的实向量p0=10^6*eye44;%直接给出初始状态P0,即一个充分大的实数单位矩阵E=
0.000000005;%相对误差E=
0.000000005c=[c0zeros414];%被辨识参数矩阵的初始值及大小e=zeros415;%相对误差的初始值及大小fork=3:15;%开始求Kh1=[-zk-1-zk-2uk-1uk-2];x=h1*p0*h1+1;x1=invx;%开始求Kkk1=p0*h1*x1;%求出K的值d1=zk-h1*c0;c1=c0+k1*d1;%求被辨识参数ce1=c1-c0;%求参数当前值与上一次的值的差值e2=e
1./c0;%求参数的相对变化e:k=e2;%把当前相对变化的列向量加入误差矩阵的最后一列c0=c1;%新获得的参数作为下一次递推的旧参数c:k=c1;%把辨识参数c列向量加入辨识参数矩阵的最后一列p1=p0-k1*k1*[h1*p0*h1+1];%求出pk的值p0=p1;%给下次用ife2=Ebreak;%若参数收敛满足要求,终止计算end%小循环结束end%大循环结束c%显示被辨识参数e%显示辨识结果的收敛情况%分离参数a1=c1:;a2=c2:;b1=c3:;b2=c4:;ea1=e1:;ea2=e2:;eb1=e3:;eb2=e4:;figure2;%第2个图形i=1:15;%横坐标从1到15plotia1ria2:ib1gib2:%画出a1,a2,b1,b2的各次辨识结果titleParameterIdentificationwithRecursiveLeastSquaresMethod%图形标题figure3;%第3个图形i=1:15;%横坐标从1到15plotiea1riea2gieb1bieb2r:%画出a1,a2,b1,b2的各次辨识结果的收敛情况titleIdentificationPrecision%图形标题注同样这个程序使用的输出__也没有噪音,所以辨识的结果没有误差,请同学们在输出__中加入噪音,再使用RLS对其辨识,观察辨识结果,进行分析
2.同样采用这个模型采用__TLAB或者C语言进行阶的辨识其中u[k]是幅值为1的PRBS__输入,e[k]是白噪声,即(0,1)的正态分布序列,它的方差时可以调整的这个系统的采样值y(k)和uk作为已知数据,采用实验一的最小二乘法估计这个系统的参数令模型的阶次分别为n=1,2,3,其J值如下表所示从表中看出,由到,J发生显著的变化而由到,J没有多大的变化,故可确定这系统的阶次辨识的结果如下,具体编程由同学们来实现噪声水平损失函数Jn=1n=2n=
3265.
8630.000——
248.
1470.
9870.
983337.
84824.
55824.
451308.
13199.
86398.
5985131.
9052462.
2202440.245
七、实验报告要求
1、整理分析实验结果与程序,并打印之
2、小结调试程序的方法,并提出改进意见
3、上交相关软盘或将程序与电子文档通过E__IL发给老师八.实验思考题
1、用C语言变成实现递推最小二乘法和对象阶的辨识的编程
2、用F检验法来进行对象阶的辨识
3、修改相应参数与随机噪声幅度,观察并分析结果
4、编制系统辨识的软件包,制作良好的用户界面(选作)
5、自己可选取一个具体的对象(如某化工厂的加热炉)进行建模
6、小结调试程序的方法,并提出改进意见赋输入__初值u定义输出观测值的长度并计算系统的输出值画出输入和输出观测值的图形给样本矩阵HL和zL赋值根据公式计算参数从中分离出并显示出被辨识参数a1a2b1b2停机图2最小二乘一次完成算法程序框图vkY工作间清零产生输出采样__给被辨识参数和P赋初值计算Pk计算被辨识参数的相对变化量参数收敛满足要求?停机计算Kk计算k第四个移位寄存器的输出取反,并将幅值变为
1.0得到辨识系统的输入__样本值给M序列的长度L和移位寄存器的输入赋初始值画出被辨识参数的各次递推估计值图形分离参数画出被辨识参数的相对误差的图形画出辨识的输入__径线图形图2递推最小二乘法算法辨识的__lab程序流程图。