将两个维度随时间增加的向量相乘

Multiply two vectors with dimensions increasing along time

我有两个向量(称为 AB),长度为 N。然后我需要将它们相乘,但作为一个 "integration" 过程。这意味着我必须先乘 A(1)*B(1),然后乘 A(1:2)*B(1:2),直到 A(1:N)*B(1:N)。 booth 向量相乘的结果是一个数字,因为 B 是一个列向量。我用 for 循环完成了它:

for k = 1:N
    C(k) = A(1:k) * B(1:k).';
 end

但我想问你这是否是最好的解决方案,或者还有其他更省时的选择,因为 N 非常大(大约 110,000

C = cumsum(A.*B)

没有 for 循环做同样的事情。正如 EBH 在评论中建议的那样,如果您不确定 A 和 B 是否具有相同的方向,则使用

C = cumsum(A(:).*B(:))