有人能说出如何在不使用内置函数xcorr和相关系数的情况下在MATLAB中对两个语音信号(每个40,000个样本)进行互相关吗?
can someone tell how to do the cross-correlation of two speech signals (each of 40,000 samples) in MATLAB without using the built-in function xcorr and the correlation coefficient?
谢谢.
推荐答案您可以使用fft进行互相关.两个向量的互相关只是它们各自的傅立叶变换的产物,其中一个是共轭的.
You can do cross-correlations using fft. The cross-correlation of two vectors is simply the product of their respective Fourier transforms, with one of the transforms conjugated.
a=rand(5,1); b=rand(5,1); corrLength=length(a)+length(b)-1; c=fftshift(ifft(fft(a,corrLength).*conj(fft(b,corrLength))));比较结果:
c = 0.3311 0.5992 1.1320 1.5853 1.5848 1.1745 0.8500 0.4727 0.0915 >> xcorr(a,b) ans = 0.3311 0.5992 1.1320 1.5853 1.5848 1.1745 0.8500 0.4727 0.0915