0

我有以下矩阵:

X=1 2 3    

A=1 2 3  
  4 5 6  
  7 8 9  

我想要做

for each (i,j) in A  
  B(i,j) = sum(A(i,j)*x)

即 A 的每个元素都乘以向量 X,然后我们将该向量的所有 3 个元素相加。
可以在没有 for 循环的情况下完成吗?

4

2 回答 2

6

也许是这样的?

B = A.*sum(X)
于 2012-08-22T12:00:55.490 回答
1

编辑正如@HighPerformanceMark指出的那样,您可以简单地乘以 的总和X,这显然是可取的。下面是一个完全执行您想要执行的步骤的解决方案,这可能使我的解决方案对问题的非线性变体有用。

您可以将X其转换为 1×1×3 数组,并将其与 A 相乘以得到一个 3×3×3 数组,然后您可以沿第三维求和:

X = permute(X,[1,3,2]); %# make X 1*1*3

B = sum( bsxfun(@times, A, X), 3); %# multiply and sum
于 2012-08-22T12:01:34.280 回答