【问题标题】:sum of multiplying two matrices两个矩阵相乘之和
【发布时间】:2015-11-17 16:42:03
【问题描述】:

我有矩阵e:

e =

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

我还有另一个 3 维矩阵:

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 和矩阵@ 的每个元素987654334@ 即2e 乘以z2 以及矩阵e 的每个元素,即3e 乘以z3

因此,我想要结果矩阵:

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

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

【问题讨论】:

  • 嗨,到目前为止,您尝试了什么?欢迎来到 SO。这里期望的行为是人们在提出问题之前需要在代码和研究方面展示他们的努力。这不是代码编写服务。
  • 谢谢。如果你这么认为,你可以给我一些没有代码的线索。谢谢你。
  • 我的错误代码是这样的:z1(find(e==1)).*find(e==1)+z2(find(e==2)).*find(e==2)+z3(find(e==3)).*find(e==3)。但我收到错误矩阵尺寸必须一致
  • 那么,给定样本数据的预期输出是什么?
  • 我尝试得到这样的结果矩阵:result = [ 2 3 4 8 0; 6 0 9 5 0; 2 3 4 5 6],然后对该矩阵的元素求和。这意味着sum(sum(result))

标签: matlab matrix


【解决方案1】:

你可以使用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(:)

【讨论】:

  • @user196345 当然,不用担心!
猜你喜欢
  • 1970-01-01
  • 2013-03-21
  • 2015-04-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-01-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多