北京工商大学《系统辨识》课程实验报告(2014-20151学期)课程名称:系统辨识题目:利用相关分析法辨识脉冲响应专业班级:控制工程学生姓名:指导教师:刘刘成绩:2015年1月18日一、实验目的北京工商大学计算机与信息工程学院2014-20151学期2通过仿真实验掌握利用相关分析法辨识脉冲响应的原理和方法。二、实验内容图1为本实验的原理框图。过程传递函数为)(sG,其中Sec26TSec,3812021..,TK;)()(kzku和分别为过程的输入和输出变量;)(kv为过程测量白噪声,服从正态分布,均值为零,方差为2v,记作),(~)(20vNkv;)(kg0为过程的脉冲响应理论值,)(ˆkg为过程脉冲响应估计值,)(~kg为过程脉冲响应估计误差。过程的输入驱动采用M序列,输出受到白噪声)(kv的污染。根据过程的输入和输出数据)(),(kzku,利用相关分析算法根据输出过程的脉冲响应值)(ˆkg,并与过程脉冲响应理论值)(kg0比较,得到过程脉冲响应估计误差值)(~kg,当k时,应该有0)(~kg。图1相关分析法辨识脉冲响应原理框图三、实验要求进行方案设计,模拟过程传递函数,获得输出数据,用M序列作为辨识的输入信号,噪声采用标准正态分布的白噪声,计算互相关函数,不同值的脉冲响应估计值、脉冲响应理论值和脉冲响应估计误差,计算信噪比,画出实验流程图,用MATLAB编程实现。四、实验原理相关分析法v(k)u(k)z(k))1)(1()(21sTsTKsGy(k)北京工商大学计算机与信息工程学院2014-20151学期31、采用串联传递函数)(sG仿真21211111TsTsTTKsG//)(令211TTKK=,则)(sG的表达框图为:2、一个单输入单输出线性定常系统的动态特性可用它的脉冲响应函数g(σ)来描述。这样,只要记录x(t)、y(t)的值,并计算它们的互相关函数,即可求得脉冲响应函数g(τ)。而在系统有正常输入的情形下,辨识脉冲响应的原理图如下图所示。0()()()ytgxtd则000()11lim()()(){lim()()}TTTTxtytxtdtgxtxtdtdTT上式两端同乘,进而取时间均值,有0()()()xyxRgRd则这就是著名的维纳霍夫积分方程。0()()(),()()()()()()()()xxxyxxyxtRkRkRgRdkgRgk如果输入是,这时的自相关函数为则根据维纳霍夫积分方程可得或者白噪声11/1TsKu(k)x(k)211Ts/y(k)北京工商大学计算机与信息工程学院2014-20151学期4五、实验框图北京工商大学计算机与信息工程学院2014-20151学期5六、实验代码functionex2clc;clearall;closeall;%创建M序列Np=63;%循环周期delta_T=1;%时钟节拍a=1;%幅度M(1)=1;M(2)=0;M(3)=0;M(4)=1;M(5)=1;M(6)=0;%初始化M序列M_XuLie(Np)=0;forn=1:Nptemp=xor(M(6),M(5));if(temp==0)M_XuLie(n)=a;elseM_XuLie(n)=-a;endM(6)=M(5);M(5)=M(4);M(4)=M(3);M(3)=M(2);M(2)=M(1);M(1)=temp;end%生成M序列完毕r=3;%周期数u=repmat(M_XuLie,1,r+1);%将M序列赋给输入,作为输入信号%第一步,从u(k)得到x(k),y(k)K=120;T0=1;%采样时间T1=8.3;T2=6.2;K1=K/(T1*T2);%初始化X(k),Y(k)为0K2=1x(63)=0;y(63)=0北京工商大学计算机与信息工程学院2014-20151学期6fork=2:63*4%取得x(k)序列x(k)=exp(-T0/T1)*x(k-1)+T1*K1*(1-exp(-T0/T1))*u(k-1)+T1*K1...*(T1*(exp(-T0/T1)-1)+T0)*(u(k)-u(k-1))/T0%取得y(k)序列y(k)=exp(-T0/T2)*y(k-1)+T2*K2*(1-exp(-T0/T2))*x(k-1)+T2*K2...*(T2*(exp(-T0/T2)-1)+T0)*(x(k)-x(k-1))/T0end%获取没有白噪声时候输出完毕%作图figure(1);plot(u,'r');holdon;plot(x,'k');plot(y,'b');legend('u(k)','x(k)','y(k)');%第二步,将白噪声添加入输出信号%产生白噪声信号vfangcha=0.5;%随意指定的方差v=fangcha*randn(1,63*4);%信号叠加,输出实际信号z(k)z=y+v;figure(2);%打印无白噪声污染信号plot(y,'b');holdon;%打印白噪声信号plot(v,'m');%打印白噪声污染后的信号plot(z,'k');legend('y(k)','v(k)','z(k)');%计算Rmz(k)fork=1:NpRmz(k)=0;%初始化为0fori=(Np+1):((r+1)*Np)Rmz(k)=Rmz(k)+u(i-k)*z(i);endRmz(k)=Rmz(k)/(r*Np);end%计算cc=-Rmz(Np-1);%计算脉冲响应估计值g1g1=Np*(Rmz+c)/((Np+1)*a^2*delta_T);%计算理论脉冲g0北京工商大学计算机与信息工程学院2014-20151学期7fork=1:Npg0(k)=K/(T1-T2)*(exp(-k*delta_T/T1)-exp(-k*delta_T/T2));end%计算脉冲响应估计误差delta_gdelta_g=sqrt(sum((g0-g1).^2)/sum(g0.^2));figure(3);plot(g0,'k');holdon;plot(g1,'r');%axis([0,100,0,10]);legend('脉冲响应理论值g0(k)','脉冲响应估计值g1');七、实验结果1、输入u(k),中间输入x(k),无干扰输入(k)2、白噪声标准差为1.5时,理想输出y(k),带干扰的输出z(k),干扰v(k)北京工商大学计算机与信息工程学院2014-20151学期83、输入白噪声标准差为1.5,周期数r为3时,脉冲响应理论值与估计值:脉冲响应估计误差:0.0467八、实验结论1、根据维纳-霍夫积分方程,只要记录x(t)、y(t)的值,并计算它们的互相关函数,即可求得脉冲响应函数;2、通过仿真,看到白噪声方差越大,实际输出结果的偏差也就越大;3、周期数越大脉冲响应的估计值与理论值越接近,同时会增大数据量。可以证明当k很大时,误差趋于0。