Matlab : (.)​​^*T 复数运算

Matlab : (.)^*T operation for complex numbers

此处问题的答案

表示对于复数我们可以使用 ' 符号来表示用于实数的转置运算。在数学上,对实数值进行的转置运算用符号 (.)^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

如您所述,Matlab 定义了矩阵 "transpose" ((.)^T) 和 "conjugate transpose" ((.)^H)。
对于实值转置,您有 transpose,可以表示为运算符 .'(注意 ' 之前的“.”):

aT = transpose(a);
isequal( aT, a.' );  % transpose() and .' are the same

对于复数共轭转置,你有 ctranspose,可以表示为运算符 '(注意前面有 no . '):

aH = ctranspose(a);
isequal( aH, a' );  % ctranspose and ' are the same

您可以使用conj进行验证:

isequal( a', conj(a).' );