将两个维度随时间增加的向量相乘
Multiply two vectors with dimensions increasing along time
我有两个向量(称为 A
和 B
),长度为 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(:))
我有两个向量(称为 A
和 B
),长度为 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(:))