Iphone 如何实现低通滤波器?
我正在对陀螺仪和加速计的数据组合进行一些计算,我想对结果数据进行低通滤波。那么,有人能为低通滤波器发布一些通用代码吗?低通滤波器只是对结果进行平滑处理,以去除高频。最简单的低通滤波器是箱型滤波器,它是通过将n个样本平均在一起来实现的 对于两个样本的平均值,这非常简单:Iphone 如何实现低通滤波器?,iphone,iphone-sdk-3.0,ios4,signal-processing,Iphone,Iphone Sdk 3.0,Ios4,Signal Processing,我正在对陀螺仪和加速计的数据组合进行一些计算,我想对结果数据进行低通滤波。那么,有人能为低通滤波器发布一些通用代码吗?低通滤波器只是对结果进行平滑处理,以去除高频。最简单的低通滤波器是箱型滤波器,它是通过将n个样本平均在一起来实现的 对于两个样本的平均值,这非常简单: sample[n] (sample[n] + sample[n + 1]) / 2; 一阶IIR低通滤波器的形式如下: output_value = rate * input_value + (1.0 - rate) * pre
sample[n] (sample[n] + sample[n + 1]) / 2;
一阶IIR低通滤波器的形式如下:
output_value = rate * input_value + (1.0 - rate) * previous_output_value;
这与苹果公司的加速度计示例中的内容差不多。您可以根据想要滚动或开始衰减以获得更平滑的结果输出的频率(非常非常粗略的每秒抖动)以及输入数据的采样率来选择速率参数。如果苹果的示例太复杂,您无法理解,我为我的类创建了一个更简单的加速计示例,您可以下载它。这为原始加速计值实现了一个简单的低通和高通滤波器,然后将结果记录到屏幕上
正如hotpaw2和Goz所描述的,这使用一个非常简单的加权滚动平均值进行过滤器计算:
UIAccelerationValue lowPassFilteredXAcceleration = (currentXAcceleration * kLowPassFilteringFactor) + (previousLowPassFilteredXAcceleration * (1.0 - kLowPassFilteringFactor));
您希望代码生成系数还是只执行过滤?它应该是IIR还是FIR滤波器?我想要一个类似于苹果用来过滤加速度计数据的滤波器。只有他们的代码对我不起作用。它以什么方式不起作用?似乎我需要传入UIAccelerator结构(我没有使用),除非它只是一个保存当前加速度计值的结构?UIAcceleration只是一个包含加速度计每个轴的当前值的结构。