【问题标题】:Fortran function that accepts arbitrary sized rank-1 arrays接受任意大小的 rank-1 数组的 Fortran 函数
【发布时间】:2016-02-05 09:22:41
【问题描述】:

如果它们的等级为 1,我如何编写一个接受任意大小数组的函数? 这正是内在函数shape 可以做到的,所以我认为我的要求并不过分。 实际上,函数shape 做的更多。它可以(显然)接受任何形状的数组,即沿每个维度的任意等级和任意长度。

本题旨在写一个函数sub2ind,对应MATLAB同名函数。

【问题讨论】:

  • 作为这个问题的一部分,您可能还关心函数结果是一个任意(但相关)大小的数组?
  • 嗯,我想知道最一般的答案,但第一步是在函数给出标量作为输出的情况下回答。

标签: matlab fortran fortran90 indices


【解决方案1】:

我不确定我是否正确理解了您的问题,但是自从发明了 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

对于假定的形状,显式接口(最好使用模块)是必要的。

【讨论】:

猜你喜欢
  • 2018-10-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-04-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多