我有一个不均匀间隔的 (x,y) 值列表。这是此问题中使用的存档。
我能够在值之间进行插值,但我得到的不是等间距的插值点。这就是我所做的:
x_data = [0.613,0.615,0.615,...]
y_data = [5.919,5.349,5.413,...]
# Interpolate values for x and y.
t = np.linspace(0, 1, len(x_data))
t2 = np.linspace(0, 1, 100)
# One-dimensional linear interpolation.
x2 = np.interp(t2, t, x_data)
y2 = np.interp(t2, t, y_data)
# Plot x,y data.
plt.scatter(x_data, y_data, marker='o', color='k', s=40, lw=0.)
# Plot interpolated points.
plt.scatter(x2, y2, marker='o', color='r', s=10, lw=0.5)
结果是:
可以看出,在图中原始点分布更密集的部分,红点更靠近。
我需要一种方法来根据给定的步长值(比如 0.1)生成在 x、y 中等距的插值点
正如askewchan正确指出的那样,当我的意思是“在 x、y 中等距”时,我的意思是曲线中的两个连续插值点应该彼此相距相同的值(欧几里得直线距离)。
我尝试了 unubtu 的答案,它适用于平滑曲线,但似乎不那么平滑:
发生这种情况是因为代码以欧几里德方式而不是直接在曲线上计算点距离,并且我需要曲线上的距离在点之间是相同的。这个问题可以以某种方式解决吗?