2016-11-14 120 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) 

要麼應該工作。