相关疑难解决方法(0)

找到从点到复杂曲线的最小距离

我有一个复杂的曲线定义为表中的一组点,如此(完整的表在这里):

#  x   y
1.0577  12.0914
1.0501  11.9946
1.0465  11.9338
...
Run Code Online (Sandbox Code Playgroud)

如果我使用命令绘制此表:

plt.plot(x_data, y_data, c='b',lw=1.)
plt.scatter(x_data, y_data, marker='o', color='k', s=10, lw=0.2)
Run Code Online (Sandbox Code Playgroud)

我得到以下内容:

在此输入图像描述

我手动添加红点和段的地方.我需要的是一种计算每个点的那些段的方法,即:找到从该2D空间中的给定点到插值曲线的最小距离的方法.

我不能使用到数据点本身的距离(产生蓝色曲线的黑点),因为它们不是以相等的间隔定位,有时它们是接近的,有时它们相距很远,这深深地影响了我的结果.线.

由于这不是一个表现良好的曲线,我不能确定我能做什么.我尝试使用UnivariateSpline进行内插,但它返回的非常差:

# Sort data according to x.
temp_data = zip(x_data, y_data)
temp_data.sort()
# Unpack sorted data.
x_sorted, y_sorted = zip(*temp_data)

# Generate univariate spline.
s = UnivariateSpline(x_sorted, y_sorted, k=5)
xspl = np.linspace(0.8, 1.1, 100)
yspl = s(xspl)

# Plot.
plt.scatter(xspl, yspl, marker='o', color='r', s=10, lw=0.2)
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

我也试过增加插值点的数量但是弄得一团糟:

# Sort data according …
Run Code Online (Sandbox Code Playgroud)

python interpolation numpy spline scipy

16
推荐指数
2
解决办法
6686
查看次数

标签 统计

interpolation ×1

numpy ×1

python ×1

scipy ×1

spline ×1