共轭转置等于逆矩阵,一个矩阵的共轭转置
我对numpy不是很有经验,但基于@hpaulj的评论,我可以提出以下建议:
如果不想受到numpy.matrix对象的限制(见此处警告),可以定义自己的函数来执行共轭转置。你需要做的就是转置数组,然后从结果中减去结果的虚部,再乘以2。我不确定这在计算上有多高效,但它肯定会给出正确的结果。在
我希望类似这样的东西能起作用:Y=C * ctranspose(Up[:0:p-1]) * Y
.
def ctranspose(arr:NP . ndarray)-NP . ndarray:
#所涉及的数学解释:
# x==Real(X) j*Imag(X)
# conj_x==Real(X) - j*Imag(X)
# conj _ X==Real(X)j * Imag(X)-2j * Imag(X)==X-2j * Imag(X)
tmp=arr.transpose()
返回tmp - 2j*tmp.imag
(解决方案是针对Python3的)
基于@AndrasDeak评论的更优雅的解决方案:
^{pr2}$
另外请注意python和MATLAB在索引方面的两个区别:Python是基于0的(也就是说,数组的第一个索引是0,这与MATLAB中的1不同)
Python中的索引是inclusive:exclusive,而MATLAB中的索引是inclusive:inclusive。在
所以,当我们想在MATLAB中访问一个向量的前3个元素时,可以写成:RES=vec(1:3);
在Python中,我们可以写成:res=vec[0:3] #或[:3]
(再次说明,这个解释归功于@安朵斯)