在Matlab中矢量化矩阵和向量运算

时间:2014-12-06 16:12:25

标签: matlab matrix vector vectorization

我正在尝试在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

任何帮助表示赞赏!感谢。

1 个答案:

答案 0 :(得分:2)

轻松bsxfun

W = bsxfun(@minus, W, alpha*delta.');

此操作如下:delta转换为行向量(.')并乘以标量alpha。使用Wbsxfun的每一行中减去所获得的行向量。您可以将bsxfun视为"隐式repmat":它会根据需要多次复制行alpha*Delta.'以匹配W的大小;然后它进行减法(@minus)。