【发布时间】:2016-06-17 12:18:24
【问题描述】:
我有一个如下所示的数据文件:
1.0 2.1 2.4 3.0 3.1 3.2 3.7 3.9 4.2
1.3 1.6 1.8 1.9 2.8 2.9 3.7 3.9 4.0 4.4 4.7 4.9
1.4 0.4 0.5 1.5 1.8 2.2 2.5 2.8 2.9 3.6
1.8 1.1 1.3 1.9 2.1 2.8 3.7 3.9 4.0 4.2 4.7 4.9 5.2 5.8
2.1 0.2 0.3 1.1 1.4 1.6 1.9
这里的第一列对应于 x 值(非均匀间隔),对于每个 x 值,该行中的其余数据都是 y 值。我知道每行中 y 值的数量。原始数据文件有 200 行这样的行。对于这些 xs 和 ys 中的每一个,我都有 z(x,y)。现在我想对新网格进行 2D 插值,如下所示:
1.1 1.0 2.2 2.4
1.3 1.1 1.3 2.0 2.2
1.7 1.2 1.5 2.0 2.4
1.9 1.4 1.5 1.8 2.0 2.2 2.4
(40 such rows)
等等。这里和以前一样,第一列是 x (xnew) 值,而行中所有剩余的元素都是 y (ynew) 值,其中没有一个是均匀间隔的。我必须找到 znew(xnew,ynew)。
我分别用Rz和alpha作为xy和z尝试了以下操作:
-
将
z设置为二维数组,并将所有缺失值设置为nan。使用interpolate.interp2d。就是说,No more knots can be added because the number of B-spline coefficients already exceeds the number of data points m. Probably causes: either s or m too small. (fp>s) kx,ky=1,1 nx,ny=128,129 m=16000 fp=nan s=0.000000 and znew has only 0 or nan as values. -
f1=interpolate.griddata(R,z,alpha,method='linear')QH6154 qhull precision error: initial facet 1 is coplanar with the interior point ERRONEOUS FACET: f1=interpolate.RectBivariateSpline(R,z,alpha)它给出了一个错误。
对此数据执行 2D 插值的最佳方法是什么?
【问题讨论】:
-
与其向我们展示您的数据文件是如何组织的,不如展示您的实际
R、z和alpha变量的样本会更有用。
标签: python numpy scipy interpolation