Matriz multidimensional con diferentes longitudes

Estoy tratando de hacer una matriz con diferentes longitudes en una segunda dimensión, por ejemplo:

A = 1 3 5 6 9 2 3 2 2 5 8 9 

es posible? He pasado bastante tiempo buscando pero no puedo encontrarlo de ninguna manera.

Si y no. Primero el no:

Arreglos apropiados en Fortran, como los declarados así:

 integer, dimension(3,3,4) :: an_array 

o así

 integer, dimension(:,:,:,:), allocatable :: an_array 

son regulares; para cada dimensión hay solo una extensión.

Pero, si quieres definir tu propio tipo para una matriz irregular, puedes hacerlo, y es relativamente fácil:

 type :: vector integer, dimension(:), allocatable :: elements end type vector type :: ragged_array type(vector), dimension(:), allocatable :: vectors end type ragged_array 

Con este tipo de enfoque, puede asignar los elements de cada uno de los vectors a un tamaño diferente. Por ejemplo:

 type(ragged_array) :: ragarr ... allocate(ragarr%vectors(5)) ... allocate(ragarr%vectors(1)%elements(3)) allocate(ragarr%vectors(2)%elements(4)) allocate(ragarr%vectors(3)%elements(6)) 

mirando la primera respuesta, parece que no hay necesidad de crear el vector tipo derivado, que en realidad es solo una matriz entera asignable:

  type ragged_array integer,allocatable::v(:) end type ragged_array type(ragged_array),allocatable::r(:) allocate(r(3)) allocate(r(1)%v(5)) allocate(r(2)%v(10)) allocate(r(3)%v(15)) 

esto hace que la notación sea un poco menos engorrosa …