2014-02-25 176 views
2

有没有办法将数组的值赋给变量的形状?甚至当我选择一个数组的一个值,说A(1:1, 1:1),当我编译,并希望这个赋值给一个变量仍抱怨:FORTRAN - 将数组值赋给变量

Error: Incompatible ranks 0 and 1 in assignment at (1) 

最终的目标是这样的:

H = MAXVAL(matrix) - epsilon 
IF (matrix(i:i, i:i) >= H) THEN 

... 但我不能做这个比较,因为H是一个变量,而matrix(i:i, i:i)是1x1的数组。这也是唯一可能使H和数组成立的工作吗?

谢谢你的帮助!

回答

4

不要指定一个范围,使用一个单一的元素:

A(1,1)=1 

你的语句将然后阅读:

H = MAXVAL(matrix) - epsilon 
IF (matrix(i, i) >= H) THEN 

背景:

的Fortran允许您在子阵列工作如:

A(1:10,2:5) 

这将是一个10x4阵列。因此A(1:1,1:1)实际上是一个数组(1x1)(如您所注意的)。另一方面,A(1,1)是一个标量,可以这样对待。

+0

谢谢!这工作! 猜猜我最后一次尝试这种方式,并得到一个错误,我实际上是与另一个数组进行比较。 –