微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

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

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

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')

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。