我注意到在 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]
我注意到在 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]
算子在Matlab'
中也称为Complex conjugate transposectranspose
,基本意思是它应用conj
and和andtranspose
函数。请注意,此运算符在数学中称为 Hermitian 运算符。
您真正想要的transpose
是快捷方式的运算符.'
为了获得预期的输出,并且假设您只想相乘而不共轭第二个向量,您应该这样做:
>> syms x1 x2 x3 x4
>> s = [x1 x2]*[x3 x4].'
所以你的输出将是:
x1*x3 + x2*x4
有关更多信息,您可以查看help .
, 查看运营商列表,help transpose
以及help ctranspose
也许这将有助于解释:
>> 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
:
>> transpose([x3 x4])
ans =
x3
x4