python中对复数矩阵的操作
做Phase Retrieval的时候,参考“E. J. Candes, X. Li and M. Soltanolkotabi. Phase retrieval via Wirtinger flow: theory and algorithms. IEEE Transactions on Information Theory 61(4), 1985–2007.”官方给的代码用的是matlab,修改成python版本做的时候出了一些问题,因此记录一下。
Phase Retrieval的矩阵涉及到复数,算法中需要用到A’。
matlab中的A’不仅仅是转置,而是共轭转置,因此用python复现时直接用A.transpose()或者A.T会出问题。一般在python中需要采用np.matrix(A),然后用A.H。
另外,python中如果要去矩阵的某一列,使用的方式是
for i in range(N)
a=A[:,i]
但是,若A的shape是M行N列,此时a的shape是(M,)并不是(M,1),且自动转成了行向量。
一般对这样情况的处理方式是:
a=a.reshape((1, -1)) 【保持行向量】
能够将它shape变为(M,1)
或者:
a=a.reshape((-1, 1)) 【转化成向量】
能够将它shape变为(1,M)