若 A 是一個實係數矩陣,則 A' 就是它的轉置 (transpose)。 但是如果 A 裡面有複數元素,則 A' 就相當於 Hermitian: 轉置矩陣,並將每個元素取共軛複數 (所以實數部份沒有影響)。 這也包含向量或序列的狀況,例如 x 是一個三維向量 (直的), 則 x' 就是 x 的 Hermitian,成為一個三維序列 (橫的), 而且每個元素取其共軛複數。 如果 c 就是一個複數,那麼 c' 就是 c 的共軛複數。
譬如說 c=3,則 c' 就還是 3。 但是如果 c=complex(1,3),也就是 1+3i, 那 c' 就成了 1-3i。 因此,c*c' 不是 c2 的意思,而是 |c|2。 當然,如果 c 是個實數,那 c2 和 |c|2 是一樣的意思; 不過我們要留意,萬一 c 是複數,那就不同了。
令 x=[x1, x2, x3] 是一個序列, 則根據上述解釋,x*x' 就是
|x1|2 + |x2|2 + |x3|2因此
sqrt(x * x')都是 x 的歐幾里得長度 (Euclidean norm)。 其實它也可以用 norm(x) 取得。
如果只要做轉置而不要取共軛複數,可以說 A.' 或者 x.', 注意那個「點」,這是 Matlab 的「點指令」之一,以後還會再多介紹一些。 當然囉,如果 c 是個純量、不管是實數還是複數,那 c.' 就是 c 它自己, 這個指令用在純量上沒什麼意義。
如果您不喜歡、或是不方便用 ' 算子來做 Hermitian, 可以改用函式 ctranspose()。 例如 ctranspose(A) 的效果和 A' 是一樣的。 同樣地,如果您不喜歡、或是不方便用 .' 算子來做轉置, 可以改用函式 transpose()。 例如 transpose(A) 的效果和 A.' 是一樣的。 要注意,transpose() 就如其名: 它真的只有做轉置,沒有取共軛複數。
習題