我正在使用 python 2.7 编写一个程序,并且很难确定插入/拟合一些矩形数据的最佳方法。
我有一堆格式为 z=f(x,y) 的已知数据点,其中 x 和 y 在网格上均匀分布。我的 x 点范围从 0 到 100,增量为 0.1。我的 y 点范围从 0 到 100,以 2 为增量。
我在插值或拟合这些数据时遇到的问题是我的 y 数据坐标之间的间距很大。我正在寻找拟合此数据的最佳方法,以便我可以评估任何 (X,Y) 坐标对的高度 Z。我希望得到的表面尽可能光滑。使用 griddata 或 rectbivariatespline 的传统方法不会产生光滑的表面 - 似乎是因为我的 y 点之间的空间比我的 x 点之间的空间大得多。
我考虑的一个选择是使用 polyfit(或类似的东西)将多项式拟合到每个切片(每个 X 处的 Y 与 Z 曲线),然后将这些切片插值在一起以产生更平滑的表面。这似乎是一种迂回的做事方式。那是我最好的选择吗?
将切片拟合到多项式的示例:
如果适合多项式,我的每个切片(固定 X 处的 Y 与 Z)大致为高斯或双峰。它们是相当简单的分布。
我的目标是能够生成一个平滑、紧密贴合的表面,以便在 3D 或 pcolor 样式图表上显示。我需要避免摆动超过 Zmax 和 Zmin。我知道这是使用样条线时的问题。
我的目标:
感谢您提供任何帮助。如果您需要任何详细说明,我会仔细查看此线程并快速回复。
编辑:
从我读过的内容来看,我正在寻找的是一种在 python 中用于 2d 数据的形状保持插值方法。我需要一些类似于 matlab 的 pchip 的东西,但是对于一个表面。我浏览了所有文档,但找不到任何可以保持表面光滑的形状。