Конкатенация двухмерных массивов в Фортране
Fortran 2003 имеет синтаксис в квадратных скобках для конкатенации массивов, компилятор Intel Fortran также поддерживает его. Я написал здесь простой код для объединения матриц:
program matrix
implicit none
real,dimension (3,3) :: mat1,mat2
real,dimension(3,6):: mat3
integer i
mat1=reshape( (/1,2,3,4,5,6,7,8,9/),(/3,3/))
mat2=reshape( (/1,2,3,4,5,6,7,8,9/),(/3,3/))
mat3=[mat1,mat2]
!display
do i=1,3,1
write(*,10) mat3(i,:)
10 format(F10.4)
end do
end program
Но я получаю ошибку как
mat3=[mat1,mat2]
Error: Incompatible ranks 2 and 1 in assignment
Я ожидаю, что выход
1 2 3 1 2 3
4 5 6 4 5 6
7 8 9 7 8 9
Может кто-нибудь прокомментировать, где я иду не так? Что такое ранг 2 и 1 здесь? Я думаю, все массивы имеют ранг 2.