IIR滤波器设计

采用butter函数设计二阶带通滤波器,代码如下:

fs = 5000; % 采样频率 f1 = 100; % 通带下限频率 f2 = 2000; % 通带上限频率 Wp = [2f1/fs, 2f2/fs]; [n, Wn] = buttord(Wp, [1.5f1/fs, 2.5f2/fs], 3, 60); [b, a] = butter(n, Wn, 'bandpass'); freqz(b, a, 512, fs);

其中,buttord函数用于计算滤波器的阶数和截止频率,butter函数用于设计滤波器的系数。

得到的滤波器的单位冲击样响应和频率响应如下图所示:

IIR滤波器单位冲击样响应和频率响应

FIR滤波器设计

采用fir1函数设计带通滤波器,代码如下:

fs = 5000; % 采样频率 f1 = 100; % 通带下限频率 f2 = 2000; % 通带上限频率 Wn = [2f1/fs, 2f2/fs]; n = 200; % 滤波器阶数 b = fir1(n, Wn, 'bandpass'); freqz(b, 1, 512, fs);

其中,fir1函数用于设计滤波器的系数。

得到的滤波器的单位冲击样响应和频率响应如下图所示:

FIR滤波器单位冲击样响应和频率响应

性能分析与比较

从频率响应上看,两种滤波器都能实现100-2000Hz的带通滤波功能,但是FIR滤波器的截止频率更为陡峭,抑制效果更好。

从单位冲击响应上看,FIR滤波器的响应更为精确,没有IIR滤波器的振荡现象。

综上,FIR滤波器的性能更优

利用matlab分别设计IIR滤波器和FIR滤波器实现带通滤波功能。要求:采样频率 f_s=5000Hz 通带频率100-2000Hz阶数自选分别画出所设计的滤波器的单位冲击样响应和频率响应并对通过以上两种方法所设计的滤波器的性能进行分析与比较。

原文地址: https://www.cveoy.top/t/topic/hkDS 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录