形成堡垒的内在功能

时间:2017-07-06 11:38:42

标签: matlab fortran gfortran

我正在玩fortran中的shape()内在函数:

program test

    integer, dimension(5,3) :: A
    integer, dimension(2) :: ShapeA

    ShapeA = shape(A)
    print *, ShapeA(1)
    print *, ShapeA(2)
end program test

我理解shape函数返回一个包含数组A的长度和宽度的2元素向量。在上面的代码中,shape(A)的输出被传递给预定义变量ShapeA。然后打印出ShapeA的内容,即5和3。

我想找到一种方法来引用shape(A)输出的内容,而不必将其分配给中间变量ShapeA

这与matlab size函数类似,它启用了这样的循环结构:

A =  [1 2 3 5 4; 2 3 5 4 5]

for i = 1:size(A,2)
    A(2,i)
end

这意味着用户无需像这样分配另一个变量:

A =  [1 2 3 5 4; 2 3 5 4 5]
sizeA = size(A,2)

for i = 1:sizeA
    A(2,i)
end

在fortran中,有必要声明变量,使用size语句为其赋值,然后在循环中包含该变量。我想删除前两个步骤,看看是否可以像在matlab中那样完成。有任何想法吗?感谢。

1 个答案:

答案 0 :(得分:2)

从形状的fortran手册页中可以找到SIZE的链接,特别是(强调我的)

  

说明

     

确定沿指定尺寸DIM 的ARRAY 的范围,或者如果DIM不存在则确定ARRAY中的元素总数。

program test

    integer, dimension(5,3) :: A

    print *, size(A,1)
    print *, size(A,2)
end program test