ton*_*ngy 1 c c++ signal-processing filter pcm
美好的一天.我很擅长DSP.我很难理解算法.我有一个ac#应用程序,一个记录声波的录音机功能,但这个声音是所有声音的混合物.具体来说,当我收到数据时,我将过滤此数据以仅保存高频滤波后的音频数据,例如截止频率为15khz.对于此滤波器,给出的是具有大小和截止频率的数据样本
C/C++很好
在我收到数据样本时,应用高通滤波器然后将结果保存到wav.
-thong
在设计合适的滤波器之前,您需要了解采样率并对滤波器规格有一个合理的了解.仅仅指定一个15 kHz的截止值就不够了,例如你可能需要这样的东西:
Sample rate: 44.1 kHz
Stop-band: < 12 kHz
Stop-band rejection: > 80 dB
Pass-band: > 15 kHz
Passband ripple: +/- 1 dB
Run Code Online (Sandbox Code Playgroud)
然后,您可以将这些参数提供给滤波器设计包,这将为您提供所有滤波器系数等.
请注意,滤波器的复杂性(即滤波器阶数=阶段数或"抽头")将高度依赖于滤波器规范,因此理想情况下,您希望使用滤波器设计包,以便您轻松地使用规范,以便您可以根据所需的计算带宽权衡您的设计要求.
您还需要确定相位和/或群延迟对您来说是否重要 - 如果相位/延迟不重要(实现成本要低得多),则使用线性相位FIR进行恒定群延迟(更昂贵)或递归IIR.
请注意,有免费的在线过滤器设计包,例如http://www-users.cs.york.ac.uk/~fisher/mkfilter/看起来相当不错(它甚至可以为您生成C代码过滤器实现),虽然在选择滤波器类型等时可能至少需要初学者级的信号处理知识.
为了帮助理解基本的滤波器设计参数,这是http://dspguru.com的有用图表.请注意,这适用于低通滤波器,但相同的参数适用于高通情况.
