Matlab的xcorr函數的解釋


看了MATLAB關於xcorr的help文檔沒搞清楚什么意思,只夠看到一篇不錯的文章,通過簡單事例即可了解其應用。

輸入的是一個簡單一維序列x=[1,2,3]

第一:缺省注釋項,[a,b]=xcorr(x),通過該命令計算的結果為:a=3 8 14 8 3;b=-2 -1 0 1 2.

下面介紹一下,該過程計算機是如何計算的,首先講b的計算,設一維序列的長度為N,則序列中任意兩個數據序號相減,最小值為1-N,最大值為N-1,且能取遍兩者之間的所有整數,將這些數從小到大排列得到的就是b;然后講a的計算,在缺省注釋項的情況下,a的計算是這樣的,a的每一項是對應b的每一項的

1、當b(1)=-2時,計算a(1)時只用到一組數據——(3,1)注意順序,只有這兩個數據的序號相減(后面數據的序號減去前面的)滿足b=-2,因此a(1)的計算公式為:3*1=3

2、當b(2)=-1時,計算a(2)時用到兩組數據——(2,1)和(3,2),這兩組數據的序號相減(后面數據的序號減去前面的)滿足b=-1,因此a(2)的計算公式為:2*1+3*2=8

3、當b(3)=0時,計算a(3)時用到三組數據——(1,1)、(2,2)、(3,3),這三組數據的序號相減(后面數據的序號減去前面的)滿足b=0,因此a(3)的計算公式為:1*1+2*2+3*3=14

4、當b(4)=1時,計算a(4)時用到兩組數據——(1,2)和(2,3),(讀者請對比和情況2的區別),這兩組數據的序號相減(后面數據的序號減去前面的)滿足b=1,因此a(4)的計算公式為:1*2+2*3=8

5、當b(5)=2時,計算a(4)時用到一組數據——(1,3),(讀者請對比和情況1的區別),這兩組數據的序號相減(后面數據的序號減去前面的)滿足b=2,因此a(4)的計算公式為:1*3=3

第二:注釋項為‘unbiased’,[a,b]=xcorr(x,‘unbiased’),通過該命令計算的結果為:a=3 4 4.6667 4 3;b=-2 -1 0 1 2.下面介紹計算機如何計算該過程,b的計算在四種注釋項的情況下是相同的,就不再講述了。a的計算仍是和b的每一項相對應的。

1、當b(1)=-2時,計算a(1)時只用到一組數據(記N=1)——(3,1)注意順序,只有這兩個數據的序號相減(后面數據的序號減去前面的)滿足b=-2,因此a(1)的計算公式為:(3*1)/1=3

2、當b(2)=-1時,計算a(2)時用到兩組數據(記N=2)——(2,1)和(3,2),這兩組數據的序號相減(后面數據的序號減去前面的)滿足b=-1,因此a(2)的計算公式為:(2*1+3*2)/2=4

3、當b(3)=0時,計算a(3)時用到三組數據(記N=3)——(1,1)、(2,2)、(3,3),這三組數據的序號相減(后面數據的序號減去前面的)滿足b=0,因此a(3)的計算公式為:(1*1+2*2+3*3)/3=4.6667

4、當b(4)=1時,計算a(4)時用到兩組數據(記N=2)——(1,2)和(2,3),(讀者請對比和情況2的區別),這兩組數據的序號相減(后面數據的序號減去前面的)滿足b=1,因此a(4)的計算公式為:(1*2+2*3)/2=4

5、當b(5)=2時,計算a(4)時用到一組數據(記N=1)——(1,3),(讀者請對比和情況1的區別),這兩組數據的序號相減(后面數據的序號減去前面的)滿足b=2,因此a(4)的計算公式為:(1*3)/1=3

第三:注釋項為‘biased’,[a,b]=xcorr(x,‘biased’),通過該命令計算的結果為:a= 1.0000   2.6667    4.6667    2.6667    1.0000,b=-2 -1 0 1 2。下面介紹計算機如何計算該過程,注意到本次計算用到的序列x的長度為3,記為M=3。

1、當b(1)=-2時,計算a(1)時只用到一組數據——(3,1)注意順序,只有這兩個數據的序號相減(后面數據的序號減去前面的)滿足b=-2,因此a(1)的計算公式為:(3*1)/M=1

2、當b(2)=-1時,計算a(2)時用到兩組數據——(2,1)和(3,2),這兩組數據的序號相減(后面數據的序號減去前面的)滿足b=-1,因此a(2)的計算公式為:(2*1+3*2)/M=2.6667

3、當b(3)=0時,計算a(3)時用到三組數據——(1,1)、(2,2)、(3,3),這三組數據的序號相減(后面數據的序號減去前面的)滿足b=0,因此a(3)的計算公式為:(1*1+2*2+3*3)/M=4.6667

4、當b(4)=1時,計算a(4)時用到兩組數據——(1,2)和(2,3),(讀者請對比和情況2的區別),這兩組數據的序號相減(后面數據的序號減去前面的)滿足b=1,因此a(4)的計算公式為:(1*2+2*3)/M=2.6667

5、當b(5)=2時,計算a(4)時用到一組數據——(1,3),(讀者請對比和情況1的區別),這兩組數據的序號相減(后面數據的序號減去前面的)滿足b=2,因此a(4)的計算公式為:(1*3)/M=1

第四:注釋項為‘coeff’,[a,b]=xcorr(x,‘coeff’),通過該命令計算的結果為:a= 0.2143   0.5714    1.0000    0.5714    0.2143,b=-2 -1 0 1 2,下面介紹計算機如何計算該過程,這種情況實際是將第三種情況下得到的結果進行歸一化,使得b=0時對應的值為1,a(1)=1/4.6667=0.2143;a(2)=2.6667/4.6667=0.5714,a(3)=4.6667/4.6667=1,a(4)=2.6667/4.6667=0.5714,a(5)=1/4.6667=0.2143

 

另:xcorr命令在工程上的應用通常是對時間上的采樣數據序列x進行處理,當數據點采完之后交給Matlab處理時,Matlab是不知道你的采樣時間間隔的,它僅僅根據上文所述的計算過程對輸入的數據序列x進行計算,但我們可以自己定義時間間隔,例如dt=0.01,此時t=dt*b即代表相關性計算中的時間延遲,前半部分是超前,后半部分是滯后,若R=xcorr(x,‘unbiased’),則通過命令:plot(t,R)即可得到該時域信號的自相關函數曲線。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM