Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/353.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python拟合二维矩形数据_Python_Numpy_Scipy_Interpolation - Fatal编程技术网

Python拟合二维矩形数据

Python拟合二维矩形数据,python,numpy,scipy,interpolation,Python,Numpy,Scipy,Interpolation,我正在用Python2.7编写一个程序,很难找到插值/拟合矩形数据的最佳方法 我有一堆格式为z=f(x,y)的已知数据点,其中x和y在网格上均匀分布。我的x点范围从0到100,增量为0.1。我的y点范围从0到100,增量为2 我在插值或拟合此数据时遇到的问题是y数据坐标之间的间距过大。我正在寻找拟合此数据的最佳方法,以便计算任何(X,Y)坐标对的高度Z。我希望生成的曲面尽可能平滑。使用griddata或矩形二元样条线的传统方法无法生成平滑曲面,这似乎是因为y点之间的空间远大于x点之间的空间 我考

我正在用Python2.7编写一个程序,很难找到插值/拟合矩形数据的最佳方法

我有一堆格式为z=f(x,y)的已知数据点,其中x和y在网格上均匀分布。我的x点范围从0到100,增量为0.1。我的y点范围从0到100,增量为2

我在插值或拟合此数据时遇到的问题是y数据坐标之间的间距过大。我正在寻找拟合此数据的最佳方法,以便计算任何(X,Y)坐标对的高度Z。我希望生成的曲面尽可能平滑。使用griddata或矩形二元样条线的传统方法无法生成平滑曲面,这似乎是因为y点之间的空间远大于x点之间的空间

我考虑的一个选择是使用多边形拟合(或类似的方法)将多项式拟合到每个切片(每个X处的Y与Z曲线),然后将这些切片插值在一起以生成更平滑的曲面。这似乎是一种迂回的做事方式。这是我最好的选择吗

将切片拟合到多项式的示例:

如果适合多项式,我的每个切片(在固定的X上Y与Z)大致是高斯或双峰的。它们是相当简单的分布

我的目标是能够生成一个平滑、紧密贴合的曲面,以便在3D或pcolor样式图表上显示。我需要避免摆动超过Zmax和Zmin。我知道这是使用样条曲线时的一个问题

我的目标是:

谢谢你能提供的任何帮助。我会仔细观察这篇文章,如果你需要详细说明,我会迅速回复

编辑:

从我所读到的内容来看,我所寻找的似乎是python中用于2d数据的保形插值方法。我需要的东西沿线的pchip的matlab,但表面。我查阅了所有的文档,但没有找到任何可以保持形状的东西,使我的表面光滑

使用griddata或矩形双变量样条线的传统方法不适用 产生光滑的表面-似乎是因为 y点远大于x点之间的间距”

您应该尝试适当地缩放y坐标——至少griddata假设一个欧几里德度量,即所有维度的长度缩放都是相似的


另一方面,如果您想要保形插值,请参见我的答案。但是,这样的插值不会进行任何平滑处理,因此可能这毕竟不是您想要的。

您可以在Google代码库中尝试我的BSD许可numpy和scipy基础曲线曲面拟合库:

它有很多例子,包括用于性能的Python并行编程。因为它是免费的,所以尝试它不会花费任何费用


James

我不在办公桌旁,但我相信有正则化样条插值方法。可能值得研究。你尝试过吗?谢谢你的保形解决方案。今天下午我将尝试实施它。当你说pchip方法不会进行任何平滑时,它仍然会生成比线性插值更平滑的曲面r插值-正确吗?因为峰值将被舍入而不是锯齿点?这是我从阅读本文中得到的:是的,IIRC它将生成一个具有连续导数的曲面,但仍然会通过所有数据点进行插值。