[英]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.