计算矩阵中的顶部元素 (Matlab)

Count top elements in a matrix (Matlab)

我有矩阵:

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.

谁能告诉我该怎么做?

对于 diag(A)cumsum,您想要 find 比较 X./trace(A)<=T 为真的 last 元素。将其组合成代码:

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