【发布时间】:2020-06-22 21:04:42
【问题描述】:
我试图对一些数据进行插值,以便为我拥有的一些数据点制作一条平滑曲线,但 interp1d 不适用于使用我拥有的 x 值,如果我只是将新的 x 向量设为 [1, 2,3,4,5,6,7,8],但是对于原始 x 值,我得到了一些根本不适合数据的曲线。
我想知道是否是我的 x 向量的大跨度导致了问题?
我的数据是这样的:
y = np.array([0.768, 0.901, 1.790, 1.213, 0.543, 0.261, 0.121, 0.049])
x = np.array([1.2e-17, 3.7e-16, 1.2e-14, 2.8e-13, 4.8e-12, 9.2e-11, 2.0e-9, 5.0e-8])
尝试插值和绘图:
xnew = np.linspace(np.min(x),np.max(x),100)
f = interp1d(x, y, kind='quadratic')
y_smooth=f(xnew)
plt.scatter(x,y)
plt.plot(xnew, y_smooth)
plt.ylim(0,2)
plt.xscale('log')
plt.show()
给出一个完全没有意义的数字。我已经用谷歌搜索并搜索了几个小时的解决方案,尝试了不同的方法,例如曲线拟合,但似乎没有任何效果。
更改 x 数据向量,得到所需的曲线,但显然 x 值错误:
new_x_data = [1,2,3,4,5,6,7,8]
plt.scatter(new_x_data,y)
任何帮助将不胜感激。
【问题讨论】:
标签: python numpy interpolation