计算矩阵中的顶部元素 (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')
我有矩阵:
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')