xcorr是用於求解序列自相關和互相關的函數,通過help命令可以調出其具體說明,MATLAB中提供的幾種用法如下:
c =
xcorr(x,y)
c = xcorr(x)
c
=
xcorr(x,y,
'option')
c =
xcorr(x,'option')
c =
xcorr(x,y,maxlags)
c =
xcorr(x,maxlags)
c =
xcorr(x,y,maxlags,
'option')
c =
xcorr(x,maxlags,
'option')
[c,lags] =
xcorr(...)
這里只簡單的舉幾個例子作分析,注:這里只分析線性卷積和線性相關,至於圓周卷積和圓周相關不做介紹(其涉及到圓周移位,主要用於周期序列)。
其實說到相關,我們很容易想到卷積,回顧下線性卷積的幾個主要步驟
1.翻褶-2移位-3相乘-4相加(積分)
再回顧下線性相關的步驟,很容易分辨兩者的共同點和不同點
1.移位(左移右移)-2相乘-3.相加
很明顯,線性相關的步驟相比於線性卷積而言,只是少了翻褶這一步驟
(1)我們舉例自相關用法:
a=xcorr([1 2 3],[1 2 3])
a =
3 8 14 8 3
這句語句是求解序列[1 2 3]的自相關輸出,在MATLAB中式如何算的呢,下面分析
原序列 1 2 3---左右移位得到
1 2 3
1 2 3 =1x1+2x2+3x3=14
1 2 3 =2x1+3x2=8
1 2 3 =3x1=3
8 =1x2+2x3= 1 2 3
3=1x3= 1 2 3
這樣一分析就很好理解了,至於互相關,操作過程和上面是一樣的,但是需要注意的是,當個2個序列的長度不一樣時,
MATLAB會將較短的序列補0操作,補至和較長序列一樣的長度,其實這和理論上的操作也是一致的。