Modificando variedade 3D usando "propagação" em Fortran

votos
0

Eu estou tentando usar intrínseca função de propagação do Fortran para modificar uma matriz 3D. Quero alterar uma matriz da forma (3 3 6) de uma matriz de forma (3 18 18). Em MATLAB isso pode ser feito usando repmat, mas tentando isso em resultados fortran em no erro: fileiras incompatíveis 3 e 4.

Eu não tenho nenhuma aplicação problema se espalhou para matrizes 1D e tudo funciona como esperado. Minha tentativa foi usar propagação em uma etapa Frist para alcançar uma forma de (3 18 6) e, em seguida, uma segunda expansão para (3 18 18), mas o erro já aparece na chamada Frist, do spread.

program example
  implicit none
  integer :: arr(3,3,6)
  integer :: arr2(3,18,6)
  integer :: i,j

  do i = 1,6
    do j = 1,3
        arr(1:3,j,i) = (/1,1,1/)
    end do
  end do

  arr2 = spread(arr,2,6)
  print*, shape(arr2)

end program example

!MATLAB code:
!repmat(arr, 1, 6, 3)

Espero e variedade de forma (3 18 6) no código fornecido e gostaria de chegar a este (3 18 18) na próxima etapa, assim como a função Matlab repmat, que pode fazer isso em uma única etapa pelo exemplo de código dada no código acima comentado. A mensagem de erro diz: fileiras incompatíveis 3 e 4.

Publicado 10/10/2019 em 00:45
fonte usuário
Em outras línguas...                            

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more