Matlab :(。)^ * T操作复数

时间:2016-11-26 07:03:37

标签: matlab matrix transpose complex-numbers

这里问的答案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

1 个答案:

答案 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).' );