HOWTO · MATLAB
MATLAB 矩陣轉置
可以使用 MATLAB 中的 transpose()和 ctranspose()函式對矩陣進行轉置。
本頁內容
在 MATLAB 中,使用 transpose(A) 或 A.' 交換列與欄,但不改變複數值。使用 ctranspose(A) 或 A' 交換列與欄,並對複數值取共軛。對實數陣列而言,兩種運算的結果相同;若陣列包含複數,請依照所需的計算選擇適當的運算。
在 MATLAB 中使用 transpose() 函式計算矩陣的轉置
transpose() 函式會交換向量或矩陣的列與欄。列向量會變成欄向量;若矩陣有 m 列、n 欄,轉置後便會有 n 列、m 欄。此函式不會對複數元素取共軛。運算子 .' 也會執行相同的一般轉置,因此撰寫 MATLAB 程式時可使用任一形式。
這個與 Octave 相容的 MATLAB 範例使用實數矩陣,並以 disp 顯示結果。範例會成功執行,輸出列與欄互換後的矩陣。程式碼與輸出區塊中的英文標籤保持原樣。
A = [1 2 3; 4 5 6];
T = transpose(A);
disp(T)
1 4
2 5
3 6
A 的第一列會成為 T 的第一欄,第二列則會成為第二欄。若要使用運算子執行一般轉置,請寫成 T = A.';。撇號前的句點不可省略:它會選擇不對複數元素取共軛的轉置。就此處的運算而言,這種寫法與 transpose(A) 等效。函式的詳細資訊請參閱 MATLAB transpose 文件。
在 MATLAB 中使用 ctranspose() 函式計算矩陣的複數共軛轉置
ctranspose() 函式會交換列與欄,並對每個元素取複數共軛。複數共軛會改變虛部的符號,例如 1 + 2i 會變成 1 - 2i。MATLAB 的撇號運算子 A' 會執行這種複數共軛轉置。對複數資料而言,這與一般轉置不同;當輸入可能含有複數時,請依需求選用運算子或函式。
這個獨立的 Octave 相容 MATLAB 範例示範如何對複數列向量執行此運算。範例會成功執行,並在欄向量中顯示取共軛後的值。程式碼與輸出區塊中的英文標籤保持原樣。
A = [1+2i 2+3i];
T = ctranspose(A);
disp(T)
1 - 2i
2 - 3i
結果是欄向量,元素為 1 - 2i 和 2 - 3i:原本的列變成欄,而且每個虛部的符號都會改變。同一個運算也可以寫成 T = A';。對實數向量或矩陣而言,取共軛不會改變任何元素,因此 ctranspose(A) 和 transpose(A) 會傳回相同的值。複數資料的結果通常不同:若只需要交換列與欄,請使用 transpose() 或 .';若所需結果也包含取共軛,則使用 ctranspose() 或 '。更多資訊請參閱 MATLAB ctranspose 文件。