"基于MATLAB的FIR数字滤波器设计"
本文档主要介绍了基于MATLAB的FIR数字滤波器设计,包括实验目的、实验原理、低通滤波器的常用指标、数字滤波器的类型、MATLAB中的设计方法等。
一、实验目的
加深对数字滤波器的常用指标和设计过程的理解。
二、实验原理
低通滤波器的常用指标包括:
* 通带边缘频率
* 阻带边缘频率
* 通带起伏
* 通带峰值起伏
* 阻带起伏
* 最小阻带衰减
数字滤波器有IIR和FIR两种类型,它们的特点和设计方法不同。
三、MATLAB中的设计方法
在MATLAB中,可以用b=fir1(N,Wn,’ftype’,taper)等函数辅助设计FIR数字滤波器。其中:
* N代表滤波器阶数
* Wn代表滤波器的截止频率(归一化频率)
* ftype代表滤波器类型,如’high’高通,’stop’带阻等
* taper为窗函数类型,默认为海明窗,窗系数需要实现用窗函数blackman, hamming,hanning, chebwin, kaiser等产生。
四、设计例子
例1:用凯塞窗设计一FIR低通滤波器,通带边界频率为,阻带边界频率为,阻带衰减不小于50dB。
解:首先由过渡带宽和阻带衰减来决定凯塞窗的N和, oben图给出了以上设计的频率特性,(a)为N=30直接截取的频率特性(b)为凯塞窗设计的频率特性。凯塞窗设计对应的MATLAB程序为:
wn=kaiser(30,4.55);
nn=[0:1:29];
alfa=(30-1)/2;
hd=sin(0.4*pi*(nn-alfa))./(pi*(nn-alfa));
h=hd.*wn;
[h1,w1]=freqz(h,1);
或者:
b = fir1(29,0.4,kaiser(30,4.55));
[h1,w1]=freqz(b,1);
plot(w1/pi,20*log10(abs(h1)));
axis([0,1,-80,10]);
grid;
xlabel('归一化频率/π');
ylabel('幅度/dB');
例2:利用雷米兹交替算法设计等波纹滤波器,设计一个线性相位低通FIR数字滤波器,其指标为:通带边界频率fc=800Hz,阻带边界fr=1000Hz,通带波动 阻带最小衰减At=40dB,采样频率fs=4000Hz。
解:在MATLAB中可以用remezord和remez两个函数设计,其结果如图2,MATLAB程序如下:
fedge=[800 1000];
mval=[1 0];
dev=[0.0559 0.01];
fs=4000;
[N,fpts,mag,wt]=remezord(fedge,mval,dev,fs);
b=remez(N,fpts,mag,wt);
[h,w]=freqz(b,1,256);
plot(w*2000/pi,20*log10(abs(h)));
本文档详细介绍了基于MATLAB的FIR数字滤波器设计,包括实验目的、实验原理、低通滤波器的常用指标、数字滤波器的类型、MATLAB中的设计方法等,为读者提供了一个系统的学习资源。