我试图在MATLAB中使用这个公式从一些起始值生成一个数组:
与 T (最大t)相比,y t = a 0 +Σ i = 1 p (a i ⋅y ti ),t≥p
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开始编写索引...
答案 0 :(得分:1)
本声明
if(p>=t)
在索引表达式为
的循环中看起来很奇怪for t = p+1:T+1
这似乎保证了t>p
整个循环的持续时间。那是你打算写的吗?
编辑以回应评论
在使用此语句索引的循环中
for j = 2:p
您对a(j)
的引用如何调用a(0)
?
答案 1 :(得分: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