我想从最小二乘的意义上解决以下问题:
H = dot(A, B) + dot(A.conj(), C)其中,复矩阵H,B和C已知。正在搜索剩余的复矩阵A (及其复共轭)。
我尝试用(Python) numpy函数计算它:
x, res, r, singval = np.linalg.lstsq(np.vstack((B, C)), H)然而,结果并不是我想要的形状(-> array((A, A.conj()))。
我怎么才能解决这个问题?
发布于 2015-07-14 06:28:24
我发现的最简单的方法是将A的值划分为实部和虚部:
A = U + 1j*V因此:
H = dot(U, B+C) + 1j*dot(V, B-C)通过使用scipy.optimize.lstsqr,该模型被定义为:
def model(B, C, UV):
U = UV[:len(UV)//2]
V = UV[len(UV)//2:]
H = np.dot(U, B+C) + 1j*np.dot(V, B+C)
return H.view(float)残值为:
def residuals(params, B, C, H):
UV = params
diff = model(B, C, UV) - H.view(float)
return diff.flatten()所得结果如下:
params, cov = optimize.leastsq(residuals, x0 = np.ones(len(UV), dtype = float),
args=(B, C, H))https://stackoverflow.com/questions/31358765
复制相似问题