| 查看: 369 | 回复: 0 | ||
[求助]
用相位变换法(PHAT)计算时延
|
|
采集到四个通道音频以后在MATLAB中用相位变换法(PHAT)处理得之间的时延,用软件可以看出四个通道的波形有却别,MATLAB中的实验结果确是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'); |
» 猜你喜欢
反铁磁体中的磁性切换:两种不同的机制已成功可视化
已经有0人回复
求标准粉末衍射卡号 ICDD 01-076-1802
已经有0人回复
物理学I论文润色/翻译怎么收费?
已经有212人回复
新西兰Robinson研究所招收全奖PhD
已经有0人回复
石墨烯转移--二氧化硅衬底石墨烯
已经有0人回复
笼目材料中量子自旋液体基态的证据
已经有0人回复
数学教学论硕士可以读数学物理博士吗?
已经有0人回复
德国亥姆霍兹Hereon中心汉堡分部招镁合金腐蚀裂变SCC课题方向2026公派博士生
已经有4人回复
澳门大学 应用物理及材料工程研究院 潘晖教授课题组诚招博士后
已经有11人回复
找到一些相关的精华帖子,希望有用哦~
零相位滤波器、傅里叶变换及逆变换滤波器
已经有4人回复
【求助】在matlab中如何用希尔伯特变换定义相位
已经有22人回复
科研从小木虫开始,人人为我,我为人人












回复此楼
点击这里搜索更多相关资源