我正在使用 python 2.7 处理加速度数据集,为了找到角度,我正在使用 arctan2(y,x)。我的问题是,虽然我的数据可以旋转到 pi 之外,但 arctan2(y,x) 的输出限制在 pi 和 -pi 之间。这意味着每当我超过 pi 时,我的数据都会突然急剧跳跃并循环到负 pi。
我正试图找出一个优雅的解决方案来解决这个问题并使我的图表连续。我已经实现了一个简单的检查,如果我跳了大约 80% 以上,我假设我已经越界并开始向每个后续数据点添加 2 pi。这有效,但感觉很笨重。有没有更优雅的方法来实现这个?或者这是我能做的最好的事情吗?
谢谢^_^
for index in range(1,(len(x_data))):
new_angle = math.atan2((y_data[index]), (x_data[index]))
if (new_angle - angle[index-1]) > 5:
new_angle = new_angle - 6.28
if (new_angle - angle[index-1]) < -5:
new_angle = new_angle + 6.28
angle.append(new_angle)
最佳答案
您尝试做的通常称为“提升”...我使用的代码是
last = 0
out = []
for x, y in data:
angle = math.atan2(y, x)
while angle < last-math.pi: angle += 2*math.pi
while angle > last+math.pi: angle -= 2*math.pi
last = angle
out.append(angle)
两个“while”循环可以更隐蔽地压缩
angle = (angle-last + math.pi)%(2*math.pi)-math.pi + last
关于python - 使 arctan2() 连续超过 2pi,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41917393/