广义互相关求时延不同加权结果不同的问题
目前在做一个互相关求声音时延的问题,下面是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]