将行或列从2D数组提取到2D数组

时间:2016-11-14 03:43:12

标签: arrays matlab matrix vector fortran

在matlab中的

我习惯写这样的东西

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的行为?

1 个答案:

答案 0 :(得分:3)

尝试

B = A(:, 1:1)

或者您也应该能够这样做:

B(:,1) = A(:,1)

要么应该工作。