【问题标题】:FORTRAN - Assigning an array value to variableFORTRAN - 将数组值分配给变量
【发布时间】:2014-03-27 09:24:11
【问题描述】:

有没有办法将数组的值变成变量的形状?即使我选择了一个数组的单个值,比如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 和数组的唯一可能性吗?

感谢您的帮助!

【问题讨论】:

    标签: arrays variables resize fortran


    【解决方案1】:

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

    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) 是一个标量,可以这样处理。

    【讨论】:

    • 谢谢!那行得通!猜猜我上次尝试这种方式并得到错误时,我实际上是在与另一个数组进行比较。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-12
    • 2020-09-22
    • 1970-01-01
    • 2020-07-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多