首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >蟒蛇最小二乘拟合的约束

问蟒蛇最小二乘拟合的约束
EN

Stack Overflow用户
提问于 2015-07-11 15:31:42
回答 1查看 325关注 0票数 2

我想从最小二乘的意义上解决以下问题:

代码语言:javascript
复制
H = dot(A, B) + dot(A.conj(), C)

其中,复矩阵H,B和C已知。正在搜索剩余的复矩阵A (及其复共轭)。

我尝试用(Python) numpy函数计算它:

代码语言:javascript
复制
x, res, r, singval = np.linalg.lstsq(np.vstack((B, C)), H)

然而,结果并不是我想要的形状(-> array((A, A.conj()))。

我怎么才能解决这个问题?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-07-14 06:28:24

我发现的最简单的方法是将A的值划分为实部和虚部:

代码语言:javascript
复制
A = U + 1j*V

因此:

代码语言:javascript
复制
H = dot(U, B+C) + 1j*dot(V, B-C)

通过使用scipy.optimize.lstsqr,该模型被定义为:

代码语言:javascript
复制
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)

残值为:

代码语言:javascript
复制
def residuals(params, B, C, H):
    UV = params
    diff = model(B, C, UV) - H.view(float)
    return diff.flatten()

所得结果如下:

代码语言:javascript
复制
params, cov = optimize.leastsq(residuals, x0 = np.ones(len(UV), dtype = float), 
                               args=(B, C, H))
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31358765

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档