我正在尝试在Matlab中对以下代码进行矢量化。我从来没有用过矩阵进行矢量化。做一些研究似乎我应该使用bsxfun
,但我很难在我的例子中理解它是如何工作的。我尝试过一些东西,但似乎无法弄明白。下面是运行并生成我想要的输出的非矢量化代码。
# W is 500 x 100 matrix
# delta is 100 x 1 vector
# alpha is scalar
for i = 1: 100
W(:,i) = W(:, i) - (alpha * delta(i));
end
任何帮助表示赞赏!感谢。
答案 0 :(得分:2)
轻松bsxfun
:
W = bsxfun(@minus, W, alpha*delta.');
此操作如下:delta
转换为行向量(.'
)并乘以标量alpha
。使用W
从bsxfun
的每一行中减去所获得的行向量。您可以将bsxfun
视为"隐式repmat
":它会根据需要多次复制行alpha*Delta.'
以匹配W
的大小;然后它进行减法(@minus
)。