NumPy中有类似MATLAB的griddata3吗?
我知道在 NumPy 中可以通过 Matplotlib 使用 griddata,但有没有类似 griddata3 的东西(就是处理更高维度的)呢?
换句话说,我有一组数据 (x,y,z,d(x,y,z)),其中 (x,y,z) 形成一个不规则的网格,而 d(x,y,z) 是一个关于这三个变量的标量函数。我需要为一组新的点 (xi, yi, zi) 生成 d(xi, yi, zi) 的值,使用某种可以处理原始 (x,y,z) 数据不均匀性的插值方法。
最终,我需要把 (xi, yi, zi, d(xi, yi, zi)) 这些数据以某种方式呈现为一个表面,但这个问题可以稍后再解决。我也没有 d(.) 函数的解析形式;我只是有它的数据。
3 个回答
1
我不太确定你打算怎么展示一个由三个变量组成的标量函数的表面,除了可能使用切平面或者类似的方法。Mayavi(其实是支持Mayavi的VTK)可以高效地进行Delaunay三角剖分,这个功能通过enthought.mayavi.mlab.pipeline.delaunay3d
实现,这也是griddata3
使用的核心算法。你可以查看他们发布的二维示例代码,只需增加一个维度(并使用delaunay3d
)。我不知道有没有办法明确获取用于渲染表面的插值值,但可能可以通过Mayavi进行采样,你可以查阅文档或者在Enthought的邮件列表上询问。
另外,NCAR的natgrid库中的某个C函数可能会有用,比如dsgrid3d。还有一个部分封装已经作为matplotlib工具包实现。