MatLab中复数乘法的混淆

MatLab中复数乘法的混淆,matlab,matrix-multiplication,complex-numbers,Matlab,Matrix Multiplication,Complex Numbers,我注意到Matlab中的复数乘法计算比较混乱。一个简单的例子如下: syms x1 x2 x3 x4 s=[x1 x2]*[x3 x4]' s的返回值如下所示: s=x1*conj(x3) + x2*conj(x4) 在我看来,s应该等于x1*x3+x2*x4。那么,这里有什么问题 那么,如果我想得到两个复向量的乘法,我应该怎么做? 更新:我发现它将通过使用“而不是”来解决。比如: s=[x1 x2]*[x3 x4] 也许这有助于解释: >> syms x1 x2 x3 x4

我注意到Matlab中的复数乘法计算比较混乱。一个简单的例子如下:

syms x1 x2 x3 x4
s=[x1 x2]*[x3 x4]'
s的返回值如下所示:

s=x1*conj(x3) + x2*conj(x4)
在我看来,s应该等于x1*x3+x2*x4。那么,这里有什么问题

那么,如果我想得到两个复向量的乘法,我应该怎么做? 更新:我发现它将通过使用“而不是”来解决。比如:

s=[x1 x2]*[x3 x4]

也许这有助于解释:

>> syms x1 x2 x3 x4
>> s=[x1 x2]*[x3 x4]'
s =
x1*conj(x3) + x2*conj(x4)

>> s=[x1 x2]*[x3; x4]
s =
x1*x3 + x2*x4

>> [x3 x4]'

ans =

 conj(x3)
 conj(x4)
版本的转置没有达到您想要的效果。使用
转置

>> transpose([x3 x4])
 ans =
 x3
 x4

运算符
在Matlab
ctranspose
中也称为复共轭转置,这基本上意味着它应用了
conj
转置
函数。注意,这个算子在数学上称为厄米算子

您实际需要的是运算符
转置
,它是快捷方式

为了获得预期的输出,并且假设您只想在不共轭第二个向量的情况下进行乘法,您应该执行以下操作:

>> syms x1 x2 x3 x4
>> s = [x1 x2]*[x3 x4].'
因此,您的输出将是:

x1*x3 + x2*x4

有关更多信息,您可以查看
帮助。
,以查看运算符列表,
帮助转置
帮助转置

请注意,Matlab中的
'
运算符是,即它转置矩阵并采用复共轭:

>> (1+1i)'
ans =
   1.0000 - 1.0000i
如果需要,则应使用
运算符:

>> (1+1i).'
ans =
   1.0000 + 1.0000i

在数学中也称为厄米算子。对于某些数组v,经常听到有人说“v Hermitian”代替“v transposed”,通常用十字/匕首符号表示,以区别于基本的转置。我认为,如果你是新手,并且有数学背景,Matlab的语法(对两种类型的转置都使用“for”)有点混乱。谢谢你的添加!我编辑并评论说,
充当厄米特运算符。非常感谢你的详细解释。+1教我关于
相当于
转置的知识。是的,你是对的,非常感谢你热情的回答。正如@ChrisTaylor指出的,
运算符执行与
转置
函数相同的操作。