maxloc 的形状错误

Shape error with maxloc

我的代码有问题,我想找到数组的最大值元素在哪里。

double precision,dimension(1484,10,10) :: a
integer,dimension(1484)   :: ad1

那我试试:

ad1= maxloc(a)

我收到错误

ad1= maxloc(a)
1
Error: Different shape for array assignment at (1) on dimension 1 (1484 and 3)

我应该如何定义ad1

您的 MAXLOC(a),没有 DIM= 说明符,returns 等级 1 和大小 3 的数组(a 的等级)。您正在尝试将此 rank 1 数组分配给不同大小 (1484) 的 rank 1 数组。从错误消息中您可以看到这些是注释的两个数字。

所以,您想将 ad1 声明为

integer, dimension(3) :: ad1

[请注意,如果编译器支持内部 RANK 可能对一般声明有用。]

或者,当然,您可以在问题中声明 ad1,但只分配给它的三个元素。