Python:在三角形网格中插值

时间:2017-07-15 12:09:28

标签: python interpolation mesh

是否有任何体面的Pythonic方法在三角形网格中进行插值,还是我需要自己实现?也就是说,给定一个(X,Y)点,我们将调用P和一个网格((X,Y)的顶点,其值为Z,形成三角形面),估计P处的值。这意味着首先找到包含该点的小平面,然后进行插值 - 理想情况下是一个更高阶的插值,而不仅仅是在平面的顶点之间线性地插入" (即考虑到相邻方面)?

我可以自己实现它,但是如果已经有了Python中可用的东西......

(我检查了scipy.interpolate,但它的"网格"似乎只是常规点网格。这不是网格,它是真正的2D网格;顶点可以定位任何地方。)

1 个答案:

答案 0 :(得分:1)

我经常使用matplotlib.tri来达到这个目的。这里Xv,Yv是三角形的顶点(或节点),Zv是这些节点的值:

from matplotlib.tri import Triangulation, LinearTriInterpolator, CubicTriInterpolator

#you can add keyword triangles here if you have the triangle array, size [Ntri,3]
triObj = Triangulation(Xv,Yv) 

#linear interpolation
fz = LinearTriInterpolator(triObj,Zv)
Z = fz(X,Y)
#cubic interpolation
fzc = CubicTriInterpolator(triObj,Zv)
Zc = fz(X,Y)
相关问题