资源描述:
《利用相关分析法辨识脉冲响应》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、利用相关分析法辨识脉冲响应自1205刘彬412511411实验方案设计1.1生成输入数据和噪声用M序列作为辨识的输入信号,噪声采用标准正态分布的白噪声。生成白噪声时,首先利用乘同余法生成U[0,1]均匀分布的随机数,再利用U[0,1]均匀分布的随机数生成标准正态分布的白噪声。1.2过程仿真模拟过程传递函数,获得输出数据y(k)。采取串联传递函数仿真,,用M序列作为辨识的输入信号。1.3计算互相关函数其中r为周期数,表示计算互相关函数所用的数据是从第二个周期开始的,目的是等过程仿真数据进入平稳状态。1.4计算脉冲响应估计值、脉冲响应理论值、脉冲响应估计误差脉冲响应估计值脉冲响应理论
2、值-9-脉冲响应估计误差1.5计算噪信比信噪比2编程说明M序列中,M序列循环周期取,时钟节拍=1Sec,幅度,特征多项式为。白噪声循环周期为。采样时间设为1Sec,3源程序清单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)-9-sigma=1;%标准差fo
3、rk=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、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
5、(k);-9-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);%利用ai
6、pi生成正态分布白噪声[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%计算脉冲响应估计
7、误差og=sqrt(norm(Eg-g_k)^2/norm(Eg)^2);ov=fangcha(v);%计算噪声方差oy=fangcha(y);%计算信号方差-9-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(