2015-04-25 75 views
2

我的代碼存在問題,我想在其中查找數組的最大值元素的位置。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

+0

是的,我想找到單個最大元素。 –

回答

3

您的MAXLOC(a)(沒有DIM=說明符)會返回一個排名爲1和大小爲3(排名爲a)的數組。您正嘗試將此排名1數組分配給不同大小的排名1數組(1484)。從錯誤信息中可以看到這些是兩個音符的數字。

所以,你要聲明ad1作爲

integer, dimension(3) :: ad1 

[請注意,如果你有編譯器支持的內在RANK可能是一般的聲明是有用的。]

或者,當然,你可以在問題中聲明ad1,但只分配給它的三個元素。

+0

現在有效。@ francescalus –