如何在 MATLAB 中设计窄带阻滤波器

Posted

技术标签:

【中文标题】如何在 MATLAB 中设计窄带阻滤波器【英文标题】:How to design a narrow band stop filter in MATLAB 【发布时间】:2014-08-27 04:51:49 【问题描述】:

我是使用 Matlab 进行信号处理的新手。我有一个包含 10000 个点的信号。进行 FFT 后,我发现位于 3 附近的频点应该被移除。我使用 Kaiser 窗设计了一个 FIR 带阻滤波器。我尝试将窗口长度增加到大约 512 或更高,并且还增加了 fir1 中的顺序。但是,归一化的阻带总是接近 0。我认为 FIR 的阶数非常大会带来一些问题。是否有其他方法可以设计窄带阻滤波器并保持相位不变?谢谢大家! 我的代码如下所示:

win=kaiser(513,10);
b=fir1(512,[2.8/1000,3.3/1000],'stop',win);
y=filtfilt(b,1,x); % x is input signal which length is 10000

【问题讨论】:

【参考方案1】:

对于零相位数字滤波,matlab 中有 filtfilt。

一些过滤器具有不同练习可接受的相位变化, 您可以尝试使用 iir 过滤器,例如 matlab 中的 butterworth 过滤器。

[b,a] = 黄油(n,Wn,'stop')

【讨论】:

以上是关于如何在 MATLAB 中设计窄带阻滤波器的主要内容,如果未能解决你的问题,请参考以下文章

语音增强基于 iir带阻滤波器语音增强matlab源码

带通滤波 matlab

窄带陷波滤波器(Notch filter)

实验五 基于MATLAB的模拟滤波器设计

肌电信号基于matlab低通滤波肌电信号处理含Matlab源码 964期

基于等波纹最佳逼近法的FIR数字滤波器实现matlab仿真