我有矩阵e
:
e =
1 1 1 2 3
1 3 3 2 2
1 1 1 1 1
我还有另一个三维矩阵:
z=cat(3,z1,z2,z3)
z1
,z2
和z3
类似于:
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
的每个元素中1
,e
乘以至z1
和矩阵e
的每个元素2
,e
乘以z2
以及矩阵e
的每个元素3
,e
乘以z3
。
因此,我想要结果矩阵:
result = [ 2 3 4 8 0;
6 0 9 5 0;
2 3 4 5 6]
然后,矩阵元素的总和,即sum(sum(result))
。
答案 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(:)