在MATLAB中计算两个数组的卷积

时间:2012-10-19 15:42:25

标签: matlab

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

  

y t = a 0 i = 1 p (a i ⋅y ti ),t≥p

T (最大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开始编写索引...

2 个答案:

答案 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