我正在玩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中那样完成。有任何想法吗?感谢。
答案 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