24小时热门版块排行榜    

查看: 1240  |  回复: 0

cb123123

新虫 (小有名气)

[求助] 相位变换法计算时延

采集到四个通道的音频信号后利用MATLAB进行处理,使用相位变换法(PHAT)计算时延,可是得出来的结果却都是0,程序如下求高手指点
a=wavread('KinectAudio 211');
b=wavread('KinectAudio 212');
c=wavread('KinectAudio 213');
d=wavread('KinectAudio 214');
l1=length(a);
e=1;
l2=e*l1;
signal=zeros(l2,1);
signal1=zeros(l2,1);
signal2=zeros(l2,1);
signal3=zeros(l2,1);
for m=1:e;
for n=1:l1;
signal(n+(m-1)*l1)=a(n);
signal1(n+(m-1)*l1)=b(n);
signal2(n+(m-1)*l1)=c(n);
signal3(n+(m-1)*l1)=d(n);
end
end
signallength=length(signal);
p=1;
for n=1:signallength;
if 2.^n<(signallength*2);
p=p+1;
end
end
assumesignallength=2.^p;
signal4=zeros(assumesignallength,1);
signal5=zeros(assumesignallength,1);
signal6=zeros(assumesignallength,1);
signal7=zeros(assumesignallength,1);
for n=1:signallength;
signal4(n)=signal(n);
signal5(n)=signal1(n);
signal6(n)=signal2(n);
signal7(n)=signal3(n);
end
cccorrelation=xcorr(signal4,signal5);
cccorrelation1=xcorr(signal4,signal6);
cccorrelation2=xcorr(signal4,signal7);
gcc=zeros((assumesignallength*2-1),1);
gcc1=zeros((assumesignallength*2-1),1);
gcc2=zeros((assumesignallength*2-1),1);
phatfilter=zeros((assumesignallength*2-1),1);
phatfilter1=zeros((assumesignallength*2-1),1);
phatfilter2=zeros((assumesignallength*2-1),1);
crossspectrum=fft(cccorrelation);
crossspectrum1=fft(cccorrelation1);
crossspectrum2=fft(cccorrelation2);
for n=1assumesignallength*2-1);
phatfilter(n)=abs(crossspectrum(n));
phatfilter1(n)=abs(crossspectrum1(n));
phatfilter2(n)=abs(crossspectrum2(n));
gcc(n)=crossspectrum(n)/phatfilter(n);
gcc1(n)=crossspectrum1(n)/phatfilter1(n);
gcc2(n)=crossspectrum2(n)/phatfilter2(n);
end
gcccorrelation=ifft(gcc);
gcccorrelation1=ifft(gcc1);
gcccorrelation2=ifft(gcc2);
for n=1assumesignallength*2-1);
gcccorrelation(n)=abs(gcccorrelation(n));
gcccorrelation1(n)=abs(gcccorrelation1(n));
gcccorrelation2(n)=abs(gcccorrelation2(n));
end
[gccmaximum,gcctime]=max(gcccorrelation);
[gccmaximum1,gcctime1]=max(gcccorrelation1);
[gccmaximum2,gcctime2]=max(gcccorrelation2);
gccestimation=abs(assumesignallength-gcctime);
gccestimation1=abs(assumesignallength-gcctime1);
gccestimation2=abs(assumesignallength-gcctime2);
gccestimation,gccestimation1,gccestimation2
lag=zeros((assumesignallength*2-1),1);
for n=1assumesignallength*2-1);
lag(n)=assumesignallength-n;
end
subplot(3,1,1);
plot(lag,gcccorrelation,'b')
axis([-inf inf -inf inf]);
legend('MIC12');
subplot(3,1,2);
plot(lag,gcccorrelation1,'r')
axis([-inf inf -inf inf]);
ylabel('cross-correlation');
legend('MIC13');
subplot(3,1,3);
plot(lag,gcccorrelation2,'g')
axis([-inf inf -inf inf]);
legend('MIC14');
xlabel('time lag');
回复此楼

» 猜你喜欢

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

智能机器人

Robot (super robot)

我们都爱小木虫

找到一些相关的精华帖子,希望有用哦~

科研从小木虫开始,人人为我,我为人人
相关版块跳转 我要订阅楼主 cb123123 的主题更新
信息提示
请填处理意见