利用相关分析法辨识脉冲响应
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
利用相关分析法辨识脉冲响应
自1205 刘彬 41251141
1 实验方案设计
1.1 生成输入数据和噪声
用M 序列作为辨识的输入信号,噪声采用标准正态分布的白噪声。 生成白噪声时,首先利用乘同余法生成U[0,1]均匀分布的随机数,再利用U[0,1]均匀分布的随机数生成标准正态分布的白噪声。 1.2 过程仿真
模拟过程传递函数)(s G ,获得输出数据y(k)。)(s G 采取串联传递函数仿真,
2
12111
11)(T s T s T T K s G ++=
,用M 序列作为辨识的输入信号。
1.3 计算互相关函数
∑++=-=
p
p N r N i p
Mz i z k i u rN k R )1(1
)()(1
)(
其中r 为周期数,1+=p N i 表示计算互相关函数所用的数据是从第二个周期开始的,目的是等过程仿真数据进入平稳状态。
1.4 计算脉冲响应估计值、脉冲响应理论值、脉冲响应估计误差
脉冲响应估计值[]
)1()()1()(ˆ2
--∆+=p Mz Mz
p
p
N R k R
t
a N N k g
脉冲响应理论值[]
21//2
10)(T t k T t k e e T T K
k g ∆-∆---=
脉冲响应估计误差
()()
∑∑==-=
p
p
N k N k g k g
k g
k g
1
2
1
2
)()(ˆ)(δ 1.5 计算噪信比
信噪比()()2
2
)()(v k v y k y --=η
2 编程说明
M 序列中,M 序列循环周期取
63
126=-=p N ,时钟节拍t ∆=1Sec ,幅度1=a ,
特征多项式为1)(56⊕⊕=s s s F 。白噪声循环周期为32768215=。
)(s G 采样时间0T 设为1Sec ,Sec 2.6 Sec,3.8 ,12021===T T K
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)
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);
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); %计算信号方差