Fortran 中的形状内在函数
shape intrinsic function in fortran
我正在研究 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
函数 returns 一个包含数组 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 中那样完成。有任何想法吗?谢谢。
在 fortran 形状手册页中有一个 link 到 SIZE
,特别是(强调我的)
Description:
Determine the extent of ARRAY along a specified dimension DIM, or the total number of elements in ARRAY if DIM is absent.
program test
integer, dimension(5,3) :: A
print *, size(A,1)
print *, size(A,2)
end program test
我正在研究 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
函数 returns 一个包含数组 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 中那样完成。有任何想法吗?谢谢。
在 fortran 形状手册页中有一个 link 到 SIZE
,特别是(强调我的)
Description:
Determine the extent of ARRAY along a specified dimension DIM, or the total number of elements in ARRAY if DIM is absent.
program test
integer, dimension(5,3) :: A
print *, size(A,1)
print *, size(A,2)
end program test