lebronze 发表于 2016-10-19 10:23

广义互相关求时延不同加权结果不同的问题

目前在做一个互相关求声音时延的问题,下面是matlab实现的代码。
结果的话原始互相关和ROTH加权求得的时延一样,PATH和SCOT加权求得的时延一样,但前两个和后两个的结果差距很大,还请论坛中的大牛帮我找找问题。
%% 互相关函数定时延
X1=fft(x1,2*N1-1);               
X2=fft(x2,2*N2-1);

Pxx=abs(X1);                     
Pyy=abs(X2);
Pxy=X1.*conj(X2);                  

%方法a.原始互相关函数定时延
R=ifft(Pxy);                     
R=real(R);                                       

R=fftshift(R);
c=max(abs(R));
a=find(abs(R)==c) ;%找出最大点
Rl2=fix(length(R)/2);
delay=(a-(Rl2)-1)/fs ;    %换算出信号的延迟时间?(因为fftshift将频谱移动到中间,即R/2的距离)


%方法b.加权互相关定时延                  %原始互相关,易受噪声混响等的干扰
Rxy=Pxy./(Pxx+eps);                           %ROTH加权

%Rxy=Pxy./((Pxx.*Pyy)+eps);            %SCOT加权
%Rxy=Pxy./(abs(Pxy)+eps);               %PATH加权
                                       
R2=ifft(Rxy);
R2=real(R2);
R2=fftshift(R2);                  %频谱中心对称,移到中间
c2=max(abs(R2));
a2=find(abs(R2)==c2) ;      %找出最大点

Rl2=fix(length(R2)/2);
delay2=(a2-(Rl2)-1)/fs;    %换算出信号的延迟时间
页: [1]
查看完整版本: 广义互相关求时延不同加权结果不同的问题