iir 和fir 滤波器的 matlab 设计202.114.108.237/download/783d5f2c-1eb1-4eaa-a64b-d155751... ·...

23
IIR 和 FIR 滤波器的 MATLAB 设计 2012301510047 付维杰 一、 问题 根据下列参数完成 IIR 和 FIR 数字滤波器设计 通带范围 300Hz~500Hz 带内最大衰减 Rp=-3dB 阻带范围<250Hz&>550Hz 带内最小衰减 Rs=-40dB 采样频率 Fs=2000Hz 要求:1、分别完成 IIR 和 FIR 滤波器的设计 2、IIR 设计不可使用 butter、cheby1、cheby2 和 ellip 这四个完全设计函数 3、谈谈自己对两种滤波器设计的感受 二、 分析与建模 在数字滤波器设计中,大致分为两种:一种是有限冲激响应滤波 器,简称 FIR;另一种是无限冲激响应滤波器,简称 IIR。 对于IIR,设计流程为:确定滤波器阶数、设计模拟原型滤波器、 频率变换、变换到数字滤波器。确定阶数常用到函数“butterord”、 “cheb1ord”、“cheb2ord”等,模拟低通滤波器原型的设计常用到 “buttap” 、 “cheb1ap” 、 “cheb2ap” , 变 换 到 带 通 用 到 函 数 “lp2bp”,最后完成到数字域通常用冲激函数不变法或者双线性变 换法。当然还有完全设计函数“butter”、“cheb1”等,只需给定 参数即生成对应的滤波器参数。

Upload: others

Post on 13-May-2020

2 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: IIR 和FIR 滤波器的 MATLAB 设计202.114.108.237/Download/783d5f2c-1eb1-4eaa-a64b-d155751... · 2016-01-05 · IIR和FIR滤波器的MATLAB设计 2012301510047 付维杰 一、

IIR 和 FIR 滤波器的 MATLAB 设计 2012301510047 付维杰

一、 问题

根据下列参数完成 IIR和 FIR数字滤波器设计

通带范围 300Hz~500Hz 带内最大衰减 Rp=-3dB

阻带范围<250Hz&>550Hz 带内最小衰减 Rs=-40dB

采样频率 Fs=2000Hz

要求:1、分别完成 IIR和 FIR滤波器的设计

2、IIR设计不可使用 butter、cheby1、cheby2和

ellip这四个完全设计函数

3、谈谈自己对两种滤波器设计的感受

二、 分析与建模

在数字滤波器设计中,大致分为两种:一种是有限冲激响应滤波

器,简称 FIR;另一种是无限冲激响应滤波器,简称 IIR。

对于 IIR,设计流程为:确定滤波器阶数、设计模拟原型滤波器、

频率变换、变换到数字滤波器。确定阶数常用到函数“butterord”、

“cheb1ord”、“cheb2ord”等,模拟低通滤波器原型的设计常用到

“buttap”、“cheb1ap”、“cheb2ap”,变换到带通用到函数

“lp2bp”,最后完成到数字域通常用冲激函数不变法或者双线性变

换法。当然还有完全设计函数“butter”、“cheb1”等,只需给定

参数即生成对应的滤波器参数。

Page 2: IIR 和FIR 滤波器的 MATLAB 设计202.114.108.237/Download/783d5f2c-1eb1-4eaa-a64b-d155751... · 2016-01-05 · IIR和FIR滤波器的MATLAB设计 2012301510047 付维杰 一、

对于 FIR,常用的设计方法是窗口法和最优等波动法。前者用到

fir1 和 fir2 这两个函数,后者用到 remezord 和 remez 函数,其对

应的函数输入参量可以在 MATLAB 的 HELP 系统中查看或者仿照已有

的设计例子。

除了上述一步步确定滤波器的参数,MATLAB 也可以同 fdatool

来直接设计滤波器,只需在交互界面给出滤波器的种类和参数即可。

本次设计也用到了它。

三、 源代码

1、 巴特沃斯设计 IIR(冲激函数不变法):

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%%%%%Build date:2014/12/28

%%%%%Builder:2012301510047_付维杰

%%%%%Use function of "impinvar"

%%%%%BUTTERWORTH

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

Fs=2000; %freaquency of sample

Wp=[300*2*pi 500*2*pi]; %passingband

Ws=[250*2*pi 550*2*pi]; %stopband

Rp=3; %Maximun attenuation of passingband

Rs=40 %Minimun attenuation of stopband

[n,Wn]=buttord(Wp,Ws,Rp,Rs,'s'); %order

[z,p,k]=buttap(n); %zero,peak,gain

Wo=sqrt(Wn(1)*Wn(2));%Center frequency

[b,a]=zp2tf(z,p,k); %zero to transmit function

[bt,at]=lp2bp(b,a,Wo,Wn(2)-Wn(1)); %low to band

[bz,az]=impinvar(bt,at,Fs); %impulse of invariant

freqz(bz,az)

2、 巴特沃斯设计 IIR(双线性变换法):

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%%%%%Build date:2014/12/28

%%%%%Builder:2012301510047_付维杰

Page 3: IIR 和FIR 滤波器的 MATLAB 设计202.114.108.237/Download/783d5f2c-1eb1-4eaa-a64b-d155751... · 2016-01-05 · IIR和FIR滤波器的MATLAB设计 2012301510047 付维杰 一、

%%%%%Use bilinear transformation

%%%%%BUTTERWORTH

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

Fs=2000; %frequency of sample

Wp=[tan(300*pi/Fs)*Fs*2 tan(500*pi/Fs)*Fs*2];

Ws=[tan(250*pi/Fs)*Fs*2 tan(550*pi/Fs)*Fs*2];

Rp=3; %Maximun attenuation of passingband

Rs=40 %Minimun attenuation of stopband

[n,Wn]=buttord(Wp,Ws,Rp,Rs,'s'); %order

[z,p,k]=buttap(n); %zero,peak,gain

Wo=sqrt(Wn(1)*Wn(2));%Center frequency

[b,a]=zp2tf(z,p,k); %zero to transmit function

[bt,at]=lp2bp(b,a,Wo,Wn(2)-Wn(1)); %low to band

[bz,az]=bilinear(bt,at,Fs); %impulse of invariant

freqz(bz,az)

3、 切比雪夫 I型设计 IIR:

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%%%%%Build date:2014/12/28

%%%%%Builder:2012301510047_付维杰

%%%%%Use function of "impinvar"

%%%%%CHEBYSHEV I

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

Fs=2000; %freaquency of sample

Wp=[300*2*pi 500*2*pi]; %passingband

Ws=[250*2*pi 550*2*pi]; %stopband

Rp=3; %Maximun attenuation of passingband

Rs=40; %Minimun attenuation of stopband

[n,Wn]=cheb1ord(Wp,Ws,Rp,Rs,'s'); %order

[z,p,k]=cheb1ap(n,Rp); %zero,peak,gain

Wo=sqrt(Wn(1)*Wn(2));%Center frequency

[b,a]=zp2tf(z,p,k); %zero to transmit function

[bt,at]=lp2bp(b,a,Wo,Wn(2)-Wn(1)); %low to band

[bz,az]=impinvar(bt,at,Fs); %impulse of invariant

freqz(bz,az)

n

4、 切比雪夫 II型设计 IIR:

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%%%%%Build date:2014/12/28

%%%%%Builder:2012301510047_付维杰

%%%%%Use function of "impinvar"

Page 4: IIR 和FIR 滤波器的 MATLAB 设计202.114.108.237/Download/783d5f2c-1eb1-4eaa-a64b-d155751... · 2016-01-05 · IIR和FIR滤波器的MATLAB设计 2012301510047 付维杰 一、

%%%%%CHEBYSHEV II

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

Fs=2000; %freaquency of sample

Wp=[300*2*pi 500*2*pi]; %passingband

Ws=[250*2*pi 550*2*pi]; %stopband

Rp=3; %Maximun attenuation of passingband

Rs=40; %Minimun attenuation of stopband

[n,Wn]=cheb2ord(Wp,Ws,Rp,Rs,'s'); %order

[z,p,k]=cheb2ap(n,Rs); %zero,peak,gain

Wo=sqrt(Wn(1)*Wn(2));%Center frequency

[b,a]=zp2tf(z,p,k); %zero to transmit function

[bt,at]=lp2bp(b,a,Wo,Wn(2)-Wn(1)); %low to band

[bz,az]=impinvar(bt,at,Fs); %impulse of invariant

freqz(bz,az)

n

5、 窗函数法设计 FIR:

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%%%%%Build date:2014/12/28

%%%%%Builder:2012301510047_付维杰

%%%%%USE "Window"

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

Fs=2000; %freaquency of sample

fcuts=[250 300 500 550];

mags=[0 1 0];

devs=[0.01 10^(-3/20) 0.01];

[n,Wn,beta,ftype]=kaiserord(fcuts,mags,devs,Fs);%kaiser window

[h]=fir1(n,Wn,ftype,kaiser(n+1,beta));

freqz(h)

n

6、 最优等波动设计 FIR:

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%%%%%Build date:2014/12/28

%%%%%Builder:2012301510047_付维杰

%%%%%Use Parks-McClellan FIR

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

Fs=2000; %freaquency of sample

Rp=3; %Maximun attenuation of passingband

Rs=40; %Minimun attenuation of stopband

f=[250 300 500 550];%frequency

a=[0 1 0]; %Expected amplitude

Page 5: IIR 和FIR 滤波器的 MATLAB 设计202.114.108.237/Download/783d5f2c-1eb1-4eaa-a64b-d155751... · 2016-01-05 · IIR和FIR滤波器的MATLAB设计 2012301510047 付维杰 一、

dev=[0.171,0.01,0.171];%[(10^(Rp/20)-1)/(10^(Rp/20)+1) 10^(-Rs/20)

(10^(Rp/20)-1)/(10^(Rp/20)+1)];

[n,fo,ao,w]=remezord(f,a,dev,Fs);

b=remez(n,fo,ao,w,'bandpass');

freqz(b,1,1024,Fs)

n

四、 设计结果(频率相位响应)

1、巴特沃斯设计 IIR(冲激函数不变法):

2、巴特沃斯设计 IIR(双线性变换法):

3、切比雪夫 I型设计 IIR:

Page 6: IIR 和FIR 滤波器的 MATLAB 设计202.114.108.237/Download/783d5f2c-1eb1-4eaa-a64b-d155751... · 2016-01-05 · IIR和FIR滤波器的MATLAB设计 2012301510047 付维杰 一、

4、切比雪夫 II型设计 IIR:

5、窗函数法设计 FIR:

Page 7: IIR 和FIR 滤波器的 MATLAB 设计202.114.108.237/Download/783d5f2c-1eb1-4eaa-a64b-d155751... · 2016-01-05 · IIR和FIR滤波器的MATLAB设计 2012301510047 付维杰 一、

6、最优等波动设计 FIR:

五、总结

设计过程中为了检验设计的准确性,同时也为了训练 FDATOOL的

使用,在 fdatool中同时设计,把参数输入,分别得到:

1、 巴特沃斯

2、 切比雪夫 I

Page 8: IIR 和FIR 滤波器的 MATLAB 设计202.114.108.237/Download/783d5f2c-1eb1-4eaa-a64b-d155751... · 2016-01-05 · IIR和FIR滤波器的MATLAB设计 2012301510047 付维杰 一、

3、 切比雪夫 II

4、 椭圆

5、 窗函数 hamming

Page 9: IIR 和FIR 滤波器的 MATLAB 设计202.114.108.237/Download/783d5f2c-1eb1-4eaa-a64b-d155751... · 2016-01-05 · IIR和FIR滤波器的MATLAB设计 2012301510047 付维杰 一、

6、 窗函数 kaiser

从上述设计结果可以看出:IIR因为系统函数存在极点,故其系

统若极点在单位圆外即是不稳定的。其相位响应很难做到线性度很好,

故可能产生一定程度上的相位失真。但是正是由于它只要求极点在单

位圆内,其实现带通的系统阶数可以做到很小,使其设计可以很简单,

易于实现。若要修正其相位的偏移,则需要“全通网络”,却会在一

定程度上增加系统的复杂程度和阶数。

对比下 FIR滤波器有一个先天的优势:系统的冲激响应易设计为

奇对称或偶对称,故相位线性度很好。不同于 IIR的设计具有分段常

数的特性,FIR滤波器可以设计为多通带多阻带的系统,可以适用于

Page 10: IIR 和FIR 滤波器的 MATLAB 设计202.114.108.237/Download/783d5f2c-1eb1-4eaa-a64b-d155751... · 2016-01-05 · IIR和FIR滤波器的MATLAB设计 2012301510047 付维杰 一、

数字微分器,这一点是 IIR无法做到的。但是另一方面,由于 FIR系

统函数的极点固定在原点,滤波器的高性能要求高阶数,通常的 FIR

滤波器阶数都很高,达到 IIR 的 5~10 倍,故其经济性不好,需要的

元件多。

在 fdatool 里设计时,发现当阶数越高,越接近一个门波形,阻

带内的盘瓣越密集,同时若阻带的衰减要求更高,相同情况下的阶数

也就越多。如设计了一个同样情况下的要求阻带-60dB的滤波器:

它的阶数达到了 146.这种情况适用于高质量要求的滤波器,而

对于经济性要求高的、需要批量产出的,则通常采用阻带衰减

-20~-40dB的滤波器。

综上所述,对于要求经济性的、高产出的、滤波质量要求不是很

高的,可以采用 IIR滤波器;而对于要求高质量、对失真很敏感的一

些专业领域,则采用 FIR滤波,同时可以考虑在一定经济基础上将阻

带的衰减降到尽可能低以满足专业需要。

Page 11: IIR 和FIR 滤波器的 MATLAB 设计202.114.108.237/Download/783d5f2c-1eb1-4eaa-a64b-d155751... · 2016-01-05 · IIR和FIR滤波器的MATLAB设计 2012301510047 付维杰 一、

2012301080042 侯悦

题目:

根据下列参数完成 IIR 和 FIR 数字滤波器设计

通带范围 300Hz~500Hz 带内最大衰减 Rp=-3dB

阻带范围<250Hz&>550Hz 带内最小衰减 Rs=-40dB

采样频率 Fs=2000Hz

要求:

1、分别完成 IIR和 FIR 滤波器的设计

2、IIR 设计不可使用 butter、cheby1、cheby2 和 ellip这四个完全

设计函数

3、谈谈自己对两种滤波器设计的感受

**********************************************************

解题过程:

一、 设计思路

①完成 IIR 滤波器的设计

I. 用模拟 butterworth 型带通滤波器设计

1)巴特沃斯滤波器阶数的选择:

在已知设计参数 pf , sf , pR , sR 之后,可利用“buttord”命令可求出所需

要的滤波器的阶数和 3dB 截止频率,其格式为:

[N,Omegac]=buttord[fp,fs,Rp,Rs,’s’],其中 fp,fs,Rp,Rs 分别为通

带截止频率、阻带起始频率、通带内波动、阻带内最小衰减。返回值 N 为滤波

器的最低阶数,Wc 为 3dB 截止频率。

2)特沃斯带通滤波器系数计算:

[b,a]=butter(N,[Omega1,Omega2]),其中[Omega1,Omega2]为通带截止

频率,是 2 元向量,需要注意的是该函数返回的是 2N 阶滤波器系数。

Page 12: IIR 和FIR 滤波器的 MATLAB 设计202.114.108.237/Download/783d5f2c-1eb1-4eaa-a64b-d155751... · 2016-01-05 · IIR和FIR滤波器的MATLAB设计 2012301510047 付维杰 一、

II. 用数字 butterworth 双线性变换法型带通滤波器设计

带通滤波器情况:采样频率为 2000Hz,要求通带截止频率为[300Hz,500Hz],

阻带起始频率为[250Hz,550Hz],通带内波动 3dB,阻带内最小衰减为 40dB,则

Wp=[300/1000,500/1000], Ws=[250/1000,550/1000], Rp=3dB, Rs=40dB。

III.用 Chebyshev I 型带通滤波器设计

IV. 椭圆滤波器设计

②完成 FIR 滤波器的设计

I. 窗口法设计 FIR 滤波器

使用 FIR1函数完成 FIR滤波器设计

II. 最优等波动设计 FIR 滤波器

计算衰减占比写 dev(wt)

③用 FDATOOL 设计

二、 matlab 程序设计及结果显示

IIR 部分

I. 用模拟 butterworth 型带通滤波器设计

Page 13: IIR 和FIR 滤波器的 MATLAB 设计202.114.108.237/Download/783d5f2c-1eb1-4eaa-a64b-d155751... · 2016-01-05 · IIR和FIR滤波器的MATLAB设计 2012301510047 付维杰 一、

结果为:

II. 用数字 butterworth 双线性变换法型带通滤波器设计

Page 14: IIR 和FIR 滤波器的 MATLAB 设计202.114.108.237/Download/783d5f2c-1eb1-4eaa-a64b-d155751... · 2016-01-05 · IIR和FIR滤波器的MATLAB设计 2012301510047 付维杰 一、

结果为:

III.用 Chebyshev I 型带通滤波器设计

Page 15: IIR 和FIR 滤波器的 MATLAB 设计202.114.108.237/Download/783d5f2c-1eb1-4eaa-a64b-d155751... · 2016-01-05 · IIR和FIR滤波器的MATLAB设计 2012301510047 付维杰 一、

结果为

IV.椭圆滤波器设计

Page 16: IIR 和FIR 滤波器的 MATLAB 设计202.114.108.237/Download/783d5f2c-1eb1-4eaa-a64b-d155751... · 2016-01-05 · IIR和FIR滤波器的MATLAB设计 2012301510047 付维杰 一、

结果为:

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

FIR 部分

I. 窗口法设计 FIR 滤波器

fir1 函数

Page 17: IIR 和FIR 滤波器的 MATLAB 设计202.114.108.237/Download/783d5f2c-1eb1-4eaa-a64b-d155751... · 2016-01-05 · IIR和FIR滤波器的MATLAB设计 2012301510047 付维杰 一、

结果为:

II. 最优等波动设计 FIR 滤波器

Page 18: IIR 和FIR 滤波器的 MATLAB 设计202.114.108.237/Download/783d5f2c-1eb1-4eaa-a64b-d155751... · 2016-01-05 · IIR和FIR滤波器的MATLAB设计 2012301510047 付维杰 一、

结果为:

③FDATOOL

Page 19: IIR 和FIR 滤波器的 MATLAB 设计202.114.108.237/Download/783d5f2c-1eb1-4eaa-a64b-d155751... · 2016-01-05 · IIR和FIR滤波器的MATLAB设计 2012301510047 付维杰 一、
Page 20: IIR 和FIR 滤波器的 MATLAB 设计202.114.108.237/Download/783d5f2c-1eb1-4eaa-a64b-d155751... · 2016-01-05 · IIR和FIR滤波器的MATLAB设计 2012301510047 付维杰 一、

FIR WINDOW

Page 21: IIR 和FIR 滤波器的 MATLAB 设计202.114.108.237/Download/783d5f2c-1eb1-4eaa-a64b-d155751... · 2016-01-05 · IIR和FIR滤波器的MATLAB设计 2012301510047 付维杰 一、
Page 22: IIR 和FIR 滤波器的 MATLAB 设计202.114.108.237/Download/783d5f2c-1eb1-4eaa-a64b-d155751... · 2016-01-05 · IIR和FIR滤波器的MATLAB设计 2012301510047 付维杰 一、

三、 两种滤波器的比较

1, 由图像可得,IIR的 shebyshev type2,椭圆滤波器,以及 FIR

的窗口设计法较好,其图像更能反映滤波器特性

2, FIR 阶数远高于 IIR 阶数,而阶数越大,设计越复杂,在实际

中越难以实现。IIR可以用较低的阶数实现较高的带通选择性。

3, 由图像可知,IIR 虽然阶数少,但其衰减变化缓慢,如下图所

示 :

Page 23: IIR 和FIR 滤波器的 MATLAB 设计202.114.108.237/Download/783d5f2c-1eb1-4eaa-a64b-d155751... · 2016-01-05 · IIR和FIR滤波器的MATLAB设计 2012301510047 付维杰 一、

FIR 在衰减段中下降迅速:

则在选通中误差较小,在精度要求较高的场合适用。