MATLAB符号计算中如何消除x*x^T结果中的conj()?
这问题我之前也碰到过!MATLAB里的单引号'默认是共轭转置(Hermitian transpose),哪怕你没明确把符号变量定义成复数,syms创建的变量默认也是在复数域的,所以会自动加上conj()。要得到你想要的普通矩阵乘积结果,有两种简单方法:
方法一:用普通转置运算符
.'代替共轭转置'
直接把代码里的x*x'改成x*x.'就行,这样MATLAB只会做转置操作,不会计算共轭:syms x1 x2 x3 x = [x1;x2;x3]; x*x.'运行后得到的结果就是你期望的:
[ x1*x1, x1*x2, x1*x3] [ x2*x1, x2*x2, x2*x3] [ x3*x1, x3*x2, x3*x3]方法二:把符号变量定义为实数类型
如果你本来就希望这些变量是实数,可以在定义时加上real关键字,此时变量的共轭就是它本身,用x*x'也会得到无conj()的结果:syms x1 x2 x3 real x = [x1;x2;x3]; x*x'这个方法的好处是,后续所有涉及这些变量的共轭运算都会自动简化,适合你明确变量为实数的场景。
内容的提问来源于stack exchange,提问作者Morpheus
相关产品推荐
相关产品推荐

