Objective c 在iPhone操作系统中,如何使用移动平均值过滤掉加速计值

Objective c 在iPhone操作系统中,如何使用移动平均值过滤掉加速计值,objective-c,iphone,filter,accelerometer,moving-average,Objective C,Iphone,Filter,Accelerometer,Moving Average,我想使用移动平均值过滤加速度计值,这是如何做到的? 感谢一个简单、单极、低通、递归IIR滤波器能够快速且易于实现,例如 xf = k * xf + (1.0 - k) * x; yf = k * yf + (1.0 - k) * y; 其中x,y为原始(未滤波)x/y加速计信号,xf,yf为滤波输出信号,k确定滤波器的时间常数(通常为0.9到0.9999之间的值…,其中k越大表示时间常数越长) 您可以根据经验确定k,或者如果您知道所需的截止频率,Fc,则可以使用以下公式: k = 1 - ex

我想使用移动平均值过滤加速度计值,这是如何做到的?
感谢

一个简单、单极、低通、递归IIR滤波器能够快速且易于实现,例如

xf = k * xf + (1.0 - k) * x;
yf = k * yf + (1.0 - k) * y;
其中x,y为原始(未滤波)x/y加速计信号,xf,yf为滤波输出信号,k确定滤波器的时间常数(通常为0.9到0.9999之间的值…,其中k越大表示时间常数越长)

您可以根据经验确定
k
,或者如果您知道所需的截止频率,
Fc
,则可以使用以下公式:

k = 1 - exp(-2.0 * PI * Fc / Fs)
其中,
Fs
是采样率

请注意,xf、yf是上述表达式中RHS上输出信号的先前值,以及LHS上的新输出值


另外请注意,我们在此假设您将以固定的时间间隔(例如每10毫秒)对加速计信号进行采样。时间常数将是k和该采样间隔的函数。

因此x和y是加速计。x和加速计。y,我很困惑,我不知道“原始输入信号”是什么:/不,y是滤波信号,x是加速度计给出的信号。写下xf=k*xf+(1.0-k)*x会更清楚,其中xf是x的过滤版本,y轴的方程类似。@Andrew-感谢您的建议-现在编辑以提高清晰度(我希望!)。@PaulR Ok,所以我们平滑了加速计数据,我们应该对哪个值作出反应?你可以简单地计算两个采样加速度之间的差值。还有@PaulR,这真是太棒了!谢谢:)