宋老师,我把一个声音信号作了延迟之后加上噪声,用PHAT加权和基本互相关都能得到正确的时延值,但我对这两个信号进行小波分解和重构近似信号之后,用基本互相关可以得到时延,但PHAT加权后就不能得到正确的时延了,这是为什么呢?下面附上代码和图。fs=2500/(t(end)-t(1));%采样频率 ,x是表格导入的数据,信号时间为t,长度是2500,这里上传不了表格
N=length(x);
x1=x-mean(x);%消除直流分量
x1=x1/max(abs(x1));%幅度归一化
%构造延时250个采样点,即延迟0.01S的信号x2
x2=[zeros(250,1);x1];
x2=x2([1:end-250],1);
x2=awgn(x2,15,'measured');
x1=awgn(x1,15,'measured');
%时延估计
X1=fft(x1,2*N-1);
X2=fft(x2,2*N-1);
X21=X2.*conj(X1);
R21=fftshift(real(ifft(X21)));%基本互相关
Ph21=fftshift(real(ifft(X21./abs(X21))));%PHAT加权
tt=(-N+1:N-1)/fs;%时间序列
figure(1)
subplot(2,1,1),plot(tt,R21),title('基本互相关');
subplot(2,1,2),plot(tt,Ph21),title('PHAT加权');
idx=find(R21==max(R21));%峰值检测
t1=tt(idx) %时延
%对x1,x2进行小波分解和重构
[c,l]=wavedec(x1,6,'db6');
[c2,l2]=wavedec(x2,6,'db6');
a16=wrcoef('a',c,l,'db6',6); %wrcoef重构x1的逼近信号
a26=wrcoef('a',c2,l2,'db6',6);%wrcoef重构x2的逼近信号
%对重构后的两个信号进行相关计算
A1=fft(a16,2*N-1);
A2=fft(a26,2*N-1);
A21=A2.*conj(A1);
% RA21=fftshift(real(ifft(A21)));%基本互相关
RA21=fftshift(real(ifft(A21./abs(A21))));%PHAT加权
figure(2)
plot(tt,RA21);
idx=find(RA21==max(RA21));%峰值检测
t2=tt(idx)
figure(3)
subplot(2,2,1),plot(t,x1);title('原始信号x1');
subplot(2,2,2),plot(t,x2);title('延迟0.01s后的x2');
subplot(2,2,3),plot(t,a16);title('x1的近似重构信号');
subplot(2,2,4),plot(t,a26);title('x2的近似重构信号');
-8-13 23:03 上传
-8-13 23:12 上传
-8-13 23:12 上传
-8-13 23:12 上传