马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?我要加入
x
急求各位大侠帮忙!不胜感激!
下面是公式:
其中,τ是要估计的时间延时,y1(t)和y2(t)是两列信号,其中y2(t)可以看作y1(t)的延时,k表示第k个窗口,Tw表示窗口长度,w0是已知的,arg表示取后面括号里的相角,l指迭代次数。 下面是我编写的程序: ra=JDH_pre(1:10:end,10)'; rb=JDH_post(1:10:end,10)';
rbset = buffer(rb,win_len,win_lap,'nodelay');
time=zeros(1,size(rbset,2));
%time是指公式中的时间延迟 t_old=0;
%迭代的初始值
for k=1:size(rbset,2);
t_start=1+(k-1)*(win_len-win_lap);
t_end=t_start+win_len-1;
if t_end>size(ra,2)
ra=[ra zeros(t_end-size(ra,2))];
end
for n=1:N
t_new=round(t_old/Ts1);
%下面是对公式中的积分项进行的插值,用的是最近邻插值。
for i=1:win_len
if
t_end+i-1+t_new>size(ra,2)
ra_new(t_start+i-1)=ra(t_end);
else
ra_new(t_start+i-1)=ra(t_start+i-1+t_new);
end
end
raa=ra_new(t_start:t_end);
rbb=rbset(:,k)';
F=sum(raa.*conj(rbb));
F1=F.*exp(j*w0*t_new*Ts1);
if k==1
t_n(1)=0;
else
t_n(1)=time(k-1);
end
t_n(n+1)=t_n(n)-(1/w0)*angle(F1);
t_old=t_n(n+1);
end
time(k)=t_n(N+1);
end
我现在遇到的问题是: 1.
在迭代过程中,迭代的值应该是趋于一个稳定的值,但是我的迭代结果是震荡的。 Ps:最近邻插值是这样的: a=s(kT) b=s(kT+τ) 则 b=ak+[τ/T]
|