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

计算矩阵中的顶部元素(Matlab),matlab,matrix,threshold,Matlab,Matrix,Threshold,我有矩阵: 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... i、 我们可以得到A中的顶值向量:V=[

我有矩阵:

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...
i、 我们可以得到A中的顶值向量:V=[4,3,2],因此k=3


谁能告诉我怎么做

对于
diag(A)
cumsum
,您想
查找
比较
X.diag(A)
cumsum
您想
查找
比较
X./trace(A)的
你是如何从你的D=9/10中得到10的?你是如何从你的D=9/10中得到10的?我想你得到了正确的结果,我只是要删除我的答案,我真的很困惑…我想你可以在总和之前加一个排序下降来确定顺序。我想你得到了正确的结果,我只是要删除我的答案,我真的很困惑…我想你可以在总和之前加一个排序下降来确定顺序。
find(cumsum(diag(A))./trace(A)<=T,1,'last')