【发布时间】:2015-09-03 07:08:59
【问题描述】:
所以我想读入多组数据并将它们与一组数据进行比较以进行网格分辨率研究。我设置了一个基本脚本,可以从我的 CFD 代码的转储文件中读取我的数据。它在我的数据集之间进行插值并且工作正常,但它只绘制我的数据之间的样条曲线。
f = open('x_data.dat','r')
xd=np.genfromtxt(f)
f.close()
f = open('y_data.dat','r')
yd=np.genfromtxt(f)
f.close()
plt.plot(xd,yd,'o')
t = np.arange(xd.shape[0], dtype=float)
t /= t[-1]
nt = np.linspace(0, 1, 100)
x1 = scipy.interpolate.spline(t, xd, nt)
y1 = scipy.interpolate.spline(t, yd, nt)
plt.plot(x1, y1, label='range_spline')
plt.show()
我想保留该样条数据并将其用作 f(x,y) 以将其他 x,y 数据插入并检查表面位置是否符合我的“精确解决方案”应该是的。我的其他数据集中的数据与确切的解决方案数据不一致,因此需要插值。有没有办法在每个点之间存储样条数据,这样我就可以获得一个我可以像函数一样使用的 f(x,y) ?此外,这些样条曲线是立方的。看起来不是立方体,我找不到简单的答案。
【问题讨论】:
-
你能用 scipy.interpolate.interp1d 代替吗?这将返回一个您可以重用的函数(并且您可以指定三次插值)。请注意,默认情况下,如果您传入超出范围的值,则会引发错误,因此它根本不会外推。
-
我的数据不是单调的,它是封闭的楔形。所以我认为我不能使用那个特定的插值。我不需要插值,我只需要一条曲线来测量到它周围点的正常距离。
-
*我不需要推断
标签: python matplotlib scipy interpolation spline