我有一个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。
或许我忽略了一些东西。
答案 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更好地解释了它,并包含了函数使用的一个例子。