You need to enable JavaScript to run this app. Python参数曲线拟合:解决splprep生成闭合曲线问题
优惠活动
大模型
产品
解决方案
定价
更多

Python参数曲线拟合:解决splprep生成闭合曲线问题

修正方案

你代码得到闭合曲线的原因是两处设置:

  • 手动将起点坐标追加到了坐标数组末尾,强制首尾点重合
  • splprep的per参数设为True,代表拟合周期(闭合)样条曲线

只需要做两处小幅修改即可得到非闭合的拟合曲线:

  1. 注释/删除追加起点坐标的两行代码
  2. 将per=True改为per=False

修改后的完整代码如下:

import numpy as np
from scipy import interpolate
from matplotlib import pyplot as plt

x = np.array([23, 24, 24, 25, 25])
y = np.array([13, 12, 13, 12, 13])

# 注释掉追加起点的操作
# x = np.r_[x, x[0]]
# y = np.r_[y, y[0]]

# per改为False拟合非周期样条,s=0保证曲线经过所有输入采样点
tck, u = interpolate.splprep([x, y], s=0, per=False)

# 对样条做1000点插值采样
xi, yi = interpolate.splev(np.linspace(0, 1, 1000), tck)

# 绘图
fig, ax = plt.subplots(1, 1)
ax.plot(x, y, 'or')
ax.plot(xi, yi, '-b')
plt.show()

修改后得到的曲线会自动以第一个和最后一个采样点作为首尾端点,符合你的需求。

内容的提问来源于stack exchange,提问作者michael999

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.10 11:12:03