Matlab中的Bsxfun使用矩阵和向量的多个运算

时间:2014-12-07 03:38:43

标签: matlab matrix vector bsxfun

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

我的理由是将它分解为两个操作,然后将多个temptemp1分开,但尺寸不适用于我的解决方案?对此进行矢量化的最佳方法是什么?是否可以在一个bsxfun操作中完成所有操作?非常感谢任何帮助!

1 个答案:

答案 0 :(得分:0)

一般情况下,您需要多次使用bsxfun,因为每个bsxfun只能执行一次操作。

但在这种情况下,可以通过矩阵乘法和逐元素乘法来完成:

delta_g = ((1-z).*(W*delta)).';