计算数字低通巴特沃斯滤波器的阶数
Calculating the order of digital low pass butterworth filter
我被要求使用 MATLAB 设计具有以下规格的数字低通巴特沃斯滤波器:
- 1.5 kHz 截止频率
- 3 kHz 时的 10 dB 阻带衰减
- 8 kHz 的采样频率
我计算出滤波器的阶数是 1.57。正如我们所知,我们需要 ceil 这个值以确保过滤器满足规范。但是,在 matlab 中我使用
buttord()
此函数 return 是本例中的最低阶。那么如何 return 最高阶而不是 return 最低阶呢?
没有最高阶的巴特沃斯滤波器,因为任何大于或等于 buttord
返回结果的阶数都可以满足规格。
由于采样率为 8kHz,因此奈奎斯特频率为 4kHz。如果你假设 3dB 通带纹波(这是标准的),那么调用 buttord
我们得到
Fn = 4000;
Wp = 1500/Fn;
Ws = 3000/Fn;
Rp = 3;
Rs = 10;
ord = buttord(Wp, Ws, Rp, Rs)
得出 ord = 1
。使用滤波器设计器,我们可以设计这样一个滤波器,我们看到确实存在符合规范的 1 阶巴特沃斯滤波器。
如果您将过滤器导出到您的工作区(假设您已保存到 SOS
和 G
变量中),那么您可以使用 freqz
进行绘图,如下所示
[b,a] = sos2tf(SOS,G);
freqz(b,a,[],8000);
如果您想使用 butter
设计过滤器,那么您可以使用
[n,Wn] = buttord(Wp, Ws, Rp, Rs);
[b,a] = butter(n,Wn);
freqz(b,a,[],8000);
这导致阻带开始处的衰减正好为 10dB,通带中的衰减小于 3dB。
我被要求使用 MATLAB 设计具有以下规格的数字低通巴特沃斯滤波器:
- 1.5 kHz 截止频率
- 3 kHz 时的 10 dB 阻带衰减
- 8 kHz 的采样频率
我计算出滤波器的阶数是 1.57。正如我们所知,我们需要 ceil 这个值以确保过滤器满足规范。但是,在 matlab 中我使用
buttord()
此函数 return 是本例中的最低阶。那么如何 return 最高阶而不是 return 最低阶呢?
没有最高阶的巴特沃斯滤波器,因为任何大于或等于 buttord
返回结果的阶数都可以满足规格。
由于采样率为 8kHz,因此奈奎斯特频率为 4kHz。如果你假设 3dB 通带纹波(这是标准的),那么调用 buttord
我们得到
Fn = 4000;
Wp = 1500/Fn;
Ws = 3000/Fn;
Rp = 3;
Rs = 10;
ord = buttord(Wp, Ws, Rp, Rs)
得出 ord = 1
。使用滤波器设计器,我们可以设计这样一个滤波器,我们看到确实存在符合规范的 1 阶巴特沃斯滤波器。
如果您将过滤器导出到您的工作区(假设您已保存到 SOS
和 G
变量中),那么您可以使用 freqz
进行绘图,如下所示
[b,a] = sos2tf(SOS,G);
freqz(b,a,[],8000);
如果您想使用 butter
设计过滤器,那么您可以使用
[n,Wn] = buttord(Wp, Ws, Rp, Rs);
[b,a] = butter(n,Wn);
freqz(b,a,[],8000);
这导致阻带开始处的衰减正好为 10dB,通带中的衰减小于 3dB。