apple0842 发表于 2011-11-29 16:19

迭代法求时间延迟

急求各位大侠帮忙!不胜感激!
下面是公式:
   
其中,τ是要估计的时间延时,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=;
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]

chidaodexue123 发表于 2011-12-28 17:46

回复 1 # apple0842 的帖子

是不是不收敛呢

ChaChing 发表于 2011-12-29 23:04

抱歉, 个人水平/时间有限, 仅能建议看下
5.建议提问的网友分清 编程问题 和 专业问题 http://forum.vibunion.com/thread-36746-1-1.html
6.提问的智慧!!!!(发帖前请认真阅读) http://forum.vibunion.com/thread-21991-1-1.html
页: [1]
查看完整版本: 迭代法求时间延迟