a = [1;2;3]
;
square_real = a'*a
;
ans =
14
a =
1
2
3
在这个例子中,我将变量a
(数组)中的数字与其自身进行平方。
要进行相同的操作,即对于自身的复数进行平方,操作是什么?我应该采用ctranpose还是共轭转置?我很困惑。
>> ac=[1 + 1j; 2 + 2j; 3 + 0.1j]
ac =
1.0000 + 1.0000i
2.0000 + 2.0000i
3.0000 + 0.1000i
>> ac'*ac
ans =
19.0100
我不知道我是否选择了正确的操作员。
根据收到的评论进行更新:我不希望复数值数组的元素更改其符号。我想将数组与自身相乘,以便在乘法时获得标量答案。为了做到这一点,应该是数学中的符号和Matlab中的相应命令?
答案 0 :(得分:1)
正如评论中所述,您需要transpose .'
而不是complex conjugate transpose '
。对于实数,转置和复共轭转置是相同的,因为没有涉及iota i
或j
。所以你要找的是:
ac = [1 + 1j; 2 + 2j; 3 + 0.1j];
req = ac.' * ac;
如果您希望其标量幅度作为输出,请使用abs
即
abs(req)
就数学中的符号而言,转置通常表示为:
•Aᵀ
•A'(虽然它在MATLAB中是复共轭转置)
而复共轭转置通常表示为:
•Aᴴ
•(A̅) T
•A *
但请注意,Wikipedia提及:
在某些情况下,
表示A*
表示具有复杂共轭的矩阵 然后,条目和共轭转置由A*ᵀ
或Aᵀ*
定义您将在文本中使用的符号始终是一个好习惯。