关闭

时间序列分析的matlab自相关函数autocorr

4055人阅读 评论(0) 收藏 举报
分类:

autocorr

功能:计算并描绘时间序列的自相关函数

格式:

autocorr(Series,nLags,M,nSTDs) % 计算并绘制单变量随机时间序列的样本ACF及置信区间,如果不想绘制置信区间,则设置nSTDs=0
[ACF,lags,bounds] = autocorr(Series,nLags,M,nSTDs) % 计算并返回ACF

说明:

Series--时间序列

nLags--延迟,当nLags=[]或缺省时,计算ACF时在延迟点0、1、2、。。。、T处,T=min([20 length(Series-1)])

M--非负整数,表示在多大延迟时理论ACF为0.autocorr假设序列为MA(M),并且使用Bartlett估计方法来计算大于M的延迟的标准误差。如果M=[]或缺省,则为0,函数假设序列为高斯白噪声。

nSTDs--样本ACF估计误差的标准差。

ACF--样本自相关函数

Lags--与ACF(0,1,2,。。。,nLags)相对应的延迟

Bounds--置信区间的近似上下限,假设序列为MA(M)过程。

rng('default')                % make output reproducible使结果可复现
x = randn(1000, 1);           % 1000 Gaussian deviates ~ N(0, 1).
y = filter([1 -1 1], 1, x);   % Create an MA(2) process.创建MA(2)过程

[ACF, lags, bounds] = autocorr(y, [], 2)  % Compute the ACF with 95 percent confidence.就算95%置信度下的相关系数

autocorr(y, [], 2)            % 绘制结果


可以看到在延迟在2以后不再显著,说面这可能是一个MA(2)过程。

Note:此函数在判断MA过程时常用。



crosscorr

功能:计算并描绘两时间序列的互相关函数

格式:

crosscorr(Series1,Series2,nLags,nSTDs)

[ACF,lags,bounds] = crosscorr(Series1,Series2,nLags,nSTDs)

说明:

参数具体说明同autocorr函数

% 创建100个高斯分布的元素的时间序列

rng('default')                % make output reproducible
x = randn(100, 1);       % 100 Gaussian deviates, N(0, 1)

% 创建上面序列的延迟副本

y = lagmatrix(x, 4);    % Delay it by 4 samples

y(isnan(y)) = 0;

% 计算XCF互相关函数

[XCF, Lags, Bounds] = crosscorr(x, y);

crosscorr(x, y)

image

可以看到延迟在4处很显著。

Note:在信号处理中经常要研究两个信号的相似性,或研究一个信号经过一段延迟后与自身的相似性,以实现信号的检测、识别与提取等。相关函数是描述随机信号的重要统计量,有着广泛的用途,例如噪声中信号的检测、信号中隐含周期性的检测、信号相关性的检测、信号时延长度的测量等。


0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:10647次
    • 积分:260
    • 等级:
    • 排名:千里之外
    • 原创:15篇
    • 转载:7篇
    • 译文:0篇
    • 评论:0条