我想创建一个带通滤波器,将我的音频信号滤波为任意数量的同等大小的子频段。现在我正在尝试使用Butterworth滤波器实现这一目标(对于这种性质的问题,这是一个很好的解决方案吗?)。
假设我的信号采样频率为1200Hz,因此奈奎斯特频率为600Hz。现在我想把这个信号分解成三个不同的子带,每个子带的长度为200Hz。我该如何实现这一目标?
我已经尝试过阅读文档,但我仍然需要一些清理:因为我已经理解了,我想使用以下重载的黄油() - 功能:
butter(#order, [min_freq, max_freq]/nyq_freq)
这是对的吗?它说最小和最大频率必须在区间(0,1) - 我如何创建第一个和最后一个子带?只需选择任意小/大值(0.0001和0.9999)? #order做了什么?高阶对信号提供更精确的截止是否正确,但是它需要更广泛的计算?
答案 0 :(得分:0)
根据文档,Wn
必须介于0和1之间,其中1对应于奈奎斯特半速率 采样率或πrad/样本
但Nyquist rate
与Nyquist frequency
不同(正如您在此处阅读https://dsp.stackexchange.com/questions/26721/difference-between-nyquist-rate-and-nyquist-frequency)
基本上,Nyquist rate
是带宽的两倍。
顺序是滤波器的结果多项式的次数。如果n = 1,信号将衰减20 dB / decade。如果n = 2那么它将衰减40 dB /十年,依此类推。对于某些用途,低阶滤波器将不可能,因为信号将不能在给定频率下衰减到期望值。是的,理论上,顺序越高,截止越精确(并且需要更多的计算),但在实际滤波器中,很难实现非常高阶的滤波器。