1

我正在尝试使用 MATLAB 中的这个公式从一些起始值生成一个数组:

y t = a 0 + ∑<sub>i=1 p (a i ⋅ y t-i ), t ≥ p

与T (max t)相比,p是一个很小的数字。我已经能够使用两个for周期来做到这一点,但它真的很慢。有什么简单的方法吗?

提供了y的第一个p值,并且还提供了向量a(其长度为p+1)...

这是我到目前为止所拥有的,但是现在当我尝试它时,它不能 100% 工作(我认为这是因为在 MATLAB 中从 1 开始索引):

y1 = zeros(T+1, 1);
y1(1:p) = y(1:p);

for t = p+1:T+1
    value = a1(1);
    for j = 2:p+1
        value = value + a1(j)*y1(t-j+1);
    end
    y1(t) = value;
end

编辑:我解决了,我只是不习惯从 1 开始的 Matlab 索引...

4

2 回答 2

1

这个说法

    if(p>=t)

在索引表达式为的循环中看起来很奇怪

for t = p+1:T+1

这似乎可以保证t>p在整个循环期间。这就是你要写的吗?

编辑回应评论

在使用此语句索引的循环内

for j = 2:p

你做的参考是如何a(j)要求的a(0)

于 2012-10-19T16:06:33.770 回答
1
y1 = zeros(T+1, 1);
y1(1:p) = y(1:p);

for t = p+1:T+1
    value = a1(1);
    for j = 2:p+1
        value = value + a1(j)*y1(t-j+1);
    end
    y1(t) = value;
end
于 2012-10-20T09:16:24.903 回答