数组内的 Fortran 数组

问题描述 投票:0回答:1

我正在尝试在 Fortran 中创建一个类似于 MATLAB 中的单元格的数组。

基本上(例如)我试图创建一个数组

X(10)
,其中元素
X(1)
是一个维度为(20,2)的数组,
X(2)
是一个维度为(25,2)的数组,等等

我该怎么做?

arrays matrix fortran dimension
1个回答
6
投票

您的具体情况的等效方法是使用包含单个组件的派生类型来实现。 元胞数组对应于该派生类型的数组,位于元胞数组每个元素内部的数组就是每个数组元素的数组组件。

类似:

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 中的单元格比上面的特定类型具有更大的灵活性(这实际上更类似于 MATLAB 结构体的概念)。 对于接近元胞数组灵活性的东西,您需要使用无限的多态组件和进一步的中间类型定义。

© www.soinside.com 2019 - 2024. All rights reserved.