我想將矩陣與其轉置相乘,以便知道它是否驗證 Q t Q=I。
然而,當我在 matlab 上計算它時,我使用一個我不知道的概念得到了一些奇怪的東西:conj(x)
。
- 那麼,如何將矩陣與其轉置相乘呢?
這是我嘗試過的程式碼:
>> syms x
>> A=[cos(x) -sin(x);
sin(x) cos(x)]
A =
[ cos(x), -sin(x)]
[ sin(x), cos(x)]
>> A'*A
ans =
[ cos(conj(x))*cos(x) + sin(conj(x))*sin(x), sin(conj(x))*cos(x) - cos(conj(x))*sin(x)]
[ cos(conj(x))*sin(x) - sin(conj(x))*cos(x), cos(conj(x))*cos(x) + sin(conj(x))*sin(x)]
答案1
我意識到這是一個老問題,但考慮到社區機器人有意解決這個問題,不妨回答一下。
conj
MATLAB在輸出中給出的原因是因為您使用的是複共軛轉置運算子'
(又稱ctranspose()
)。
因為這是符號數學,所以 MATLAB 不會對x
實數還是複數做出任何假設,因此它必須保留conj()
在輸出中 - 對於實數,該函數不執行任何操作,對於複數,它將採用共軛。
如果您使用.'
相反的方法,這就是常規矩陣轉置(又稱transpose()
)。因此,MATLAB 不會為輸出添加任何複雜的共軛調用,因為它在執行轉置時會忽略數組的內容。
>> A'*A
ans =
[ cos(conj(x))*cos(x) + sin(conj(x))*sin(x), sin(conj(x))*cos(x) - cos(conj(x))*sin(x)]
[ cos(conj(x))*sin(x) - sin(conj(x))*cos(x), cos(conj(x))*cos(x) + sin(conj(x))*sin(x)]
>> A.'*A
ans =
[ cos(x)^2 + sin(x)^2, 0]
[ 0, cos(x)^2 + sin(x)^2]
註:cos(x)^2 + sin(x)^2 == 1
,所以ans == [1 0;0 1] == I
。