我习惯写这样的东西
A = [1,2;3,4]
B = A(:,1)
因此,我提取矩阵A的第一列并将其存储在矩阵B中,矩阵B只是一个向量或一个2x1矩阵。但是我不能在Fortran中执行此操作,因为它将A(:,1)
视为一维数组,因此如果我想将其分配给大小为2x1的“矩阵”B,则会给出错误。
这是Fortran中的一个最小例子:
program test
implicit none
double complex, dimension(:,:), allocatable :: A, B
allocate(A(2,2), B(2,1))
A = transpose(reshape((/ 1, 2, 3, 4/), shape(A)))
B = A(:,1) !gives error that shape mismatch
end program test
由于我不想在我的算法中单独处理向量,我怎样才能实现类似Matlab的行为?
答案 0 :(得分:3)
尝试
B = A(:, 1:1)
或者您也应该能够这样做:
B(:,1) = A(:,1)
要么应该工作。