在Octave中,我是一个相当新手的程序员,仍然在努力弄清楚如何处理数据结构。我尝试通过以下代码使用tsa包中的acovf,得到以下错误:
>> pkg load tsa
>> parcorr = parcor(acovf(data,5));
>> parcorr
parcorr = [](250x0)有人能解释一下这是什么意思吗?如果我尝试访问结果中的单个元素,则会得到以下结果:
>> parcorr(2:5)
error: A(I): index out of bounds; value 5 out of bound 0它不应该只给我数据中的前4个高阶自相关吗?有人能解释一下发生了什么吗?
发布于 2016-06-28 06:33:08
该错误消息只是表示您试图在数组没有的位置访问该数组(例如pos。2/3在2/2数组中,或在空数组中的任何位置)。最有可能的是,在将data交给acovf之前,它并不是你想要的样子(看看numel(data)或size(data),看看它是否是你所期望的--可能是你把它搞乱了,它是空的或类似的)。
下面是一个有效的最小示例(将您的示例与之进行比较):
pkg load tsa
# with 1D data
data = sin(0:0.1:100);
numel(data)
parcorr = parcor(acovf(data,5));
plot(parcorr);
# with 2D data
data2 = [sin(0:0.1:100);cos(0:0.1:100)];
size(data2)
parcorr = parcor(acovf(data2,5));
plot(parcorr');发布于 2016-07-04 05:21:24
非常感谢你的帮助。我想我已经弄明白了问题所在。Ovtave查找的是行向量,而我提供的是acovf和parcor的列向量。一旦我把它改成了数据,它就起作用了。这真的很奇怪,Octave对向量的方向如此挑剔。
https://stackoverflow.com/questions/38062666
复制相似问题