在 Fortran 中使用函数 "transpose" 时出错
Error when using the function "transpose" in Fortran
我知道 Fortran 中的 "transpose" 是一个在其对角线上翻转矩阵的运算符。但是,在下面的代码中,我遇到了一个错误,不知道为什么。
密码是:
program main
implicit none
real(8)::a(3,2),b(2,1)
a=reshape((/1.0,2.0,3.0,4.0,5.0,6.0/),(/3,2/))
b=reshape((/1.0,2.0/),(/2,1/))
write(*,*)a(1,1:2)
!Next sentence throw an error
a(1,1:2)=transpose(b)
end program
错误是:
错误#6366:数组表达式的形状不符合。 [一个]
我觉得"a(1,1:2)"是一行两列,和"transpose(b)"一样,为什么编译器告诉我"the shape do not conform"?
你错了,a(1,1:2)
不是二维数组(你称之为矩阵),它是一维数组.
Bu 使用 a(1,..
您在 "matrix" 中选择了一个明确的 "row",您从中选择了 "row vector" 1:2)
。
你必须使用
a(1:1,1:2)
对于形状为 1x2 的二维数组(如果需要,可以使用一行和两列的矩阵)。
我知道 Fortran 中的 "transpose" 是一个在其对角线上翻转矩阵的运算符。但是,在下面的代码中,我遇到了一个错误,不知道为什么。
密码是:
program main
implicit none
real(8)::a(3,2),b(2,1)
a=reshape((/1.0,2.0,3.0,4.0,5.0,6.0/),(/3,2/))
b=reshape((/1.0,2.0/),(/2,1/))
write(*,*)a(1,1:2)
!Next sentence throw an error
a(1,1:2)=transpose(b)
end program
错误是:
错误#6366:数组表达式的形状不符合。 [一个]
我觉得"a(1,1:2)"是一行两列,和"transpose(b)"一样,为什么编译器告诉我"the shape do not conform"?
你错了,a(1,1:2)
不是二维数组(你称之为矩阵),它是一维数组.
Bu 使用 a(1,..
您在 "matrix" 中选择了一个明确的 "row",您从中选择了 "row vector" 1:2)
。
你必须使用
a(1:1,1:2)
对于形状为 1x2 的二维数组(如果需要,可以使用一行和两列的矩阵)。