-1-利用相关分析法辨识脉冲响应自1205刘彬412511411实验方案设计1.1生成输入数据和噪声用M序列作为辨识的输入信号,噪声采用标准正态分布的白噪声。生成白噪声时,首先利用乘同余法生成U[0,1]均匀分布的随机数,再利用U[0,1]均匀分布的随机数生成标准正态分布的白噪声。1.2过程仿真模拟过程传递函数)(sG,获得输出数据y(k)。)(sG采取串联传递函数仿真,21211111)(TsTsTTKsG,用M序列作为辨识的输入信号。1.3计算互相关函数ppNrNipMzizkiurNkR)1(1)()(1)(其中r为周期数,1pNi表示计算互相关函数所用的数据是从第二个周期开始的,目的是等过程仿真数据进入平稳状态。1.4计算脉冲响应估计值、脉冲响应理论值、脉冲响应估计误差脉冲响应估计值)1()()1()(ˆ2pMzMzppNRkRtaNNkg脉冲响应理论值21//210)(TtkTtkeeTTKkg-2-脉冲响应估计误差ppNkNkgkgkgkg120120)()(ˆ)(1.5计算噪信比信噪比22)()(vkvyky2编程说明M序列中,M序列循环周期取63126pN,时钟节拍t=1Sec,幅度1a,特征多项式为1)(56sssF。白噪声循环周期为32768215。)(sG采样时间0T设为1Sec,Sec2.6Sec,3.8,12021TTK3源程序清单3.1均匀分布随机数生成函数functionsita=U(N)%生成N个[01]均匀分布随机数A=179;x0=11;M=2^15;fork=1:Nx2=A*x0;x1=mod(x2,M);v1=x1/(M+1);v(:,k)=v1;x0=x1;endsita=v;end3.2正态分布白噪声生成函数functionv=noise(aipi)%生成正态分布N(0,sigma)-3-sigma=1;%标准差fork=1:length(aipi)ksai=0;fori=1:12temp=mod(i+k,length(aipi))+1;ksai=ksai+aipi(temp);endv(k)=sigma*(ksai-6);endend3.3M序列生成函数function[NprM]=createM(n,a)%生成长度为n的M序列,周期为Np,周期数为rx=[111111];%初始化初态fori=1:ny=x;x(2:6)=y(1:5);x(1)=xor(y(5),y(6));U(i)=y(6);endM=U*a;lenx=length(x);Np=2^lenx-1;r=n/Np;end3.4过程仿真函数functiony=createy(u,K,T1,T2,T0)n=length(u);K1=K/(T1*T2);E1=exp(-T0/T1);E2=exp(-T0/T2);x(1)=0;y(1)=0;fork=2:nx(k)=E1*x(k-1)+T1*K1*(1-E1)*u(k-1)...+T1*K1*(T1*(E1-1)+T0)*(u(k)-u(k-1))/T0;y(k)=E2*y(k-1)+T2*(1-E2)*x(k-1)...+T2*(T2*(E1-1)+T0)*(x(k)-x(k-1))/T0;u(k-1)=u(k);x(k-1)=x(k);y(k-1)=y(k);-4-endend3.5相关函数计算函数functionR_Mz=RMz(Np,r,u,z)r=r-1;y=zeros(1,Np);fork=1:Npy(k)=0;fori=Np+1:(r+1)*Npy(k)=y(k)+u(i-k)*z(i);endy(k)=y(k)/(r*Np);endR_Mz=y;end3.5主函数function[ogyita]=main(time)%脉冲响应估计误差og%噪信比yitaN=time*63;K=120;T1=8.3;T2=6.2;T0=1;a=1;sita=U(N);%生成[01]均匀分布随机数v=noise(sita);%利用aipi生成正态分布白噪声[Npru]=createM(N,a);%生成长度为N的M序列y=createy(u,K,T1,T2,T0);%利用M序列驱动,生成yz=y+v;R_Mz=RMz(Np,r,u,z);%计算相关函数%计算脉冲响应估计值g_k=zeros(1,Np);fork=1:Npg_k(1,k)=(R_Mz(1,k)-R_Mz(Np-1))*Np/((Np+1)*a*a*T0);end%计算脉冲响应理论值Eg=zeros(1,Np);fork=1:NpEg(1,k)=K/(T1-T2)*(exp(-k*T0/T1)-exp(-k*T0/T2));end%计算脉冲响应估计误差og=sqrt(norm(Eg-g_k)^2/norm(Eg)^2);ov=fangcha(v);%计算噪声方差oy=fangcha(y);%计算信号方差-5-yita=sqrt(oy/ov);%计算信噪比End3.5画图函数1%mainPlot.mfigure(1)forn=4:40[ogyita]=main(n);y1(n)=og;endy1=y1(4:40);plot([4:40],y1);xlabel('周期数');ylabel('脉冲响应估计误差');figure(2)forn=4:40[ogyita]=main(n);y2(n)=yita;endy2=y2(4:40);plot([4:40],y2);xlabel('周期数');ylabel('噪信比');3.5画图函数2%mainPlot2.mN=252;K=120;T1=8.3;T2=6.2;T0=1;a=1;sita=U(N);%生成[01]均匀分布随机数v=noise(sita);%利用aipi生成正态分布白噪声[Npru]=createM(N,a);%生成长度为N的M序列y=createy(u,K,T1,T2,T0);%利用M序列驱动,生成yz=y+v;R_Mz=RMz(Np,r,u,z);%计算相关函数%计算脉冲响应估计值g_k=zeros(1,Np);fork=1:Npg_k(1,k)=(R_Mz(1,k)-R_Mz(Np-1))*Np/((Np+1)*a*a*T0);end%计算脉冲响应理论值Eg=zeros(1,Np);fork=1:NpEg(1,k)=K/(T1-T2)*(exp(-k*T0/T1)-exp(-k*T0/T2));-6-endfigure(1)plot([1:252],y,[1:252],z);Legend('不含噪声的输出序列','含噪声的输出序列');figure(2)plot([1:63],g_k,[1:63],Eg);Legend('脉冲响应估计值','脉冲响应理论值');4数据记录表1脉冲响应估计值与脉冲响应理论值的比较t1234567脉冲响应估计值0.790.921.021.041.051.010.92脉冲响应理论值2.033.524.595.325.776.026.11t891011121314脉冲响应估计值0.870.800.740.650.570.500.42脉冲响应理论值6.075.945.745.495.214.914.60t15161718192021脉冲响应估计值0.330.230.170.100.05-0.01-0.06脉冲响应理论值4.293.993.693.403.122.862.62t22232425262728脉冲响应估计值-0.10-0.16-0.19-0.22-0.25-0.29-0.28脉冲响应理论值2.392.181.981.801.631.481.33t29303132333435脉冲响应估计值-0.30-0.31-0.32-0.36-0.37-0.39-0.41脉冲响应理论值1.201.090.980.880.790.710.64t36373839404142脉冲响应估计值-0.44-0.46-0.47-0.46-0.49-0.51-0.52脉冲响应理论值0.580.520.460.410.370.330.30t43444546474849脉冲响应估计值-0.53-0.54-0.55-0.55-0.56-0.54-0.56脉冲响应理论值0.270.240.210.190.170.150.13t50515253545556脉冲响应估计值-0.57-0.57-0.56-0.57-0.57-0.56-0.55脉冲响应理论值0.120.110.100.090.080.070.06t57585960616263-7-脉冲响应估计值-0.53-0.52-0.53-0.52-0.530.000.61脉冲响应理论值0.050.050.040.040.030.030.035曲线打印图1信噪比随着周期数增大的变化-8-图2脉冲响应计算误差随着周期数增大的变化图3加入噪声前后的输出序列比较图4脉冲响应理论值与估计值的比较-9-6结果分析6.1信噪比脉冲响应计算误差随周期的变化随着周期数的增加,信噪比减小,说明噪声随着周期数的增加变得更强烈,而计算误差的减小表示周期数的增加使得不确定因素的影响减小,使得计算结果与实际更接近。6.2加入噪声前后的输出序列比较加入噪声前后的变化并不大,说明噪声对输出序列影响不大,在第二个周期之后输出序列变得稳定,具有周期变化。6.3脉冲响应理论值与估计值的比较随着时间的增加,脉冲响应理论值与估计值全部变小,且差值变小,与实验前的理论推导一致。7实验体会通过本次试验,我不仅更深层次的了解了系统辨识的内容,而且也复习和运用了matlab,为以后的工作实践打了一些基础。