乘以两个矩阵的总和

时间:2015-11-17 05:30:36

标签: matlab matrix

我有矩阵e

e =

 1     1     1     2     3
 1     3     3     2     2
 1     1     1     1     1

我还有另一个三维矩阵:

z=cat(3,z1,z2,z3)

z1z2z3类似于:

z1 =

 2     3     4     0     6
 6     7     8     9     0
 2     3     4     5     6

z2 =

 4     6     7     8     9
 2     3     4     5     0
 1     1     0     0     0

z3 =

 4     4     6     7     0
 0     0     9     8     1
 1     1     3     1     1

我想计算e乘以z的结果总和,以便在e的每个元素中1e乘以至z1和矩阵e的每个元素2e乘以z2以及矩阵e的每个元素3e乘以z3

因此,我想要结果矩阵:

result = [ 2 3 4 8 0;
           6 0 9 5 0; 
           2 3 4 5 6]

然后,矩阵元素的总和,即sum(sum(result))

1 个答案:

答案 0 :(得分:2)

您可以使用bsxfun -

result = sum(bsxfun(@times,bsxfun(@eq,e,permute(1:3,[1 3 2])),z),3)

如果您想直接获取sum(sum(result)) -

final_result = reshape(bsxfun(@eq,e,permute(1:3,[1 3 2])),1,[])*z(:)