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