python - 为沿 y 轴上升的点插值平滑路径
问题描述
这里的目标是生成通过点的平滑路径。路径不一定要经过所有点,但必须接近点上的线性插值。
我尝试过使用三次插值,但在某些情况下,比如这里的“坏情况”,插值路径与原始点的偏差很大。这里的图像显示了一个好案例和一个坏案例。目标是为看起来总是好的路径生成点。在这些情况下,这里使用 Scipys interpolate 为路径插值 2100 个点。这些scipy.interpolate.interp1d(y, x, kind='cubic', assume_sorted=True)
点被排序为具有升序的 y 值。插值在 y 轴上完成。为这两种情况插值的点如下:
Good case
23.204308,-150.612090
14.039986,-149.129036
5.546616,-144.278745
-1.650596,-137.243629
-6.973690,-126.542852
-8.825059,-114.238668
-9.050130,-100.383011
-8.133504,-67.950063
-7.382615,-48.586878
-5.116275,-29.257957
4.157739,-14.768362
13.102034,-7.162435
22.090450,-3.862909
Bad case
23.670263,-147.947479
14.505940,-146.464425
6.012571,-141.614133
-1.184641,-134.579017
-6.507735,-123.878240
-8.359104,-111.574057
-8.584175,-97.718399
-7.667549,-65.285451
-6.916660,-45.922266
-4.650320,-26.593345
4.623694,-12.103750
13.567988,-4.497823
22.598071,-3.951675
对于这些情况,还有哪些其他曲线拟合或插值方法可用于生成平滑的点路径?
Akima 和 pchip 都按照@ev-er 的建议解决了这个问题。Akima 和 pchip 的结果显示在所附图像中。
解决方案
看起来像是来自 scipy.interpolate 的 pchip 或 Akima1DInterpolator 的案例
推荐阅读
- java - 如何在 ARCore 和 Sceneform 中翻译对象?
- java - Netbeans:无断点开始调试
- c# - 标记对象更改时如何更新 WinForms TreeView?
- android - 显示处理程序的剩余时间
- c++ - 模板参数中的访问控制
- visual-studio - 如何使 Visual Studio 项目从 .props 文件继承英特尔性能库的配置设置?
- kubernetes - 无法通过主授权网络访问 Google 私有集群
- javascript - 如何使用 React Hooks 重构现有代码?
- python-3.x - 是否有一个属性可以捕获散景数据表中数据的顺序?
- spring - Accessing JWT Token from a Spring Boot Rest Controller