Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 如何实现低通滤波器?_Iphone_Iphone Sdk 3.0_Ios4_Signal Processing - Fatal编程技术网

Iphone 如何实现低通滤波器?

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

我正在对陀螺仪和加速计的数据组合进行一些计算,我想对结果数据进行低通滤波。那么,有人能为低通滤波器发布一些通用代码吗?

低通滤波器只是对结果进行平滑处理,以去除高频。最简单的低通滤波器是箱型滤波器,它是通过将n个样本平均在一起来实现的

对于两个样本的平均值,这非常简单:

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只是一个包含加速度计每个轴的当前值的结构。