使用matmul将数组的一部分乘以矩阵

Sam*_*Tan 1 fortran matrix matrix-multiplication

我的问题类似于这个与3D矩阵相乘的3D矩阵.但是,我在Fortran中编码.

再说了,如果我有一个RxSxT矩阵ASxU矩阵B,其中R,S,T,U是整数,我要乘A(:,:,0)B.我怎么能这样做matmul?当我做的事情

    C(:,:,0) = matmul(A(:,:,0),B)
Run Code Online (Sandbox Code Playgroud)

编译器(gfortran)给出:

    Warning:Array reference at (1) is out of bounds (0 < 1) in dimension 3 
    f951: internal compiler error: Segmentation fault
Run Code Online (Sandbox Code Playgroud)

有没有解决的办法?谢谢.

编辑:我应该补充一点,我实际上是转置第二个矩阵.再说了,A一个RxSxT矩阵和B一个UxS矩阵.然后

 C(:,:,0) = matmul(B,transpose(A(:,:,0))
Run Code Online (Sandbox Code Playgroud)

转置可能是问题的一部分.它将A(i,j,k)转换为A(k,i,j)吗?

jan*_*neb 8

请记住,在Fortran中,您的数组索引默认从1开始.因此,除非您已指定数组A在第3维上具有非默认下限,否则gfortran在指出错误时完全正确.

当然,内部编译器错误始终是编译器错误; 除非你有一些古老的gfortran版本,请在http://gcc.gnu.org/bugzilla上提交一个错误