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

时间:2013-12-18 03:23:45

标签: arrays fortran

我在数组中寻找一个大于某个数字的最小值。我发现this discussion我不明白。有MINLOC,但它看起来并没有像我想的那样多,尽管我没有解析给定示例中传递给它的参数。 (也可以使用循环来执行此操作,但它可能很笨拙。)

2 个答案:

答案 0 :(得分:8)

您可能需要MINVAL

如果您的阵列是,

array = (/ 21, 52, 831, 46, 125, 68, 7, 8, 549, 10 /)

并且您希望找到大于65的最小值,

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

这显然会给68.

答案 1 :(得分:4)

听起来MINVAL就是你想要的。

您只需要执行以下操作:

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

可选参数MASK应该是一个与a大小相同的逻辑数组。它告诉MINVAL搜索最小值时要考虑的元素。

请查看此处的文档:MINVAL


如果您想要获取最小值的索引而不是值本身,则可以使用MINLOC。在这种情况下,代码看起来像:

index = MINLOC(a, MASK=(a > cutoff))    

可以在此处找到文档:MINLOC