繁体   English   中英

如何使用 Python 在非直角坐标中插值?

[英]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) 的补偿系数。 在此处输入图像描述

  1. 如何做到这一点? 我在看 scipy.interpolate.interp2d 但我不确定这是我的情况
  2. 如果我想添加更多点,定义我的网格怎么办?

您正在处理 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM