matlab中的xcorr 自相關函式

2022-06-15 09:00:11 字數 2450 閱讀 5641

**自

matlab中用於計算自相關函式的指令是xcorr.比如矩陣a=[1 2 3];

xcorr(a)=3.0000 8.0000 14.0000 8.0000 3.0000

自相關函式是訊號間隔的函式,間隔有正負間隔,所以n個長度的訊號,有2n-1個自相關函式值,分別描述的是不同訊號間隔的相似程度。

比如,上面的矩陣,最後得到5個結果,其中第三個是自己和自己相乘,最後相加的結果,值最大1*1+2*2+3*3=14。而第二個和第四個分別是間隔正負1的結果也就是1*2+2*3=8,2*1+3*2=8。第1個和第五個分別是間隔正負2,也就是1*3=3,3*1=3。

xcorr求出的結果僅僅是x(n)*x(n+m)並對其求和,並沒有除以前面的n或者是n-|k|。不用這個函式也可以求

for k=0:1:p

t5=0;

for n=0:1:n-k-1

t5=t5+conj(x(n+1))*x(n+1+k);

endrxx(k+1)=t5/n;

end也可以實現,其中n為序列長度此處並未求出全部的自相關序列,只求了間隔從0到p的。

我們令rx=xcorr(x);

則rxx(k+1)=rx(n+k)/n得到。

下面是摘自一篇博文:

1. 首先說說自相關和互相關的概念。

這個是訊號分析裡的概念,他們分別表示的是兩個時間序列之間和同乙個時間序列在任意兩個不同時刻的取值之間的相關程度,即互相關函式是描述隨機訊號 x(t),y(t)在任意兩個不同時刻t1,t2的取值之間的相關程度,自相關函式是描述隨機訊號x(t)在任意兩個不同時刻t1,t2的取值之間的相關程度。

自相關函式是描述隨機訊號x(t)在任意兩個不同時刻t1,t2的取值之間的相關程度;互相關函式給出了在頻域內兩個訊號是否相關的乙個判斷指標,把兩測點之間訊號的互譜與各自的自譜聯絡了起來。它能用來確定輸出訊號有多大程度來自輸入訊號,對修正測量中接入雜訊源而產生的誤差非常有效.

事實上,在圖象處理中,自相關和互相關函式的定義如下:設原函式是f(t),則自相關函式定義為r(u)=f(t)*f(-t),其中*表示卷積;設兩個函式分別是f(t)和g(t),則互相關函式定義為r(u)=f(t)*g(-t),它反映的是兩個函式在不同的相對位置上互相匹配的程度。

那麼,如何在matlab中實現這兩個相關並用影象顯示出來呢?

dt=.1;

t=[0:dt:100];

x=cos(t);

[a,b]=xcorr(x,'unbiased');

plot(b*dt,a)

上面**是求自相關函式並作圖,對於互相關函式,稍微修改一下就可以了,即把

[a,b]=xcorr(x,'unbiased');改為[a,b]=xcorr(x,y,'unbiased');便可。

2. 實現過程:

在matalb中,求解xcorr的過程事實上是利用fourier變換中的卷積定理進行的,即r(u)=ifft(fft(f)×fft(g)),其中×表示乘法,注:此公式僅表示形式計算,並非實際計算所用的公式。當然也可以直接採用卷積進行計算,但是結果會與xcorr的不同。事實上,兩者既然有定理保證,那麼結果一定是相同的,只是沒有用對公式而已。下面是檢驗兩者結果相同的**:

dt=.1;

t=[0:dt:100];

x=3*sin(t);

y=cos(3*t);

subplot(3,1,1);

plot(t,x);

subplot(3,1,2);

plot(t,y);

[a,b]=xcorr(x,y);

subplot(3,1,3);

plot(b*dt,a);

yy=cos(3*fliplr(t)); % or use: yy=fliplr(y);

z=conv(x,yy);

pause;

subplot(3,1,3);

plot(b*dt,z,'r');

即在xcorr中不使用scaling。

3. 其他相關問題:

1) 相關程度與相關函式的取值有什麼聯絡?

相關係數只是乙個比率,不是等單位量度,無什麼單位名稱,也不是相關的百分數,一般取小數點後兩位來表示。相關係數的正負號只表示相關的方向,絕對值表示相關的程度。因為不是等單位的度量,因而不能說相關係數0.7是0.35兩倍,只能說相關係數為0.7的二列變數相關程度比相關係數為0.35的二列變數相關程度更為密切和更高。也不能說相關係數從0.70到0.80與相關係數從0.30到0.40增加的程度一樣大。

對於相關係數的大小所表示的意義目前在統計學界尚不一致,但通常按下是這樣認為的:

相關係數          相關程度

0.00-±0.30       微相關

±0.30-±0.50   實相關

±0.50-±0.80  顯著相關

±0.80-±1.00  高度相關

matlab計算自相關函式autocorr和xcorr有什麼不一樣的?xcorr是沒有將均值減掉做的相關,autocorr則是減掉了均值。

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.下面介紹一下,該過程...

Matlab的autocorr自相關函式

今天看了一下時間序列模型arima模型,在對資料處理的時候,需要對其進行平穩性檢驗。對序列的平穩性的檢驗有兩種檢驗方法 一種是根據時序圖和自相關圖的特徵作出判斷的圖檢驗,該方法操作簡單,應用廣泛,缺點是帶有主觀性 另一種是構造檢驗統計量進行的方法,目前最常用的方法是單位根檢驗,這個本文不作介紹。對於...

Matlab的自相關函式corr

看上去語法也不難,直接運算不就好了麼?可是運算出來的結果自己卻搞不懂,因為自己沒有多少統計的知識,於是又去巴拉數學的材料,想去搞明白xcorr函式的原理或公式。最後還是去matlab論壇找到了自己想找的答案,這裡就來分析下matlab的互相關函式xcorr。matlab中的引數都是以陣列的形式儲存的...