[英]How to interpolate values in non-rectangular coordinates using Python?
我需要使用 Python 对我的光学系统中的值进行补偿。我已经测量了我的补偿参数在我桌子角落的依赖性,我想在那里线性插入这样的值,但是 map 不是矩形。 例子:
# Corners coordinates:
a_real = (45, 45)
a_coeff = (333, 223)
b_real = (-45, -45)
b_coeff = (325, 243)
c_real = (-45, 45)
c_coeff = (339, 244)
d_real = (45, -45)
d_coeff = (319, 228)
比方说,我想知道点 (40, 40) 或 (0, 0) 的补偿系数。
您正在处理 2D非结构化点,因此您可以使用例如 SciPy 的interpolate.griddata
function。
我会建议以下解决方案。 我以更方便的方式重新排列了您的数据。 您可以将所有想要的points
添加到点 NumPy 数组中。
import numpy as np
from scipy.interpolate import griddata
points = np.array([[333, 223], [325, 243], [339, 244], [319, 228]])
values_a = np.array([45, -45, -45, 45])
values_b = np.array([45, -45, 45, -45])
new_value_a = griddata(points, values_a, (325, 232), method="nearest")
new_value_b = griddata(points, values_b, (325, 232), method="nearest")
该代码允许您计算坐标为(325, 232)
的新点的两个值。 如果新点位于您的点定义的凸包之外,则需要设置fill_value
参数的值(除非您使用文档中解释的nearest
方法)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.