通过阈值获取向量中的值
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
我有一个向量
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