通过阈值获取向量中的值

时间:2016-01-17 09:49:55

标签: matlab 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]作为选定值。

你能告诉我我该怎么办?

1 个答案:

答案 0 :(得分:1)

使用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