Matlab的自相關函式corr

2021-08-29 14:03:38 字數 1378 閱讀 9104

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

matlab中的引數都是以陣列的形式儲存的,標量可以看作是一維陣列。我們採用序列x = [1, 3, 5]作為實驗物件,經過xcorr()函式運算,分析結果:

xcorr()

x = [1 3 5]

x =

1 3 5
[a,b] = xcorr(x)

a =

5 18 35 18 5
b =

-2 -1 0 1 2
也許你對這個結果感到困惑,不急,待我慢慢道來。計算時先進行b的計算,用序列x中的元素的序號互相做減法,可以得到的所有值的可能集合,按照從小到大順序排列後就得到了b;然後分別根據序號的「差」的情況計算序列a:

當b(1)=-2時,只有資料(1, 5)作差可以得到,即序號1和序號3的差,因此計算a(1)=15=5;

當b(2)=-1時,涉及到了序號對應的(3, 1)和序號(5, 3),所以計算a(2)=31+53=18;

當b(3)=0時,涉及到了序號對應的(1, 1), (3, 3)和(5, 5),因此計算a(3)=11+33+55=35;

當b(4)=1時,涉及到了序號對應的(3, 1)和(5, 3),計算a(4)=31+53=18;

當b(5)=2時,涉及到了序號對應的(5, 1)(後面的資料的序號減去前面資料的序號正好為2),計算a(5)=5*1=5

xcorr(x, 『unbiased』)

引數』unbiased』的作用在於基於預設引數時的計算結果,每個組的計算再除上該組的序號組數,比如b(1)時組數為1,記為n=1,則a(1)=1*5/n=5;b(2)時就是a(2)=18/n=18/2=9;類似等等;

xcorr(x, 『biased』)

引數』biased』的作用在於預設引數的基礎上除以序列x的長度,即a(1)=5/3;比如:

xcorr(x, 『coeff』)

此時用於求序列x的自相關序列,其結果是針對』biased』的情況進行歸一化,使得b=0時即中間的值a(3)=1,因此a(1)=5/11.6667,所有的分組資料在』biased』基礎上都通過11.6667歸一運算:

由於xcorr多用於工程上針對時間訊號取樣,但是計算時將採集到的資料一起送給matlab,因此matlab本身並不知道時間間隔,我們可以使用dt=0.1, t=b*dt,plot(t, a)進行作圖,前半部分是超前,後半部分是滯後,如:

Matlab的autocorr自相關函式

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

matlab中的xcorr 自相關函式

自 matlab中用於計算自相關函式的指令是xcorr.比如矩陣a 1 2 3 xcorr a 3.0000 8.0000 14.0000 8.0000 3.0000 自相關函式是訊號間隔的函式,間隔有正負間隔,所以n個長度的訊號,有2n 1個自相關函式值,分別描述的是不同訊號間隔的相似程度。比如,...

matlab自相關函式 隨機過程中的相關函式的作用

先看問題 1 為什麼在分析隨機過程的時候,得到隨機過程的自相關函式就終止了,不再繼續往下走了?2 考慮隨機過程 1 得到自相關函式之後能做什麼 自相關函式得到之後,自然可以得到 進行多元相關性分析之後,便可以對整個樣本函式進行分析了。2 對隨機過程的認識,需要從兩個方向進行。乙個是隨機變數 乙個是時...