系统辨识试验.docx
《系统辨识试验.docx》由会员分享,可在线阅读,更多相关《系统辨识试验.docx(12页珍藏版)》请在冰豆网上搜索。
系统辨识试验
2.用普通最小二乘法(OLS)法辨识对象数学模型
选择的仿真对象的数学模型如下
其中,
是服从正态分布的白噪声N
。
输入信号采用4阶M序列,幅度为1。
选择如下形式的辨识模型
设输入信号的取值是从k=1到k=16的M序列,则待辨识参数
为
=
。
其中,被辨识参数
、观测矩阵zL、HL的表达式为
,
程序框图如下所示:
参考程序:
%ols
u=[-1,1,-1,1,1,1,1,-1,-1,-1,1,-1,-1,1,1];%系统辨识的输入信号为一个周期的M序列
z=zeros(1,16);%定义输出观测值的长度
fork=3:
16
z(k)=*z(k-1)*z(k-2)+u(k-1)+*u(k-2);%用理想输出值作为观测值
end
subplot(3,1,1)%画三行一列图形窗口中的第一个图形
stem(u)%画出输入信号u的经线图形
subplot(3,1,2)%画三行一列图形窗口中的第二个图形
i=1:
1:
16;%横坐标范围是1到16,步长为1
plot(i,z)%图形的横坐标是采样时刻i,纵坐标是输出观测值z,图形格式为连续曲线
subplot(3,1,3)%画三行一列图形窗口中的第三个图形
stem(z),gridon%画出输出观测值z的经线图形,并显示坐标网格
u,z%显示输入信号和输出观测信号
%L=14%数据长度
HL=[-z
(2)-z
(1)u
(2)u
(1);-z(3)-z
(2)u(3)u
(2);-z(4)-z(3)u(4)u(3);-z(5)-z(4)u(5)u(4);-z(6)-z(5)u(6)u(5);-z(7)-z(6)u(7)u(6);-z(8)-z(7)u(8)u(7);-z(9)-z(8)u(9)u(8);-z(10)-z(9)u(10)u(9);-z(11)-z(10)u(11)u(10);-z(12)-z(11)u(12)u(11);-z(13)-z(12)u(13)u(12);-z(14)-z(13)u(14)u(13);-z(15)-z(14)u(15)u(14)]%给样本矩阵HL赋值
ZL=[z(3);z(4);z(5);z(6);z(7);z(8);z(9);z(10);z(11);z(12);z(13);z(14);z(15);z(16)]%给样本矩阵zL赋值
%calculatingparameters%计算参数
c1=HL'*HL;c2=inv(c1);c3=HL'*ZL;c=c2*c3%计算并显示
%DISPLAYPARAMETERS
a1=c
(1),a2=c
(2),b1=c(3),b2=c(4)%从中分离出并显示a1、a2、b1、b2
%End
注:
由于输出观测值没有任何噪音成分,所以辨识结果也无任何误差,同学们可以在输出观测值中添加噪音,观察ols的辨识效果。
同时,可以尝试增加输入信号的数量,看辨识结果有何变化。
实验二基于RLS法的系统辨识数字仿真实验
一、实验目的
1、深入理解系统辨识中相关分析法及最小二乘法的相关内容。
2、学会用Matlab或C语言等进行系统辨识的仿真研究
二、实验设备
装有相应软件的计算机。
三、实验原理
1.考虑如下图所示的仿真对象:
图中,
是服从N
分布的不相关随机噪声。
且
,
,
(1)
选择上图所示的辨识模型。
仿真对象选择如下的模型结构:
(2)
其中,
是服从正态分布的白噪声N
。
输入信号采用4位移位寄存器产生的M序列,幅度为。
按式(3)
(3)
构造h(k);加权阵取单位阵
;利用如下公式计算K(k)、
和P(k),计算各次参数辨识的相对误差,精度满足要求后停机。
递推最小二乘法的推导公式如下:
(4)
2.阶的辨识
前面所讨论的系统辨识方法,都是假定模型的阶次是已知的,因此仅仅要求估计差分方程的系数。
但实际上,系统的阶次是很难被准确知道的。
因为对阶次的理解程度是直接与一个线性差分方程的准确结构有关的,所以有关阶次的确定也可以称为系统结构的确定。
经验指出,一个模型的阶次不准,就可能在控制系统设计时发生严重问题。
故在辨识过程中,模型的阶次是否合适是必须加以检验的。
一般阶的方法中,常用的有这么几种:
零极点相消法、目标函数法和F检验法。
下面只介绍其中的目标函数法。
当我们用不同阶的模型给系统的输入——输出观测数据进行最小二乘拟合时,会得到不同的估计误差:
因此利用J极小化确定阶是很自然的。
实验表明,假设模型具有大于1而小于
的阶n,当n取1,2,…时,若随着n的增加,在
(阶的估计量)-1时,J最后一次出现陡峭的下降,往后
就近似地保持不变或者只有微小的下降(见下图),则取
。
也就是说,模型阶次的确定可以直接依次计算阶次n=1,2,…时的最小二乘估计
以及相应的损失函数
,然后选择当
下降不明显时的阶次作为合适的模型阶次n,这种方法也叫确定阶的估计准则方法,有很广的应用。
J
四、实验内容
1.用递推最小二乘法(RLS)法辨识对象数学模型。
2.对象阶的辨识。
五、实验要求
1.熟悉系统辨识中的相关内容。
2.掌握Matlab或C语言等进行系统辨识仿真研究的一般步骤。
3.实验前基本应完成相关的编程任务,实验时调试相应程序。
4.修改相应参数与随机噪声幅度,观察并分析结果。
5.软件包人机界面的开发与设计。
(选做)
六、实验步骤
1.首先要熟悉一下MATLAB的运行环境:
1)File->New->M-File打开M文件编辑窗口
2)输入自己编写的程序
3)点击run按钮,如果程序出错则调试程序,如果运行正常的话则观察程序的运行结果
2.用递推最小二乘法(RLS)法辨识对象数学模型
在这个实验中,我们采用以下模型进行仿真:
(5)
其中u[k]是幅值为1的PRBS信号输入,e[k]是白噪声,即(0,1)的正态分布序列,它的方差时可以调整的。
这个系统的采样值y(k)和u(k)作为已知数据,采用实验一的最小二乘法估计这个系统的参数。
下面是递推最小二乘法的流程图:
相关程序如下:
%RLS
clear%清理工作间变量
L=15;%M序列的周期
y1=1;y2=1;y3=1;y4=0;%四个移位寄存器的输出初始值
fori=1:
L;%开始循环,长度为L
x1=xor(y3,y4);%第一个移位积存器的输入是第3个与第4个移位积存器的输出的“或”
x2=y1;%第二个移位积存器的输入是第3个移位积存器的输出
x3=y2;%第三个移位积存器的输入是第2个移位积存器的输出
x4=y3;%第四个移位积存器的输入是第3个移位积存器的输出
y(i)=y4;%取出第四个移位积存器幅值为"0"和"1"的输出信号,
ify(i)>,u(i)=;%如果M序列的值为"1"时,辨识的输入信号取“-0.03”
elseu(i)=;%当M序列的值为"0"时,辨识的输入信号取“0.03”
end%小循环结束
y1=x1;y2=x2;y3=x3;y4=x4;%为下一次的输入信号做准备
end%大循环结束,产生输入信号u
figure
(1);%第1个图形
stem(u),gridon%以径的形式显示出输入信号并给图形加上网格
z
(2)=0;z
(1)=0;%取z的前两个初始值为零
fork=3:
15;%循环变量从3到15
z(k)=*z(k-1)*z(k-2)+u(k-1)+*u(k-2);%给出理想的辨识输出采样信号
end
%RLS递推最小二乘辨识
c0=[]';%直接给出被辨识参数的初始值,即一个充分小的实向量
p0=10^6*eye(4,4);%直接给出初始状态P0,即一个充分大的实数单位矩阵
E=;%相对误差E=
c=[c0,zeros(4,14)];%被辨识参数矩阵的初始值及大小
e=zeros(4,15);%相对误差的初始值及大小
fork=3:
15;%开始求K
h1=[-z(k-1),-z(k-2),u(k-1),u(k-2)]';x=h1'*p0*h1+1;x1=inv(x);%开始求K(k)
k1=p0*h1*x1;%求出K的值
d1=z(k)-h1'*c0;c1=c0+k1*d1;%求被辨识参数c
e1=c1-c0;%求参数当前值与上一次的值的差值
e2=e1./c0;%求参数的相对变化
e(:
k)=e2;%把当前相对变化的列向量加入误差矩阵的最后一列
c0=c1;%新获得的参数作为下一次递推的旧参数
c(:
k)=c1;%把辨识参数c列向量加入辨识参数矩阵的最后一列
p1=p0-k1*k1'*[h1'*p0*h1+1];%求出p(k)的值
p0=p1;%给下次用
ife2<=Ebreak;%若参数收敛满足要求,终止计算
end%小循环结束
end%大循环结束
c%显示被辨识参数
e%显示辨识结果的收敛情况
%分离参数
a1=c(1,:
);a2=c(2,:
);b1=c(3,:
);b2=c(4,:
);ea1=e(1,:
);ea2=e(2,:
);eb1=e(3,:
);eb2=e(4,:
);
figure
(2);%第2个图形
i=1:
15;%横坐标从1到15
plot(i,a1,'r',i,a2,':
',i,b1,'g',i,b2,':
')%画出a1,a2,b1,b2的各次辨识结果
title('ParameterIdentificationwithRecursiveLeastSquaresMethod')%图形标题
figure(3);%第3个图形
i=1:
15;%横坐标从1到15
plot(i,ea1,'r',i,ea2,'g',i,eb1,'b',i,eb2,'r:
')%画出a1,a2,b1,b2的各次辨识结果的收敛情况
title('IdentificationPrecision')%图形标题
注:
同样这个程序使用的输出信号也没有噪音,所以辨识的结果没有误差,请同学们在输出信号中加入噪音,再使用RLS对其辨识,观察辨识结果,进行分析。
2.同样采用这个模型采用MATLAB或者C语言进行阶的辨识:
其中u[k]是幅值为1的PRBS信号输入,e[k]是白噪声,即(0,1)的正态分布序列,它的方差时可以调整的。
这个系统的采样值y(k)和u(k)作为已知数据,采用实验一的最小二乘法估计这个系统的参数。
令模型的阶次分别为n=1,2,3,其J值如下表所示。
从表中看出,由
到
,J发生显著的变化。
而由
到
,J没有多大的变化,故可确定这系统的阶次
辨识的结果如下,具体编程由同学们来实现。
噪声
水平
损失函数J
n=1
n=2
n=3
——
七、实验报告要求
1、整理分析实验结果与程序,并打印之。
2、小结调试程序的方法,并提出改进意见。
3、上交相关软盘或将程序与电子文档通过EMAIL发给老师。
八.实验思考题:
1、用C语言变成实现递推最小二乘法和对象阶的辨识的编程。
2、用F检验法来进行对象阶的辨识。
3、修改相应参数与随机噪声幅度,观察并分析结果
4、编制系统辨识的软件包,制作良好的用户界面。
(选作)
5、自己可选取一个具体的对象(如某化工厂的加热炉)进行建模。
6、小结调试程序的方法,并提出改进意见。