大约有 2000 个数据点,plot 出来基本是这样的。

需要写一个脚本,实现的功能是:输入所有点的横纵坐标,然后进行分段一次线性拟合(需要分成 9 段,也就是需要确定 10 个点的坐标),使得最终整体的残差值最小,想用 Python 实现。
最终的结果示意如图。

我之前使用 MATLAB 实现了,但是由于这个功能是整个项目的一部分,项目的整体是在用 Python,因此希望用 Python 实现。
之前的使用 MATLAB 实现的办法是:
- 使用 cftool 中的高斯拟合将 2000 个点拟合成 8 阶高斯曲线;
- 对拟合的曲线求二阶导数,然后找极值,极值绝对值较大的地方就是“弯曲”厉害的地方。从大到小排序,然后取包括前后端点在内的极值点的前十个,将十个点放在这些极值点的地方。 当然,实际写起来有些边界条件需要处理,这里就不详述了。
这个方法不是很优雅,而且效果不是很好。问题来了,Python 有没有更好的解决类似问题的办法?
提前感谢各位。
