《系统辨识matlab最小二乘法.doc》由会员分享,可在线阅读,更多相关《系统辨识matlab最小二乘法.doc(3页珍藏版)》请在金锄头文库上搜索。
1、一、 实验题目:最小二乘法在系统辨识中的应用二、 实验目的 1.掌握系统辨识的理论、方法及应用 2.熟练Matlab下最小二乘法编程 3.掌握M序列产生方法三、 实验设备1、 硬件设备:计算机配置,P4、32位CPU、512M内存2、 软件设备: windows xp操作系统 、matlab6.5软件包四、 实验原理最小二乘理论是有高斯(K.F.Gauss)在1795年提出:“未知量的最大可能值是这样一个数值,它使各次实际观测值和计算值之间的差值的平方乘以度量其精度的数值以后的和最小。”。单输入单输出离散时间动态系统差分方程为:其中Z(k)为输出变量,u(k)为输入变量,e(k)为偏差。上式可
2、以表示为各参数用矩阵表示(1) (2)其中l为所需要采集的点数。 (3) (4)Z=H*+E,E=Z-H*,根据最小二乘理论E必须最小对上式进行求导,推出 根据表达式带入(1)(2)(4)即可求出a1.anb1.bn。五、 实验代码以及实验结果 m=20; %置M序列总长度y1=1;y2=1;y3=1;y4=0;for i=1:m x1=xor(y3,y4);%异或运算x2=y1;x3=y2;x4=y3; if y4=0; u(i)=1; else u(i)=-1; endy1=x1;y2=x2;y3=x3;y4=x4;endz=zeros(21,1);%定义输出观测值的长度21行*1列的0矩
3、阵ZL=zeros(19,1);%定义输出观测值的长度19行*1列的0矩阵for k=3:21 z(k)=-1.5*z(k-1)-z(k-2)+u(k-1)+3*u(k-2) ;%用理想输出值作为观测值ZL(k-2)=z(k);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) %画三行一列图
4、形窗口中的第三个图形%stem(z),grid %画出输出观测值z的图形,并显示坐标网格for m=2:20 HL=-z(m) -z(m-1) u(m) u(m-1); for n=1:4; H(m-1),n)=HL(n); endendc1=H*H; c2=inv(c1); c3=H*ZL; c=c2*c3 a1=c(1), a2=c(2), b1=c(3), b2=c(4)实验结果:c = 1.5000 1.0000 1.0000 3.0000a1 = 1.5000a2 = 1.0000b1 = 1b2 = 3.0000六、 实验结果分析通过实验结果可知所得的实验结果与待辨识的系统传递函数的系数很接近了。即代码实现了待辨识系统的辨识。但是在改变系统传递函数的系数时,系数超过一定范围系统将辨识不出来,然而改变M序列的脉冲个数后范围将变化,由此可知待辨识系统的参数选择和M序列脉冲个数有关。七、 实验心得 通过本次实验掌握了M序列的产生机理,以及如何用MATLAB产生M序列。通过查帮助文档知道了如何使用循环指令以及如何产生一个随机矩阵,和全零矩阵。写代码是由于对矩阵的知识有些模糊,通过查阅资料强化了矩阵方面的一些知识。