簡體   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