【发布时间】:2018-05-06 21:42:29
【问题描述】:
我需要去除 0.667 - 3.833 Hz 范围之外的频率(心率范围:40 到 230 bpm)。我查看了 Apple 文档,但我只看到了 AVFoundation Butterworth 过滤器。显然,“值的有效范围是 20 Hz 到 (SampleRate/2)。”该滤波器来自 AVAudioUnitEQ,因此可以理解...我似乎无法找到在我正在使用的频率范围内工作的任何滤波器。
我是否必须实现自己的 Butterworth 过滤器,或者我缺少什么?
编辑:所以我对文档进行了深入研究,发现了 IIR filter 和 FIR filter,但这并不是我所期望的...... IIR 滤波器是“级联双二阶 IIR 滤波器”,不是Butterworth filter(这是我更喜欢的)。我做了一个little reading,但我不知道这个过滤器应该如何工作。如果我使用这些系数,我可以实现与巴特沃斯滤波器类似的功能吗?如果是这样,我该怎么做?目标是获得没有波纹的平坦通带。
我正在关注的博文:http://www.ignaciomellado.es/blog/Measuring-heart-rate-with-a-smartphone-camera
包含一些双二阶滤波器建议的博文:http://www.ignaciomellado.es/blog/Measuring-heart-rate-with-a-smartphone-camera
【问题讨论】:
-
如果您使用 Swift for iOS 或 macOS 进行编码,Accelerate 框架 (vDSP) 包含双二阶 IIR 过滤例程。但是,一个数值更稳定的解决方案将涉及首先进行低通滤波,然后在带通滤波之前对数据进行下采样。
-
@hotpaw2 是的,这正是我正在做的。我刚刚阅读了一篇提到您的建议的博客文章。很有可能,我会这样做。
-
@JacquesThibodeau 您是否能够在 Swift 中找到可接受的解决方案?