一、实验题目:最小二乘法在系统辨识中的应用二、实验目的 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)为偏差。上式可以表示为各参数用矩阵表示(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矩阵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) %画三行一列图形窗口中的第三个图形%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 序列。通过查帮助文档知道了如何使用循环指令以及如何产生一个随机矩阵,和全零矩阵。写代码是由于对矩阵的知识有些模糊,通过查阅资料强化了矩阵方面的一些知识。