2017-07-28 14 views
0

我知道Fortran中的「轉置」是一種在其對角線上翻轉矩陣的運算符。但是,在下面的代碼中,我遇到了一個錯誤,不知道爲什麼。在Fortran中使用函數「轉置」時出錯

的代碼是:

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]

我認爲「a(1,1:2)」是一行兩列,與「轉置(b)」相同,爲什麼編譯器告訴我「形狀不符合「?

+0

應先搜索。我看到我甚至在副本下有一個刪除的答案。 –

+0

甚至沒有等待足夠長的時間來注意「真實(8)」是醜陋而不便攜的。 –

+0

對不起,因爲我剛剛搜索「錯誤轉置Fortran」,並沒有找到解決方案。之後我會嘗試一些其他關鍵詞,例如錯誤顯示。 –

回答

2

你錯了,a(1,1:2)不是一個二維數組(你稱之爲矩陣),它是一個一維數組

Bu使用a(1,..您正在「矩陣」中選擇一個確定的「行」,從其中取「行向量」1:2)

您必須使用

a(1:1,1:2)

的形狀的1x2的二維數組(矩陣一行和兩列,如果你想)。

+0

我會在這裏留下足夠的時間讓OP閱讀關於他的代碼的解釋。 –