接受任意大小的 rank-1 数组的 Fortran 函数
Fortran function that accepts arbitrary sized rank-1 arrays
如何编写接受任意大小数组的函数,前提是它们的等级为 1?
这正是内在函数 shape
可以做到的,所以我认为我的要求并不过分。
实际上,函数 shape
做的更多。它可以(显然)接受任何形状的数组,即沿每个维度的任意等级和任意长度。
本题旨在写一个函数sub2ind
对应MATLAB同名函数
我不确定我是否正确理解了你的问题,但是自从 Fortran 函数被发明以来,函数接受任何数组大小在 Fortran 中是可能的。 (尽管在 FORTRAN 77 之前有时会涉及一些技巧)。任何教科书或教程都会处理这个问题。
现代风格的设想:
function f(a)
real :: a(:)
do i = 1, size(a)
...
end functions
显式尺寸:
function f(n, a)
real :: a(n)
do i = 1, n
...
end functions
假定尺寸:
function f(n, a)
real :: a(*)
do i = 1, n
...
end functions
对于假定的形状,显式接口(最好使用模块)是必要的。
如何编写接受任意大小数组的函数,前提是它们的等级为 1?
这正是内在函数 shape
可以做到的,所以我认为我的要求并不过分。
实际上,函数 shape
做的更多。它可以(显然)接受任何形状的数组,即沿每个维度的任意等级和任意长度。
本题旨在写一个函数sub2ind
对应MATLAB同名函数
我不确定我是否正确理解了你的问题,但是自从 Fortran 函数被发明以来,函数接受任何数组大小在 Fortran 中是可能的。 (尽管在 FORTRAN 77 之前有时会涉及一些技巧)。任何教科书或教程都会处理这个问题。
现代风格的设想:
function f(a)
real :: a(:)
do i = 1, size(a)
...
end functions
显式尺寸:
function f(n, a)
real :: a(n)
do i = 1, n
...
end functions
假定尺寸:
function f(n, a)
real :: a(*)
do i = 1, n
...
end functions
对于假定的形状,显式接口(最好使用模块)是必要的。