有没有办法将数组的值赋予变量的形状?即使我选择一个数组的单个值,比如说A(1:1, 1:1)
,它仍然会在我编译并且想要将其赋值给变量时抱怨:
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和数组的唯一可能吗?
感谢您的帮助!
答案 0 :(得分: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)
是一个标量,可以这样对待。