MATLAB在求转置时一定要注意!对于实数来说矩阵’可以求转置,但对于复数矩阵不可以直接用,因为其在用于复数时是共轭转置。
场景:
在MATLAB中遇到一个简单的bug:
a=[1+1i;2+2i]
b=[1+1i;2+2i]
ans1=sum(a.*b)
ans2=a'*b
结果是
问题描述
a和b是两个列向量。ans1是该两个向量对应项相乘并求和,ans2是a向量“转置”后再进行矩阵的乘法。当两向量为实数时结果相等,但为复数时结果不等。
实数情况时代码:
a=[1;2]
b=[1;2]
ans1=sum(a.*b)
ans2=a'*b
解决方案:
该问题实际上是MATLAB对“’”的定义其实是——转置共轭,故只需要将ans2中的a‘取共轭即可解决。
a=[1+1i;2+2i]
b=[1+1i;2+2i]
ans1=sum(a.*b)
ans2=conj(a')*b