| 查看: 1240 | 回复: 0 | ||
[求助]
相位变换法计算时延
|
|
采集到四个通道的音频信号后利用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=1 assumesignallength*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=1 assumesignallength*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=1 assumesignallength*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'); |
» 猜你喜欢
实验室接单子
已经有4人回复
全日制(定向)博士
已经有4人回复
假如你的研究生提出不合理要求
已经有6人回复
对氯苯硼酸纯化
已经有3人回复
求助:我三月中下旬出站,青基依托单位怎么办?
已经有12人回复
不自信的我
已经有12人回复
所感
已经有4人回复
论文终于录用啦!满足毕业条件了
已经有28人回复
要不要辞职读博?
已经有7人回复
北核录用
已经有3人回复
找到一些相关的精华帖子,希望有用哦~
零相位滤波器、傅里叶变换及逆变换滤波器
已经有4人回复
【求助】在matlab中如何用希尔伯特变换定义相位
已经有22人回复
科研从小木虫开始,人人为我,我为人人












assumesignallength*2-1);
回复此楼
点击这里搜索更多相关资源