通过阈值获取向量中的值

Pick up values in vector by a threshold

我有一个向量

E = [ 2.91082 , 0.14735, 0.92122, 0.02061 ]

现在,我设置阈值 T=0.95,这意味着

T = ( 2.91082 + 0.92122)/(2.91082 + 0.14735 + 0.92122 + 0.02061 )=0.958>0.95

然后,我可以选择 E[1] 和 E[3] 作为选定值。

你能告诉我该怎么做吗?

bsxfun用于矢量化解决方案-

[R,C] = find(triu(bsxfun(@plus,E,E.')./sum(E),1) > 0.95)

样本运行-

>> E = [ 2.91082 , 0.14735, 0.92122, 0.02061 ];
>> triu(bsxfun(@plus,E,E.')./sum(E),1) '%// T values
ans =
            0      0.76454      0.95801      0.73286
            0            0      0.26714      0.04199
            0            0            0      0.23546
            0            0            0            0
>> [R,C] = find(triu(bsxfun(@plus,E,E.')./sum(E),1) > 0.95)
R =
     1
C =
     3