我有实现低通滤波器的代码,以检测麦克风是否受到打击。
我不明白如何确定频率并选择自己的ALPHA:
lowPassResults = ALPHA * peakPowerForChannel + (1.0 - ALPHA) * lowPassResults;
这应该可以检测到麦克风受到打击。
我想要一个新的ALPHA来实现fc = 1 khz或更高的低通滤波器。
我如何选择另一个ALPHA来做到这一点?
他们采用ALPHA = 0.05,并根据Wikipedia公式,以他们每秒进行30次的采样速率,得出fc为1.2 Hz。
还是应该采用44.1 kHz的采样率?我们以30 Hz采样信号。
最佳答案
这是一个简单的递归低通滤波器,仅用于平滑从麦克风测得的(瞬时)功率。通常,您需要较低的截止频率,例如1 Hz,因此您可以滤除所有噪声并获得平滑的功率测量。增加截止频率(增加ALPHA)将使输出响应更快,但会引入更多噪声。相反,降低截止频率(降低ALPHA)将使输出响应更慢,但也将减少噪声量。
请注意,如果仅以30 Hz更新滤波器,则不能将截止频率设置为1 kHz。 Nyquist rate为15 Hz,因此您只能以低于此频率的频率进行过滤。此外,如果您只想检测麦克风上的吹气,尝试以如此高的频率进行滤波是没有意义的。
关于objective-c - iPhone中的低通滤波器,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6097797/