Cross-correlation in matlab without using the inbuilt function?

后端 未结 3 2006
暗喜
暗喜 2020-12-06 02:36

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 corr

3条回答
  •  轻奢々
    轻奢々 (楼主)
    2020-12-06 03:31

    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.

    Example:

    a=rand(5,1);
    b=rand(5,1);
    corrLength=length(a)+length(b)-1;
    
    c=fftshift(ifft(fft(a,corrLength).*conj(fft(b,corrLength))));
    

    Compare results:

    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
    

提交回复
热议问题