<分区>
我正在尝试在 Fortran 中创建一个类似于 MATLAB 中的单元格的数组。
基本上(例如)我正在尝试创建一个数组 X(10)
,其中元素 X(1)
是一个维度为 (20,2) 的数组, X(2)
是维度为 (25,2) 等的数组
我该怎么做?
<分区>
我正在尝试在 Fortran 中创建一个类似于 MATLAB 中的单元格的数组。
基本上(例如)我正在尝试创建一个数组 X(10)
,其中元素 X(1)
是一个维度为 (20,2) 的数组, X(2)
是维度为 (25,2) 等的数组
我该怎么做?
最佳答案
您的特定情况的等效项是使用包含单个组件的派生类型实现的。元胞数组对应于该派生类型的数组,位于元胞数组每个元素内的数组就是每个数组元素的数组组件。
类似于:
TYPE Cell
! Allocatable component (F2003) allows runtime variation
! in the shape of the component.
REAL, ALLOCATABLE :: component(:,:)
END TYPE Cell
! For the sake of this example, the "cell array" equivalent
! is fixed length.
TYPE(Cell) :: x(10)
! Allocate components to the required length. (Alternative
! ways of achieving this allocation exist.)
ALLOCATE(x(1)%component(20,2))
ALLOCATE(x(2)%component(25,2))
...
! Work with x...
MATLAB 中的单元格比上面的特定类型具有更大的灵 active (这实际上更类似于结构的 MATLAB 概念)。对于接近元胞数组灵 active 的东西,您需要使用无限的多态组件和进一步的中间类型定义。
关于arrays - 数组中的 Fortran 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21568652/