【发布时间】:2019-01-29 17:22:16
【问题描述】:
我正在使用atan2(在 MATLAB 中)计算角度,然后取角度的梯度。我可以看到在 pi 和 pi/2 这样的地方角度不平滑,但这在图中不可见。然后,绘制角度的梯度会显示大的负尖峰。我可以通过设置绘图的限制 (ylim) 来忽略这些,但这不是一个好的通用解决方案。
我可以以某种方式避免平滑度问题,或者在计算后平滑角度吗?
这里有更多的背景。我正在使用数值 ODE 求解器(特别是 SUNDIALS CVODE)来计算二维情况下的行星轨道,因此结果是两个与时间相关的向量,我们称它们为 x 和 y。然后atan2 给了我角度,角度的梯度给了我角速度。我尝试了 MATLAB smoothdata,但它并没有解决手头的问题。
代码只是MATLABatan2和gradient,除了轨道的计算,但这应该与这个问题无关。
我需要消除角速度中的负尖峰。
【问题讨论】:
-
你能告诉我们一些代码和你的情节吗?没有具体的例子很难理解(见minimal reproducible example)。另请注意,
atan2返回的值介于-pi和pi之间。您是否正在寻找unwrap? -
确实,尖峰出现在角度从 -pi 翻转到 pi 的位置吗?您应该绘制角度来验证这一点。如果不是这种情况,请发布代码并上传您的情节,以便我们查看!
标签: matlab gradient smoothing atan2