首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Matlab:(.)^*复数的T运算

问Matlab:(.)^*复数的T运算
EN

Stack Overflow用户
提问于 2016-11-26 07:03:36
回答 1查看 89关注 0票数 1

对这里提出的问题的答案,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'。

代码语言:javascript
复制
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列。使用操作符.',我得到了奇怪的值,因为数组现在的大小增加了!!正确的方法是什么?

代码语言:javascript
复制
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
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-11-27 06:53:54

正如您注意到的,Matlab同时定义了矩阵“转置”((.)^T)和“共轭转置”((.)^H)。

对于实值转置,有transpose,它可以表示为运算符.' (注意'.‘)。在'之前):

代码语言:javascript
复制
aT = transpose(a);
isequal( aT, a.' );  % transpose() and .' are the same

对于复杂的共轭转置( ctranspose ),它可以表示为运算符' (注意,在'之前没有 . ):

代码语言:javascript
复制
aH = ctranspose(a);
isequal( aH, a' );  % ctranspose and ' are the same

可以使用conj进行验证。

代码语言:javascript
复制
isequal( a', conj(a).' );
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40815877

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档