在Fortran中查找满足条件的数组最小值的索引

4
我正在查找一个数组中大于某个数字的最小值。我发现了这个讨论,但我不太理解。虽然我没有分析给定示例中传递给MINLOC的参数,但它看起来好像不能完成我想要的所有功能。(也可以使用循环来实现,但可能不太方便。)
2个回答

8
您可能需要使用 MINVAL 函数。
如果您的数组是这样的,
array = (/ 21, 52, 831, 46, 125, 68, 7, 8, 549, 10 /)

你想找到大于65的最小值,

variable = minval(array, mask=(array > 65))

这显然会给出68。


5

看起来你需要的是MINVAL

你只需要像这样做:

min_above_cutoff = MINVAL(a, MASK=(a > cutoff))

可选参数MASK应为与 a 相同大小的逻辑数组。它告诉MINVAL在搜索最小值时要考虑 a 中的哪些元素。
请查看此处的文档:MINVAL 如果您想获得最小值的索引而不是值本身,则可以使用MINLOC。 在这种情况下,代码将如下所示:
index = MINLOC(a, MASK=(a > cutoff))    

这里可以找到文档:MINLOC


1
minloc 返回的是变量的位置,而不是该位置上的值(后者是 OP 所需的)。minval 才是 OP 寻找的内容,请参考我的帖子。 - Kyle Kanos
是的,你完全正确。我更新了我的答案以反映这一点。不过你的答案更简洁,并且有一个例子,所以给你加1。 - amicitas
1
请重新添加一个minloc示例。这可能对读者有用:请注意问题标题(故意)略微宽泛的范围。 - user649198

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接