Sam*_*Tan 1 fortran matrix matrix-multiplication
我的问题类似于这个与3D矩阵相乘的3D矩阵.但是,我在Fortran中编码.
再说了,如果我有一个RxSxT矩阵A和SxU矩阵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)吗?
请记住,在Fortran中,您的数组索引默认从1开始.因此,除非您已指定数组A在第3维上具有非默认下限,否则gfortran在指出错误时完全正确.
当然,内部编译器错误始终是编译器错误; 除非你有一些古老的gfortran版本,请在http://gcc.gnu.org/bugzilla上提交一个错误