【发布时间】:2020-04-23 19:51:48
【问题描述】:
我在 Octave 中处理一些基本的矢量化操作。
假设我实例化了一个 10*10 矩阵 A。
A = magic(10)
我还实例化了一个向量 x。 x = [1; 2; 3; 4; 5; 6; 7; 8; 9; 10]
我想使用向量化操作,而不是 for 循环来填充空向量 e。
e = zeros(10,1)
for i = 1:10
for j = 1:10
v(i) = v(i) + A(i, j) * x(j);
end
end
我研究了有关矢量化的 octave 文档第 19 章,我相信唯一的答案是 v = A * x。但我不确定是否存在其他选项来矢量化这个循环。
【问题讨论】:
-
v = A * x有什么问题?看起来是一个完美的解决方案。 -
当然,但我是对的,这将是唯一的解决方案?根据 octave 文档,它会是。
-
还有
sum(A.*x.', 2),它使用元素乘法与broadcasting。但是矩阵乘法可能会快一点,而且看起来更干净
标签: matlab loops vectorization octave