Matlab的autocorr自相關函式

2021-07-10 03:02:46 字數 1512 閱讀 7043

今天看了一下時間序列模型arima模型,在對資料處理的時候,需要對其進行平穩性檢驗。

對序列的平穩性的檢驗有兩種檢驗方法:一種是根據時序圖和自相關圖的特徵作出判斷的圖檢驗,該方法操作簡單,應用廣泛,缺點是帶有主觀性;另一種是構造檢驗統計量進行的方法,目前最常用的方法是單位根檢驗,這個本文不作介紹。

對於時序圖檢驗,根據平穩時間序列的均值和方差都為常數的性質,平穩序列的時序圖顯示該序列值始終在乙個常數附近隨機波動,而且波動的範圍有界;如果有明顯的趨勢性或者週期性那它通常不是平穩序列。

對於自相關圖檢驗,平穩序列具有短期相關性,這個性質表明對平穩序列而言通常只有近期的序列值對現時值的影響比較明顯,間隔越遠的過去值對現時值的影響越小。隨著延遲期數k的增加,平穩序列的自相關係數會比較快的衰減趨向於零,並在零附近隨機波動,而非平穩序列的自相關係數衰減的速度比較慢,這就是利用自相關圖進行平穩性檢驗的標準。

在matlab中,求自相關函式是autocorr,但是我先介紹xcorr。

參考文章和

比如矩陣a = [1 2 3 4] ;xcorr(a) = 4 11 20 30 20 11 4

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

比如,上面的矩陣,最後得到7個結果,其中第4個是自己和自己相乘,最後相加的結果,值最大1*1+2*2+3*3+4*4 = 30 。而第三個和第五個分別是間隔正負1的結果也就是1*2+2*3+3*4 = 20,2*1+3*2+4*3 = 20 。第二個和第六個分別是間隔正負2也就是1*3+2*4=11,3*1+4*2 = 11。第乙個和第七個分別是間隔正負3也就是1*4 = 4 ,4*1=4 。

而matlab中autocorr和xcorr有什麼不同呢?autocorr是對序列減去均值後做的自相關,最後又進行了歸一化。而且由於自相關本身是偶函式,autocorr只是取了以中點n為起始的後面n個序列。

clear ;

%使用autocorr函式

a = [123

4] ;

n = length(a) ;

[acf,lags,bounds] = autocorr(a,n-1) ;

subplot(2,1,1) ;

plot(lags(1:end),acf(1:end)) ;

title('autocorr求自相關') ;

%使用xcorr函式

b = a - mean(a) ;%減掉均值

[c,lags] = xcorr(b) ;

d = c ./ c(n) ;%歸一化

subplot(2,1,2) ;

plot(lags(n:end),d(n:end)) ;%取中點n為起始的後面n個序列

title('xcorr求自相關') ;

得到的函式影象一樣,如圖所示:

matlab畫圓的命令 matlab畫圓

要畫圓的話只需要將曲率設定成1就行了。注意 curvature 0.5,0.8 後面的兩個引數 0.5,0.8 分別表示兩個邊的曲率。畫乙個圓試試,輸入命令如下 rectangle position 0,0,1,1 curvature 1,1 axis equal 4.1.rectangle函式本來...

matlab畫圓的命令 matlab畫半圓

matlab畫半圓 2014 01 07 05 41 01 clear 清除所有workspace中的變數。x,y meshgrid 1 05 1 這是在打網點,自變數x和y的取值範圍都是從 1到1,每個點的間距是0.05,間距越細密圖形越精確 matlab畫圖都是通過把區間離散化為格點的方法畫圖的...

MATLAB入門(MATLAB命令)

管理會話中的命令 clc 刪除命令視窗 clear 刪除記憶體中的變數 exist 檢查變數是否存在 global 宣告變數為全域性變數 help 獲取幫助資訊 1 查詢各種算術運算子 關係運算子 邏輯運算子 2 查詢名稱準確已知的命令或檔案 3 非matlab自帶.m檔案的幫助性注釋內容 look...