我正在尝试使用bsxfun
对一些matlab操作进行矢量化。查看bsxfun
文档,看起来我一次只能执行两个操作。但我正在尝试的操作有一些操作。
# delta_g is 100 X 1
# z is 100 X 1
# W is 100 X 10
# delta 10 X 1
for j = 1:100
delta_g(j) = (1 - z(j)) * (W(j,:) * delta);
end
以下是我尝试使用的代码。
temp = bsxfun(@times, W, delta.');
temp1 = 1 - z;
我的理由是将它分解为两个操作,然后将多个temp
和temp1
分开,但尺寸不适用于我的解决方案?对此进行矢量化的最佳方法是什么?是否可以在一个bsxfun
操作中完成所有操作?非常感谢任何帮助!
答案 0 :(得分:0)
一般情况下,您需要多次使用bsxfun
,因为每个bsxfun
只能执行一次操作。
但在这种情况下,可以通过矩阵乘法和逐元素乘法来完成:
delta_g = ((1-z).*(W*delta)).';