python - 将基矩阵的变化拟合到数据
问题描述
取简单的关系:
A*X + X0 = B,
其中 X、X0 和 B 是 2*1 向量,A 是 2*2 矩阵,我想在给定一组点 (X, B) 的情况下找到最好的 (A, X0)。
scipy.optimize
我在图书馆里找不到任何直接适合这个问题的东西。
解决方案
该方程可以使用线性最小二乘法求解:
其中(Ax, Ay)
是第一个基地(Bx, By)
的点坐标, 是第二个基地的点坐标。[[a, b], [c, d]]
是仿射变换矩阵(缩放和旋转)并且[tx, ty]
是平移。
import numpy as np
A = np.array([[1, 3], [1, 2], [1, 1], [2, 1]])
B = np.array([[4, -2], [4, -4], [4, -6], [2, -6]])
R, residuals, rank, s = np.linalg.lstsq(np.hstack([A, np.ones((A.shape[0], 1))]), B, rcond=None)
R
#array([[-2.00000000e+00, -1.07062737e-15],
# [ 4.44089210e-16, 2.00000000e+00],
# [ 6.00000000e+00, -8.00000000e+00]])
推荐阅读
- ubuntu - 为什么浏览器无法在 Nginx 上打开文件?
- reactjs - 是否可以在生产构建(webpack / craco)上更改样式表 URI?
- javascript - 更换减速机正确打字
- javascript - 使用我想知道这张照片是浏览过的还是用相机拍的
- javascript - 如何使用 Google App Scripts 从工作表名称创建字符串?
- excel - 如何从版本数组中返回最新文档版本的值?
- ios - 无法在 iOS 14 内联 DatePicker 中点击天数
- css - vh 和 vw 单位的缺点是什么?
- azure-sql-database - 如何在远程 Azure SQL Server 的视图中创建数据所在的视图
- html - Img 在 HTML 5 中未加载