您用于低通的差分方程是
Xn= ( 1 - α )Xn - 1+ α你n,(1)
在哪里α是你的“遗忘因素”,你n是您的输入,并且Xn是你的低通滤波版本。
这适用于无限范围的数字(如您所见)。要使用角度到达您想去的地方,请将 (1) 重铸为
Xn=Xn - 1+ α (你n-Xn - 1) .(2)
请注意,这在代数上具有相同的作用。还要注意,您已经明确区分了当前输入和最后一次报价的估计。
现在交叉手指,希望您的角度误差永远不会超过 180 度。如果这是正确的,那么您可以修改(2):
Xn=Xn - 1+ α ( (你n-Xn - 1)莫_ ds 360∘) .(3)
只要您在莫_ds. 您需要一个始终返回最小数量的模运算,即使它是负数。所以90∘ 莫_ds 360 = 90, 但270∘ 莫_ds 360 = - 90.
我经常过滤角度,并且一直使用它。它工作得很好。
不同的语言和库以不同的方式实现模函数(一些旧版本的 C 并没有具体说明它们的作用;如果其他语言也不是这种情况,请不要感到惊讶)。因此,是否正确取决于您。在 Python 和带有整数的 C/C++ 中,我认为这可行:
result = (x + 180) % 360 - 180;
但是你应该以此为出发点并从那里弄清楚。