Мой вопрос похож на этот Умножьте 3D-матрицу на 2D-матрицу . Тем не менее, я пишу код на Фортране.
Скажите, если у меня есть RxSxT
матрица A
и SxU
матрица B
, где R,S,T,U
- целые числа, и я хочу умножить A(:,:,0)
на B
. Как я могу сделать это с matmul
? Когда я делаю что-то вроде
C(:,:,0) = matmul(A(:,:,0),B)
Компилятор (gfortran) выдает:
Warning:Array reference at (1) is out of bounds (0 < 1) in dimension 3
f951: internal compiler error: Segmentation fault
Есть ли способ обойти это?
Спасибо.
РЕДАКТИРОВАТЬ: я должен добавить, что я на самом деле транспонировать вторую матрицу. Скажем, матрица A
a RxSxT
и матрица B
a UxS
. Тогда
C(:,:,0) = matmul(B,transpose(A(:,:,0))
Это транспонирование может быть частью проблемы. Преобразует ли оно A (i, j, k) в A (k, i, j)?