计算从正态分布创建的时间序列的自相关

问题描述

我从正态分布生成时间序列,然后尝试使用以下代码段绘制自相关:

ts1 = normrnd(0,0.25,1,100);
autocorrelation_ts1 = xcorr(ts1);

我期望x = 0时自相关将显示1,其余值几乎显示为0,而我在轴位置100处将得到6。

我认为这个问题适用于Matlab和Octave,但我不确定。

autocorrelation

解决方法

第一件事是您的第二行代码是错误的。我想你打算放

autocorrelation_ts1 = xcorr(ts1);

除此之外,我认为您的解决方案是正确的。最大值为100而不是0的原因是,自相关中的时间偏移0实际上发生在相关函数的第100次迭代中。换句话说,X轴上的数字与时间不对应。

要获得X轴上的时间,请将代码更改为

[autocorrelation_ts1,shifts] = xcorr(ts1);

然后

plot(shifts,autocorrelation_ts1)

关于最大值,xcorr的{​​{3}}表示在没有归一化参数的情况下调用1并不是函数的最大输出值。如果要规范化所有值都等于或小于1,请使用

[autocorrelation_ts1,shifts] = xcorr(ts1,'normalized');
,

这是对Scott答案的补充参考,这是完整的代码段,包括词干图缩放以显示最多20个班次/滞后。

[auto_ts1,lags] = xcorr(ts1);
ts_begin = ceil(size(lags,2)/2);
ts_end = ts_begin + 20;
stem(lags(ts_begin:ts_end),auto_ts1(ts_begin:ts_end)/max(auto_ts1),'linewidth',4.0,'filled')

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...