【发布时间】:2016-11-26 07:03:36
【问题描述】:
这里提出的问题的答案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
【问题讨论】:
-
看起来很不错。但这取决于你想做什么。如果您想要转置复数(没有共轭),请使用
.'。如果你想共轭转置使用' -
@Luis Mendo:我想做相当于 $(.)^{*T} = (.)^H$ 的操作。那我应该用什么?这是共轭转置吗?
-
顺便说一句,你不需要写
sqrt(-1)你在 Matlab 中有i和j符号。
标签: matlab matrix transpose complex-numbers