【问题标题】:Count top elements in a matrix (Matlab)计算矩阵中的顶部元素(Matlab)
【发布时间】:2016-07-03 13:59:28
【问题描述】:

我有矩阵:

A=[ 4 0 0 0 0
   0 3 0 0 0
   0 0 2 0 0
   0 0 0 1 0
   0 0 0 0 1 ];

我想得到 diag 中前 k 个元素的值,使得这些元素的总和大于预定义的阈值 T,而 k 尽可能大。

For example: T= 0.9

            (4+3+2)/(trace(A)) = 0.818...
            (4+3+2+1)/(trace(A)) = 0.909...

即我们可以得到 A 中最高值的向量:V= [4,3,2] 因此,k = 3。

谁能告诉我该怎么做?

【问题讨论】:

  • 你是如何从 D = 9/10 得到 10 的?

标签: matlab matrix threshold


【解决方案1】:

对于diag(A)cumsum,您希望find last 元素与X./trace(A)<=T 的比较为真。把它放在代码中:

find(cumsum(diag(A))./trace(A)<=T,1,'last')

【讨论】:

  • 我认为你有正确的结果,我只是要删除我的答案,我真的很困惑......我想你可以在 cumsum 之前添加一个排序下降以确保排序。
猜你喜欢
  • 2017-04-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多