如何在 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 中设计窄带阻滤波器的主要内容,如果未能解决你的问题,请参考以下文章