对这里提出的问题的答案,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发布于 2016-11-27 06:53:54
正如您注意到的,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).' );https://stackoverflow.com/questions/40815877
复制相似问题