利用相关分析法辨识脉冲响应
自1205 刘彬 41251141
1 实验方案设计
1.1 生成输入数据和噪声
用M序列作为辨识的输入信号,噪声采用标准正态分布的白噪声。 生成白噪声时,首先利用乘同余法生成U[0,1]均匀分布的随机数,再利用U[0,1]均匀分布的随机数生成标准正态分布的白噪声。 1.2 过程仿真
模拟过程传递函数G(s),获得输出数据y(k)。G(s)采取串联传递函数仿真,
G(s)?K11,用M序列作为辨识的输入信号。
11T1T2s?s?T1T21.3 计算互相关函数
1RMz(k)?rNp(r?1)Npi?Np?1?u(i?k)z(i)
其中r为周期数,i?Np?1表示计算互相关函数所用的数据是从第二个周期开始的,目的是等过程仿真数据进入平稳状态。
1.4 计算脉冲响应估计值、脉冲响应理论值、脉冲响应估计误差
?(k)?脉冲响应估计值g(Np?R?1)a?t2NpMz(k)?RMz(Np?1)
?脉冲响应理论值g0(k)?Ke?k?t/T1?e?k?t/T2 T1?T2?? - 1 -
脉冲响应估计误差
?g???gk?1Np0?(k)? (k)?g20??gk?1Np(k)?21.5 计算噪信比
信噪比??
?y(k)?y?2?v(k)?v?2
2 编程说明
M序列中,M序列循环周期取
Np?26?1?63,时钟节拍?t=1Sec,幅度a?1,
6515G(s)采样时间T0F(s)?s?s?1。特征多项式为白噪声循环周期为2?32768。
设为1Sec,K?120, T1?8.3Sec, T2?6.2Sec
3 源程序清单
3.1 均匀分布随机数生成函数
function sita=U(N)
%生成N个[0 1]均匀分布随机数 A=179; x0=11; M=2^15; for k=1:N x2=A*x0;
x1=mod(x2,M); v1=x1/(M+1); v(:,k)=v1; x0=x1; end sita=v; end
3.2 正态分布白噪声生成函数
function v=noise(aipi)
%生成正态分布N(0,sigma)
- 2 -
sigma=1; %标准差 for k=1:length(aipi) ksai=0; for i=1:12
temp=mod(i+k,length(aipi))+1; ksai=ksai+aipi(temp); end
v(k)=sigma*(ksai-6); end end
3.3 M序列生成函数
function [Np r M]=createM(n,a)
%生成长度为n的M序列,周期为Np,周期数为r x=[1 1 1 1 1 1]; %初始化初态 for i=1:n y=x;
x(2:6)=y(1:5);
x(1)=xor(y(5),y(6)); U(i)=y(6); end M=U*a;
lenx=length(x); Np=2^lenx-1; r=n/Np; end
3.4 过程仿真函数
function y=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; for k=2:n
x(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);
- 3 -
end end
3.5 相关函数计算函数
function R_Mz=RMz(Np,r,u,z) r=r-1;
y=zeros(1,Np); for k=1:Np y(k)=0;
for i=Np+1:(r+1)*Np
y(k)=y(k)+u(i-k)*z(i); end
y(k)=y(k)/(r*Np); end
R_Mz=y; end 3.5 主函数
function [og yita]=main(time) % 脉冲响应估计误差 og % 噪信比yita N=time*63;
K=120; T1=8.3; T2=6.2; T0=1; a=1; sita=U(N); %生成[0 1]均匀分布随机数
v=noise(sita); %利用aipi生成正态分布白噪声 [Np r u]=createM(N,a); %生成长度为N的M序列 y=createy(u,K,T1,T2,T0); %利用M序列驱动,生成y z=y+v;
R_Mz=RMz(Np,r,u,z); %计算相关函数 % 计算脉冲响应估计值 g_k=zeros(1,Np); for k=1:Np
g_k(1,k)=(R_Mz(1,k)-R_Mz(Np-1))*Np/((Np+1)*a*a*T0); end
% 计算脉冲响应理论值 Eg=zeros(1,Np); for k=1:Np
Eg(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); %计算信号方差
- 4 -
yita=sqrt(oy/ov); %计算信噪比End 3.5 画图函数1
%mainPlot.m figure(1) for n=4:40
[og yita]=main(n); y1(n)=og; end
y1=y1(4:40); plot([4:40],y1); xlabel('周期数');
ylabel('脉冲响应估计误差');
figure(2) for n=4:40
[og yita]=main(n); y2(n)=yita; end
y2=y2(4:40); plot([4:40],y2); xlabel('周期数'); ylabel('噪信比'); 3.5 画图函数2
%mainPlot2.m N=252;
K=120; T1=8.3; T2=6.2; T0=1; a=1; sita=U(N); %生成[0 1]均匀分布随机数
v=noise(sita); %利用aipi生成正态分布白噪声 [Np r u]=createM(N,a); %生成长度为N的M序列 y=createy(u,K,T1,T2,T0); %利用M序列驱动,生成y z=y+v;
R_Mz=RMz(Np,r,u,z); %计算相关函数 % 计算脉冲响应估计值 g_k=zeros(1,Np); for k=1:Np
g_k(1,k)=(R_Mz(1,k)-R_Mz(Np-1))*Np/((Np+1)*a*a*T0); end
% 计算脉冲响应理论值 Eg=zeros(1,Np); for k=1:Np
Eg(1,k)=K/(T1-T2)*(exp(-k*T0/T1)-exp(-k*T0/T2));
- 5 -
end
figure(1)
plot([1:252],y,[1:252],z);
Legend('不含噪声的输出序列','含噪声的输出序列');
figure(2)
plot([1:63],g_k,[1:63],Eg);
Legend('脉冲响应估计值','脉冲响应理论值');
4 数据记录
表1 脉冲响应估计值与脉冲响应理论值的比较
t
脉冲响应估计值 脉冲响应理论值
t
脉冲响应估计值 脉冲响应理论值
t
脉冲响应估计值 脉冲响应理论值
t
脉冲响应估计值 脉冲响应理论值
t
脉冲响应估计值 脉冲响应理论值
t
脉冲响应估计值 脉冲响应理论值
t
脉冲响应估计值 脉冲响应理论值
t
脉冲响应估计值 脉冲响应理论值
t
1 0.79 2.03 8 0.87 6.07 15 0.33 4.29 22 -0.10 2.39 29 -0.30 1.20 36 -0.44 0.58 43 -0.53 0.27 50 -0.57 0.12 57
2 0.92 3.52 9 0.80 5.94 16 0.23 3.99 23 -0.16 2.18 30 -0.31 1.09 37 -0.46 0.52 44 -0.54 0.24 51 -0.57 0.11 58
3 1.02 4.59 10 0.74 5.74 17 0.17 3.69 24 -0.19 1.98 31 -0.32 0.98 38 -0.47 0.46 45 -0.55 0.21 52 -0.56 0.10 59
4 1.04 5.32 11 0.65 5.49 18 0.10 3.40 25 -0.22 1.80 32 -0.36 0.88 39 -0.46 0.41 46 -0.55 0.19 53 -0.57 0.09 60
5 1.05 5.77 12 0.57 5.21 19 0.05 3.12 26 -0.25 1.63 33 -0.37 0.79 40 -0.49 0.37 47 -0.56 0.17 54 -0.57 0.08 61
6 1.01 6.02 13 0.50 4.91 20 -0.01 2.86 27 -0.29 1.48 34 -0.39 0.71 41 -0.51 0.33 48 -0.54 0.15 55 -0.56 0.07 62
7 0.92 6.11 14 0.42 4.60 21 -0.06 2.62 28 -0.28 1.33 35 -0.41 0.64 42 -0.52 0.30 49 -0.56 0.13 56 -0.55 0.06 63
- 6 -
脉冲响应估计值 -0.53 -0.52 -0.53 -0.52 -0.53 0.00 0.61 脉冲响应理论值 0.05 0.05 0.04 0.04 0.03 0.03 0.03
5 曲线打印
图1 信噪比随着周期数增大的变化
- 7 -
图2 脉冲响应计算误差随着周期数增大的变化
图3 加入噪声前后的输出序列比较
图4 脉冲响应理论值与估计值的比较
- 8 -
6 结果分析
6.1 信噪比脉冲响应计算误差随周期的变化
随着周期数的增加,信噪比减小,说明噪声随着周期数的增加变得更强烈,而计算误差的减小表示周期数的增加使得不确定因素的影响减小,使得计算结果与实际更接近。
6.2 加入噪声前后的输出序列比较
加入噪声前后的变化并不大,说明噪声对输出序列影响不大,在第二个周期之后输出序列变得稳定,具有周期变化。 6.3 脉冲响应理论值与估计值的比较
随着时间的增加,脉冲响应理论值与估计值全部变小,且差值变小,与实验前的理论推导一致。
7 实验体会
通过本次试验,我不仅更深层次的了解了系统辨识的内容,而且也复习和运用了matlab,为以后的工作实践打了一些基础。
- 9 -
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库利用相关分析法辨识脉冲响应在线全文阅读。
相关推荐: