2016-11-14 118 views
0

在MATLAB我用来写像这样提取的行或列从2D阵列的2D阵列

A = [1,2;3,4]  
B = A(:,1) 

所以我提取矩阵A的第一列,并将其存储在矩阵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) 

要么应该工作。