这里问的答案Why is complex conjugate transpose the default in Matlab
表示对于复数,我们可以使用'
符号来表示用于实数的转置操作。在数学上,对实数值进行的转置操作由符号(.)^T
表示。对于复数的转置,等效符号为(.)^H
。它的完成方式是 - 首先我们采用复数的共轭,然后进行转置。这是操作(.)^H
。
我想为复数实现操作(.)^{*T} = (.)^H
。我已经使用了符号撇号。请纠正我的错误。
我想确认我使用Matlab实现这个概念是否正确。例如,对于实值向量A_r
,我想将其与转置multiply_r = A_r*A_r'
为复数值向量A_c
复制相同内容,此操作将变为multiply_c = A_c * A_c'
A_r =[1,2,3]; %real valued vector
B_r = A_r'; %transpose of real valued vector
multiply_r =A_r*B_r;
A_c = [1 + sqrt(-1)*1, 2+sqrt(-1)*2, 3+sqrt(-1)*3]; %complex valued vector
B_c = A_c'; %transpose of complex valued vector
multiply_c = A_c*B_c;
这可以吗?
更新:我正在尝试对这个复数值数组进行正常转置,以便它排列成3行1列1行3列。使用运算符.'
我得到了奇怪的值,因为数组现在增加了!!什么是正确的方法?
h = [ -5.1053 + 3.6797i 1.3327 + 5.7339i 4.1302 -10.7521i].'
h =
-5.1053 + 3.6797i
1.3327 + 5.7339i
4.1302
0 -10.7521i
答案 0 :(得分:2)
正如您所指出的,Matlab已经定义了矩阵“转置”((.)^T
)和“共轭转置”((.)^H
)。
对于实值转置,您有transpose
,可以表示为运算符.'
(请注意'
之前的'。'):
aT = transpose(a);
isequal( aT, a.' ); % transpose() and .' are the same
对于复共轭转置,您有ctranspose
,可以表示为运算符'
(请注意.
之前否 '
}):
aH = ctranspose(a);
isequal( aH, a' ); % ctranspose and ' are the same
您可以使用conj
验证
isequal( a', conj(a).' );