[英]Find 20% of array entries that are closest maximum value
我试图找到最接近最大值的20%的条目。 考虑这个程序
program max_find
implicit none
double precision, dimension(10) :: array
array = [4.0, 7.0, 6.0, 9.0, 3.0, 2.0, 10.0, 5.0, 1.0, 8.0]
print *, array == maxval(array)
end program
打印FFFFFFTFFF
。 现在,我想找到逻辑数组FFFTFFTFFF
(10个条目中的2个为真)。 我可以将其包装成一个循环,计算array > threshold
的条目数array > threshold
然后降低阈值,直到得到ratio*size(array) < count(array > threshold)
(对于ratio = 0.2
),但是如何选择阈值理智地? 有没有更好的方法?
调用子例程对数组进行排序(Fortran代码在公共域中执行此操作),然后使用排序后的数组选择阈值。 您无需对整个数组进行排序,在不太可能的情况下,完全排序会花费太长时间,您可以使用公共领域ORDERPACK 2.0库中的部分排序子程序。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.