Fortran - Maxval在指定维度时返回奇怪的结果

时间:2013-04-17 05:10:07

标签: fortran gfortran

我有一个3x2阵列,并用数字1-6填充它 所以看起来像 1 4
2 5
3 6

然后我调用maxval,并指定我希望找到维度1的最大值。人们会期望它应该返回3,不是吗?

但出于某种原因,我的输出是“3 6”

PROGRAM maxv
    IMPLICIT None
    INTEGER, DIMENSION(3,2) :: x
    DATA x /1,2,3,4,5,6/

    WRITE(*,*) maxval(x,dim=1)
ENDPROGRAM maxv

如果问题出在我的编译器中,我使用了Gfortran 4.6.3

根据http://www.nsc.liu.se/~boein/f77to90/a5.html,当您指定维度时,maxval应该提供该维度中的maxval。

或许我忽略了一些东西。

1 个答案:

答案 0 :(得分:2)

是的,你忽略了一些东西; maxval表现正常。

编写时,对于rank-2数组x

maxval(x,dim=1)

该函数返回一个排名为1的数组,其元素数与x中的列数相同,每个元素都是x中相应列的最大值。类似地

maxval(x,dim=2)
对于您的示例,

将返回rank-1数组[4,5,6] - x每行中的最大值。

The GNU documentation比你引用的来源更好地解释了这个功能,IBM更好地解释了它,并包含了函数使用的一个例子。