Top Banner
Digtlal Signal Pro cessing —— Using MATLAB 第第第 FIR 第第第第第
121

Digtlal Signal Processing —— Using MATLAB

Jan 21, 2016

Download

Documents

kalil

Digtlal Signal Processing —— Using MATLAB. 第七章 FIR 滤波器设计. 数字频率 w 的概念. 定义: 其中: Ω= 2 π f 为模拟角频率 T: 抽样时间间隔, fs: 抽样频率 所以数字滤波器设计必须给出抽样频率 数字频率的 2 π 等价于模拟抽样频率 Ω s=2 π fs 按照 Nyquist 抽样定理,基带信号的频率特性只能限于 |w|
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Digtlal   Signal   Processing ——    Using   MATLAB

Digtlal Signal Processing—— Using MATLAB

第七章 FIR 滤波器设计

Page 2: Digtlal   Signal   Processing ——    Using   MATLAB

数字频率 w 的概念定义:

其中: Ω=2πf 为模拟角频率 T: 抽样时间间隔, fs: 抽样频率 所以数字滤波器设计必须给出抽样频率

数字频率的 2π 等价于模拟抽样频率 Ωs=2πfs

按照 Nyquist 抽样定理,基带信号的频率特性只能限于 |w|<ws/2=π 的范围

sw T f

2 2 / 2s s s s sT f T f f

Page 3: Digtlal   Signal   Processing ——    Using   MATLAB

数字滤波器幅度响应 (1)( )H w

w

0cw cw π

数字低通滤波器

1

)(wH

w

cw cw 2

数字高通滤波器

Page 4: Digtlal   Signal   Processing ——    Using   MATLAB

数字滤波器幅度响应 (2)

1

)(wH

w

0wcww 0cww 0

1

)(wH

w

0wcww 0cww 0

数字带通

数字带阻

Page 5: Digtlal   Signal   Processing ——    Using   MATLAB
Page 6: Digtlal   Signal   Processing ——    Using   MATLAB

7.1 概论

滤波器设计:给定技术要求设计系统设计步骤: 确定技术要求:由具体应用条件决定 提供一个逼近要求的滤波器的表述 根据表述实现滤波器

下面讨论时我们均假设技术要求已知

Page 7: Digtlal   Signal   Processing ——    Using   MATLAB

7.1.1 技术要求的给定幅度要求: 绝对指标要求:对幅度响应 |H(ejw)| 给出要求 相对指标要求:以分贝 dB 形式给出

相位要求:线性相位

10

max

20log 0j

j

H edB

H e

Page 8: Digtlal   Signal   Processing ——    Using   MATLAB
Page 9: Digtlal   Signal   Processing ——    Using   MATLAB

一、绝对指标要求 (1)

Passband ripple通带波纹

Stopband ripple阻带波纹

Transition band过渡带

Page 10: Digtlal   Signal   Processing ——    Using   MATLAB

绝对指标 (2)

频带 [0,wp] 称为 通带 passband, δ1 是在理想通带响应上可以接受的容度(或波纹) 频带 [ws,pi] 称为 阻带 stopband, δ2 是相应的阻带容度(或波纹) 频带 [wp, ws] 称为 过渡带 transition band, 在这个频带内幅度响应不作要求

Page 11: Digtlal   Signal   Processing ——    Using   MATLAB
Page 12: Digtlal   Signal   Processing ——    Using   MATLAB

二、 相对指标要求 (1)

pR

sA

0

Page 13: Digtlal   Signal   Processing ——    Using   MATLAB

相对指标 (2)

Rp: 以 dB 计的通带波纹As: 以 dB 计的阻带衰减两种指标之间的关系:

110

1

210

1

120log 0 0

1

20log 0 11

p

s

R for passband

A for stopband

• Rp 和 As 的计算见 P214 ex7.1 & ex7.2

Page 14: Digtlal   Signal   Processing ——    Using   MATLAB

三、为什么只讨论低通滤波器 (LPF)

上述指标都是针对低通滤波器的其他类型的频率选择性滤波器 ( 如高通或带通 ) 也能给出类似要求滤波器设计最重要的参数是频带容限和频带边缘频率

Page 15: Digtlal   Signal   Processing ——    Using   MATLAB

四、技术指标举例

设计一个低通滤波器,它具有一个通带 [0,wp] ,通带内频带容限为 δ1( 或 Rp ,单位 dB) ,一个阻带 [ws,pi] ,阻带内容度为 δ2( 或 As, 单位 dB)

最后求得结果是得出滤波器的系统函数 H(z)或差分方程

Page 16: Digtlal   Signal   Processing ——    Using   MATLAB

五、 FIR 滤波器的优点

相位响应可以真正线性系统绝对稳定,设计相对容易高效实现可用 DFT 实现实际应用时,我们感兴趣的是线性相位的 FIR 滤波器

Page 17: Digtlal   Signal   Processing ——    Using   MATLAB

六、线性相位响应的优点设计问题中仅有实数运算时延固定,没有时延失真对长为 M 的滤波器,运算次数只有 M/2量级

Page 18: Digtlal   Signal   Processing ——    Using   MATLAB

7.2 线性相位 FIR 滤波器性质包括脉冲和频率响应的形状,系统函数零点的位置设 h(n) 是长为 M 的脉冲响应, 0≤n≤M-1 ,则

1

0

1)1(1

0

)()()(M

n

nMMM

n

n znhzznhzH

在原点 z=0处有 (M-1)阶零点,在 z平面其它处有 M-1个零点,频率响应函数可写为

wenheHM

n

jwnjw ,)()(1

0

Page 19: Digtlal   Signal   Processing ——    Using   MATLAB

线性相位的脉冲响应形状 (1)

因为频率响应函数具有线性相位 wweH jw ,)(

这里是恒定相位延迟 ( constant phase delay) ,由第 6章知, h(n) 是对称脉冲响应

1( ) ( 1 ), 0 1,

2

Mh n h M n n M

因此, h(n) 关于对称,根据 M 的奇偶有两种对称类型

Page 20: Digtlal   Signal   Processing ——    Using   MATLAB

线性相位的脉冲响应形状 (1)

Page 21: Digtlal   Signal   Processing ——    Using   MATLAB

线性相位的脉冲响应形状 (2)

第二类线性相位满足条件

相位响应不通过原点,但斜率恒为常数,此时称群时延 ( group delay) ,可知 h(n) 是反对称脉冲响应

h(n)仍然关于对称,根据 M 的奇偶有两种对称类型

wweH jw ,)(

( ) ( 1 ), 0 1,1

,2 2

h n h M n n MM

Page 22: Digtlal   Signal   Processing ——    Using   MATLAB

线性相位的脉冲响应形状 (2)

Page 23: Digtlal   Signal   Processing ——    Using   MATLAB

对应频率响应特性 H(ejw)

将M 为奇和偶数结合对称和反对称的情况, 得到四种类型的线性 FIR 滤波器对应每种类型其频率响应特性都有独特性质,令 ;

10,

2 2

jjrH e H e

M

其中, Hr(w) 是连续的振幅响应函数,可正可负的实函数

相位响应是一个不连续函数

Page 24: Digtlal   Signal   Processing ——    Using   MATLAB

例:设脉冲响应为 h(n)={1 , 1 , 1 , 1},求出并画出频率响应解:频率响应函数为

32 3

04

3 / 2

1

1 sin(2 )

1 sin 2

jw jwn jw jw jw

njw

j wjw

H e h n e e e e

e we

e w

由方程可得:

sin 2 sin 23

2

r

j

H

H e

Page 25: Digtlal   Signal   Processing ——    Using   MATLAB
Page 26: Digtlal   Signal   Processing ——    Using   MATLAB
Page 27: Digtlal   Signal   Processing ——    Using   MATLAB

I 类线性相位:对称脉冲响应, M 为奇数

这种情况下,beta=0,alpha=(M-1)/2是整数 h(n)=h(M-1-n), 0≤n≤M-1

1 / 2 1

2

0

cosM Mjj

n

H e a n n e

10 :

21 -3

2 12 2

Ma h

M Ma n h n n

中间样本

将两式比较可得:

-1

2

0

cos

M

rn

H a n n

Page 28: Digtlal   Signal   Processing ——    Using   MATLAB

II 类线性相位 : 对称脉冲响应, M 为偶数

这种情况下, beta=0 , alpha=(M-1)/2 不是整数 h(n)=h(M-1-n) , 0≤n≤M-1

2/)1(2/

1 2

1cos)()(

Mjw

M

n

jw enwnbeH

2,,2,1,

22)(

Mnn

Mhnb

2/

1 2

1cos)()(

M

nr nwnbwH

注意: Hr(pi)=0,因此不能采用这种类型设高通 or 带阻滤波器

Page 29: Digtlal   Signal   Processing ——    Using   MATLAB

III 类线性相位:反对称脉冲响应, M 为奇数

这种情况下, beta=pi/2 , alpha=(M-1)/2 是整数 h(n)=-h(M-1-n) , 0≤n≤M-1

wjM

n

jw M

ewnnceH 21

2

2/)1(

0

sin)()(

2

1,,2,1,

2

12)(

Mnn

Mhnc

2/)1(

0

sin)()(M

nr wnncwH

Hr(0)=Hr(pi)=0, 因此这种滤波器不适合设计低通或高通滤波器

exp(jpi/2)=j ,这种特性非常适合设计希尔伯特变换器和微分器

Page 30: Digtlal   Signal   Processing ——    Using   MATLAB

IV类线性相位:反对称脉冲响应, M 为偶数

这种情况和 II 类似,有/ 2 ( 1) / 2

2

1

1( ) ( )sin

2

M j w Mjw

n

H e d n w n e

2,,2,1,

22)(

Mnn

Mhnd

2/

1 2

1sin)()(

M

nr nwndwH

Hr(0)=0 and exp(jpi/2)=j. 因此这种类型适合用于设计数字希尔伯特变换器和微分器

Page 31: Digtlal   Signal   Processing ——    Using   MATLAB

MATLAB 实现Hr_type1: 求 I 类线性相位的 Hr(w) 调用格式: [Hr,w,a,L]=Hr_type1(h)

Hr_type2: 求 II 类线性相位的 Hr(w) 调用格式: [Hr,w,b,L]=Hr_type2(h)

Hr_type3: 求 III 类线性相位的 Hr(w) 调用格式: [Hr,w,c,L]=Hr_type3(h)

Hr_type4: 求 IV类线性相位的 Hr(w) 调用格式: [Hr,w,d,L]=Hr_type4(h)

Page 32: Digtlal   Signal   Processing ——    Using   MATLAB

小结了解了线性相位 FIR 滤波器的各种特性,便可根据实际需要选择合适的 FIR 滤波器,同时设计时要遵循有关约束条件。如:第 3、 4种情况,对于任何频率都有固定的 π/2 相移,一般微分器及 90°相移器采用这两种情况,而选频性滤波器则用第 1 、 2 种情况。

Page 33: Digtlal   Signal   Processing ——    Using   MATLAB

(1) 设计线性相位的低通 Digtal Filter

从幅度特性考虑,只能选择第 1 种或第 2 种第一种:

第二种

1

0

( ( ) cos

10 (0) ( )

21

0 ( ) 2 ( )2

N

rn

H w a n wn

Nn a h

Nn a n h n

其中:

1

0

1( ( ) cos( ( ))

2

( ) 2 ( 1,22 2

N

rn

H w b n w n

N Nb n h n n

),

Page 34: Digtlal   Signal   Processing ——    Using   MATLAB

(2) 设计线性相位的高通 DF

从幅度特性看,可用第一种或第四种第一种

第四种/ 2

1

1( ) ( )sin

2

M

rn

H w d n w n

2,,2,1,

22)(

Mnn

Mhnd

1

0

( ( ) cos

10 (0) ( )

21

0 ( ) 2 ( )2

N

rn

H w a n wn

Nn a h

Nn a n h n

其中:

Page 35: Digtlal   Signal   Processing ——    Using   MATLAB

(3) 设计线性相位的带阻 DF

从幅度特性考虑,只能选择第一种1

0

( ( ) cos

10 (0) ( )

21

0 ( ) 2 ( )2

N

rn

H w a n wn

Nn a h

Nn a n h n

其中:

Page 36: Digtlal   Signal   Processing ——    Using   MATLAB

(4) 设计线性相位的带通 DF

从幅度特性考虑,可以选择任一种

Page 37: Digtlal   Signal   Processing ——    Using   MATLAB

线性相位滤波器的零点位置

对实序列而言,零点是共轭出现的 ;对对称序列而言,零点是镜像出现的 ; 令 q=z –1,f(q) 的系数与 f(z)刚好倒序 . 由于 h(n) 的系数是对成的,倒序并不会改变系数 .

如果 zk是多项式的根 ,则 pk=zk-1 也是 .

Page 38: Digtlal   Signal   Processing ——    Using   MATLAB

对称系数多项式的镜像零点

如果 zk 满足多项式 :h0+h1zk-1+ h2zk-2 +..+ hM-2zk-M+2 + hM-1zk-M+1=0 此时 hM-1=h0 , hM-2 =h1,…

那么 rk = zk –1 同样会满足方程 h0+h1rk+ h2rk2 + …+ h1rkM-2 + h0rkM-1

= h0zkM-1 + h1zkM-2 + … + h2zk2+ h1zk + h0

= zkM-1(h0+ h1zk-1 + …+ h1zk-M+2 + h0zk –M+1) =0

Page 39: Digtlal   Signal   Processing ——    Using   MATLAB

-2 -1.5 -1 -0.5 0 0.5 1 1.5 2

-1.5

-1

-0.5

0

0.5

1

1.5

Real Part

Imag

inar

y P

art

1/z1

1/conj(z1)

z1

conj(z1)

Page 40: Digtlal   Signal   Processing ——    Using   MATLAB

特殊的

如果零点为实数,则只有两个零点: z2,1/z2如果零点在单位圆上且为虚数,则只有两个零点 z3,z3*如果零点在单位圆上且为实数,则只有一个零点 z4

2z

12z

3z

*3z

4z )Re(z

)Im(zj

Page 41: Digtlal   Signal   Processing ——    Using   MATLAB

7.3 窗口设计法

设计步骤 给定要求设计的理想滤波器的频率响应 Hd(ejw) 设计一个 FIR 滤波器频率响应 H(ejw) 由于设计是在时域中进行,使所设计滤波器的h(n)去逼近理想单位取样响应序列hd(n)

Page 42: Digtlal   Signal   Processing ——    Using   MATLAB

理想滤波器的频率响应 Hd(ejw)

设希望设计的滤波器传输函数为 Hd(ejw) ,对应脉冲响应为 hd(n) ,则它们满足关系:

1

2

jw jwnd d

n

jw jwnd d

H e h n e

h n H e e dw

若已知 Hd(ejw) ,即可求出 hd(n) ,再经过 z变换,就可以求出系统函数 H(z) ,从而设计出系统

一般情况下, Hd(ejw)逐段恒定,在边界频率处有不连续点,因而 hd(n) 是无限时宽的,且是非因果序列。

Page 43: Digtlal   Signal   Processing ——    Using   MATLAB

例:理想低通滤波器的传输函数 Hd(ejw)

无失真的理想低通的传输函数为

( )0

jwjw c

d

c

e w wH e

w w

sin( ( ))1( )

2 ( )

c

c

w jw jwn cd w

w nh n e e dw

n

相应的单位取样响应 hd(n)

由上式可知, hd(n)无限长,且为非因果序列

Page 44: Digtlal   Signal   Processing ——    Using   MATLAB

)(nhd

n0

)( jwd eH

w

0cw cw

理想低通滤波器的 Hd(ejw) 和 h(n) 波形

Page 45: Digtlal   Signal   Processing ——    Using   MATLAB

设实际实现的低通滤波器单位取样响应为 h(n) ,长为 N ,其系统函数

设计过程相当于找到一个有限长序列 h(n) ,去逼近理想低通的 hd(n) ,这必然会引入误差——频域的吉布斯 (Gibbs) 效应 (截断效应 )后果:引起通带和阻带内的波动效应,尤其是使阻带衰减减小

设计实现一个 FIR 滤波器 H(ej

w)

1

0

( ) ( )N

n

n

H z h n z

Page 46: Digtlal   Signal   Processing ——    Using   MATLAB

例:设计截止频率 wc=/3时延为 6的具有线性相位的 FIR 低通滤波器

为了构造一个长为 N 的线性相位滤波器,只有将 hd(n)截取一段,并保证对 (N-1)/2 对称设截取的段用 h(n) 表示,则

其中 W(n) :长为 N 的窗函数 ( 这里取矩形序列 )当 τ=(N-1)/2 时,截取的 h(n) 对 (N-1)/2 对称,保证设计的滤波器具有线性相位

( ) ( ) ( )dh n h n W n

)(nW

n

12

N 0 1N

Page 47: Digtlal   Signal   Processing ——    Using   MATLAB

1, 6,

3 2

sin[ ( 6)]3( ) 13( 6)

c

d

Nw

nh n N

n

这里, hd(n) 是以 n=6 为中心偶对称的无限长序列现用一个有限长 N=13 的因果序列 h(n) 逼近它最简单的方法:给 hd(n)加矩形窗 RN(n) , 即令W(n)=RN(n) ,则

( ) 0 1( ) ( )

0d

d

h n n Nh n h n W n

n

其它

Page 48: Digtlal   Signal   Processing ——    Using   MATLAB

n1 62

N

)(nhd

低通滤波器脉冲响应波形截断处理示意图

截断处理后,由于 h(n)满足对称脉冲响应,所以一定满足第一类线性相位

Page 49: Digtlal   Signal   Processing ——    Using   MATLAB

设计步骤先由 Hd(ejw) 求付里叶反变换 hd(n).砍头去尾。 因为我们要设计 FIR 滤波器 h(n) 必须满足: 因果性: t<0 时, h(n) =0-->砍头 线性相位:要求 h(n) 中心对称或反对称,由于砍头,

所以必须去尾,让它们中心对称。 即用有限长的 h(n)去逼近无限长的 hd(n).

利用卷积过程。即 h(n)=W(n)×hd(n)

可见窗函数序列的形状及长度的选择是设计关键。

1*

2jw jw

dH e H e W w

Page 50: Digtlal   Signal   Processing ——    Using   MATLAB

窗口法设计数字滤波器主要任务:寻找最有效的方法截断 hd(n) ,即用一个有限长度的窗口函数序列W(n)来截取 h

d(n) ,使 H(ejw) 最逼近 Hd(ejw)

通过加窗可得到不同类型的数字滤波器 数字低通 数字高通 数字带通 数字带阻

Page 51: Digtlal   Signal   Processing ——    Using   MATLAB

数字低通

设 h(n) 是长为 N ,以 τ=(N-1)/2 为中心偶对称的函数2

0

1( ) ( )

2sin ( )

( )

jw jwnd d

c

h n H e e dw

w n

n

( ) ( ) ( )1

sin[ ( )]2( )1

[ )]2

( 1 )

d

c

h n h n W nN

w nW n

Nn

h N n

0,1,2 1n N

Page 52: Digtlal   Signal   Processing ——    Using   MATLAB

h(n) 的设计

根据前面讨论可知,低通滤波器只能选择对称脉冲响应当 N 为奇数时,设计第一种情况的线性相位低通 DF当 N 为偶数时,设计第二种情况的线性相位低通 DF设选用矩形窗,即

1 0 1

0N

n NW n R n

其他

1sin[ ( )]

2( ) ( ) ( )1

[ )]2

c

d

Nw n

h n h n W nN

n

Page 53: Digtlal   Signal   Processing ——    Using   MATLAB

设计举例:用矩形窗设计截止频率 wc=/3的具有线性相位的 FIR低通滤波器若取 N=13,为奇数,则对称脉冲响应

sin[ ( 6)]3( ) (12 )[ 6)]

nh n h n

n

)(nh

n

Page 54: Digtlal   Signal   Processing ——    Using   MATLAB

sin[ ( 5.5)]3( ) (11 )[ 5.5)]

nh n h n

n

)(nh

n

若取 N=12 ,为偶数,则

Page 55: Digtlal   Signal   Processing ——    Using   MATLAB

数字高通

理想的线性相位高通 DF 的频率特性为:

c

ccwj

jwd

ww

wwweeH

00)(

)(

其幅度特性:

1

( )rH w

w

cw cw 2p cw w 截止频率

Page 56: Digtlal   Signal   Processing ——    Using   MATLAB

冲激响应

理想高通滤波器冲激响应

加窗处理后的数字滤波器冲激响应

2

0

1( ) ( )

2sin ( )

( 1)( )

jw jwnd d

cn

h n H e e dw

w nn

n

( ) ( ) ( )

sin ( )( )( 1) 0,1,2, 1

( )

d

cn

h n h n W nw n

W n n Nn

Page 57: Digtlal   Signal   Processing ——    Using   MATLAB

分析

因为 为偶函数,W(n) 为常数

当 N 为奇数时,对应第一种线性相位,h(n)=h(N-1-n) 为对称脉冲响应

当 N 为偶数时,对应第四种线性相位,h(n)=-h(N-1-n) 为反对称脉冲响应

sin ( )

( )cw n

n

Page 58: Digtlal   Signal   Processing ——    Using   MATLAB

取矩形窗时,W(n)=RN(n)

取N=13,为奇数,则

sin ( )( ) ( ) ( ) ( 1)

( )0,1,2, 1

cnd

w nh n h n W n

nn N

sin ( 6)3

( ) ( 1)( 6)

n

nh n

n

取 N=12 ,为偶数,则

sin ( 5.5)3

( ) ( 1)( 5.5)

n

nh n

n

Page 59: Digtlal   Signal   Processing ——    Using   MATLAB
Page 60: Digtlal   Signal   Processing ——    Using   MATLAB
Page 61: Digtlal   Signal   Processing ——    Using   MATLAB

理想数字带通滤波器

理想的线性相位带通 DF 的频率特性为:

0 0

0

0

( ) ( )

00

jw jwd d

jwc c

c

c

H e H w e

e w w w w w

w w ww w w

1

)(wH

w

0wcww 0cww 0

Page 62: Digtlal   Signal   Processing ——    Using   MATLAB

其冲激响应 hd(n)

2

0

0

1( ) ( )

2sin ( )

2cos( ( ))( )

jw jwnd d

c

h n H e e dw

w nw n n

n

加矩形窗处理后,得到

0

( ) ( ) ( )sin ( )

2cos( ( ))( )

0,1,2, 1

d

c

h n h n W nw n

w nn

n N

Page 63: Digtlal   Signal   Processing ——    Using   MATLAB

分析:

sin ( ) ( )

( )

( ) ( ) ( 1 )

cw nW n

n

h n h n h N n

N

FIR

N

FIR

,偶函数 为常数

一定为偶对称,当 为奇数时,对应于第一种线性相位带通当 为偶数时,对应于第二种线性相位带通

Page 64: Digtlal   Signal   Processing ——    Using   MATLAB

若选择相位有相移的理想带通 DF频率特性为:

)2

0 0

)2

0 0

( ) ( )

2 2

0

jw j wd d

j w

c c

j w

c c

H e H w e

e w w w w w

e w w w w w

( )

止带

Page 65: Digtlal   Signal   Processing ——    Using   MATLAB

此时的脉冲响应

2

0

0

1( ) ( )

2sin ( )

2sin( ( ))( )

jw jwnd d

c

h n H e e dw

w nw n

n

0

( ) ( ) ( )

1sin ( )

1 22sin( ( ))

12 ( )2

d

c

h n h n W n

Nw n

Nw n

Nn

加矩形窗处理后

Page 66: Digtlal   Signal   Processing ——    Using   MATLAB

分析

此时的 h(n) 一定为反对称序列

( 1 )h n h N n

当 N 为奇数时,对应第三种线性相位,当 N 为偶数时,对应第四种线性相位,

Page 67: Digtlal   Signal   Processing ——    Using   MATLAB

7.4 加窗对系统频率响应的影响

根据频域卷积定理,加窗后,滤波器的频率响应

现在我们以低通滤波器为例来讨论: 加窗后,频率响应发生了什么变化 加什么样的窗,可以使变化减至最小

( )1) ( ) (

2jw j j w

dH e H e W e d

Page 68: Digtlal   Signal   Processing ——    Using   MATLAB

7.4.1 矩形窗矩形窗口的频率特性为

1 1

0 0

1( )

2

( ) ( )

sin( )1 21 sin( )

2

N Njw jwn jwn

R Nn n

NjwN jw

jw

W e R n e e

wNe

ewe

sin( ) 12( ) , ( ) ( )2sin( )

2

R

wNN

W w w ww

用幅度响应和相位响应的乘积表示为

Page 69: Digtlal   Signal   Processing ——    Using   MATLAB

矩形窗( 2 )当 w很小时,当 w很大时, WR(w) 为周期函数

)(wWR

w

3

1 )(w

2

11 Ntg主瓣N

2

N

2

N

4

N

4

w

( ) ( )2R

wNW w NSa

Page 70: Digtlal   Signal   Processing ——    Using   MATLAB

矩形窗处理后的频率响应

根据频域卷积定理可得

1

2

sin1 2

2 sin2

c

c

r rH W d

N

d

Page 71: Digtlal   Signal   Processing ——    Using   MATLAB

Wr(w-wc)

Wr(w-wc+2 π/N)

Wr(w-wc-2 π/N)

Page 72: Digtlal   Signal   Processing ——    Using   MATLAB

加窗后的低通滤波器频谱

Page 73: Digtlal   Signal   Processing ——    Using   MATLAB

几个特殊频率点

w=0处,响应值 为窗函数频谱Wr(w-θ) 和理想低通滤波器频率特性 Hd(θ) 的乘积的积分,可近似看作Wr(θ) 在 - π到 π 的全部积分面积w=wc处, Hd(θ)刚好与Wr(w-θ) 的一半重叠,因此 H(wc)=0.5H(0)w=wc-2 π/N处, Wr(w-θ) 的全部主瓣在 Hd(θ) 的通带之内,因此卷积结果有最大值,频率响应出现正肩峰w=wc+2 π/N处, Wr(w-θ) 的全部主瓣在 Hd(θ) 的通带之外,通带内的旁瓣负的面积大于正的面积,因此卷积结果有最负值,频率响应出现负肩峰

Page 74: Digtlal   Signal   Processing ——    Using   MATLAB

几个特殊频率点( 2 )

当w>wc+2 π/N 后, Wr(w-θ) 的左边旁瓣的起伏部分扫过通带,卷积值围绕零值而波动当w<wc+2 π/N 时, Wr(w-θ) 的右旁瓣进入通带,卷积值围绕 H(0)而波动

Page 75: Digtlal   Signal   Processing ——    Using   MATLAB

加矩形窗对理想低通滤波器的影响

使理想频率特性不连续点处边沿加宽,形成过渡带,过渡带的宽度等于窗的频谱主瓣宽度 4π/N在截止频率 wc 的两边 处, H(w) 出现肩峰,肩峰的两侧形成起伏振荡,振荡幅度取决于旁瓣相对幅度,振荡多少,取决于旁瓣的多少增加截取长度,则主瓣附近的窗的频率响应

可见改变 N ,只能改变窗的主瓣宽度, w坐标的比例和Wr

(w) 的绝对值大小,而不能改变主瓣与旁瓣的相对比例

2cw w N

sin 2 sin 22

sin 2 2r

N NW NSa N

Page 76: Digtlal   Signal   Processing ——    Using   MATLAB

矩形窗的频谱示意图

Page 77: Digtlal   Signal   Processing ——    Using   MATLAB
Page 78: Digtlal   Signal   Processing ——    Using   MATLAB

各种窗函数矩形窗阶段造成府肩峰为 8.95%,阻带最小衰减为 21dB ,不符合工程需要为了加大阻带衰减,只能改善窗函数形状,使窗谱尽量逼近冲击函数,即绝大部分能量集中在频谱中点一般窗函数满足两项要求: 窗谱主瓣尽可能的窄,以得到较陡的过渡带 尽量减少最大旁瓣的相对幅度 一般而言,上面两项要求不能同时满足

Page 79: Digtlal   Signal   Processing ——    Using   MATLAB

矩形窗

.13

4)

)2/sin(

)2/sin()

)()(

)1(2

1

dBN

BeW

ew

wNeW

nRnW

jwR

wNjjw

R

NR

第一副瓣比主瓣低

的主瓣宽度为(

其频率响应为:

Page 80: Digtlal   Signal   Processing ——    Using   MATLAB

三角形 (BARTLETT)窗

.26

8)

)2/sin(

)4

sin(2

)

1)1(2

1

1

22

)1(2

10

1

2

)(

)2

1(

2

dBN

BeW

ew

wN

NeW

NnNN

n

NnN

n

nW

jwBr

wN

wjjw

Br

Br

第一副瓣比主瓣低

的主瓣宽度为(

其频率响应为:

Page 81: Digtlal   Signal   Processing ——    Using   MATLAB

升余弦窗(汉宁 Hanning窗) -1

1 2( ) [1 cos( )] ( )

2 10 1

N

nW n R n

Nn N

转换成时域为:

1 1 2 1 2( ) [ ( ) ( ) ( )]

2 2 2R R RW W W WN N

左移 右移

倒余弦

Page 82: Digtlal   Signal   Processing ——    Using   MATLAB

升余弦窗(汉宁 Hanning窗) -2

Page 83: Digtlal   Signal   Processing ——    Using   MATLAB

升余弦窗(汉宁 Hanning窗) -3

由于频谱是由三个互有频移的不同幅值的矩形窗函数相加而成,这样使旁瓣大大抵消,从而能量相当有效地集中在主瓣内。

其代价 :主瓣加宽一倍,可达到减少肩峰,余振,提高阻带衰减。缺点:过滤带加大

NB

8主瓣宽度:

Page 84: Digtlal   Signal   Processing ——    Using   MATLAB

改进的升余弦窗 (汉明 Hanning窗 )-1

2( ) 0.54 0.46cos( ) ( )

1Hm N

nW n R n

N

2 2( ) ( )

1 1( ) 0.54 ( ) 0.23 ) 0.23 )j w j w

jw jw N NHm R R RW e W e W e W e

( (

2 2( ) 0.54 ( ) 0.23 ) 0.23 )

1 1Hm R R RW w W w W w W wN N

( (

其频谱函数为

其幅度函数为

Page 85: Digtlal   Signal   Processing ——    Using   MATLAB
Page 86: Digtlal   Signal   Processing ——    Using   MATLAB

改进的升余弦窗(汉明 Hamming窗) -2

NB

dB

NwW

NwW

wWwWN

RR

RHm

8,40

96.99

)2

23.0)2

23.0

)(54.0)(1

同。但主瓣宽度和汉宁窗相

小第一旁瓣的峰值比主瓣%,主瓣的能量约占

,能量更加集中在主瓣中这种改进的升余弦窗,

((

时,可近似表示为:当

Page 87: Digtlal   Signal   Processing ——    Using   MATLAB

二阶升余弦窗 (布拉克曼 Blackman窗 )

)]1

4()

1

4([04.0

)]1

2()

1

2([25.0)(42.0)(

)]()([04.0

)]()([25.0)(42.0)(

)(]1

4cos08.0

1

2cos5.042.0[)(

)1

4()

1

4(

)1

2()

1

2(

NwW

NwW

NwW

NwWwWwW

eWeW

eWeWeWeW

nRN

n

N

nnW

RR

RRRBl

Nwj

RN

wj

R

Nwj

RN

wj

Rjw

Rjw

Bl

NBl

其幅度函数为:

其频域函数为:

Page 88: Digtlal   Signal   Processing ——    Using   MATLAB

NB

wWR

123

)(

即:

倍。宽到矩形窗的但主瓣宽度却不得不加瓣,这样可以得到更低的旁

阻带衰减进一步增加,使旁瓣再进一步抵消。

函数,且幅度也不同的它们都是移位不同,

分组成,这样其幅度函数由五部

Page 89: Digtlal   Signal   Processing ——    Using   MATLAB

凯塞窗( Kaiser窗) 以上几种窗函数是各以一定主瓣加宽为代价,来换取某种程度的旁瓣抑制,而凯窗则是:

全面地反映主瓣与旁瓣衰减之间的交换关系,

可以在它们两者之间自由地选择它们的比重。

Page 90: Digtlal   Signal   Processing ——    Using   MATLAB

0

0

2

2( 1) / 2

01

( )( ) ,0 1

( )

21 1)

1

1) 1

! 2

k

kN

n

IW n n N

I

n

N

xI x

k

凯塞窗是由零阶第一类贝塞尔函数组成。

式中

其中(

Page 91: Digtlal   Signal   Processing ——    Using   MATLAB

5.447.865

( ) (0) 2k kW w w

当 时,窗函数接近汉明窗。时,窗函数接近布莱克曼窗。

凯塞窗的幅度函数为

0 ) 15 ~ 25

4 9.

I x

一般( 取 项,便可以满足精度要求,参数可以控制窗的形状。一般 加大,主瓣加宽,旁瓣幅度减小,典型数据为

Page 92: Digtlal   Signal   Processing ——    Using   MATLAB

滤波器阶数 ( 长度 )M 的选择 名称 近似过渡

带宽精确过渡

带宽最小阻带衰减

矩形 4π/M 1.8π/M 21dB

巴特利特 8π/M 6.1π/M 25dB

汉宁 8π/M 6.2π/M 44dB

哈明 8π/M 6.6π/M 51dB

布莱克曼 12π/M 11π/M 74dB

取 Kaiser窗时设定 beta,再用 kaiserord 函数求得 M

Page 93: Digtlal   Signal   Processing ——    Using   MATLAB

Matlab 实现W=boxcar(M): 产生M 点的矩形窗W=triang(M): 产生M 点的 Bartlett窗W=hanning(M) 产生M 点的 Hanning窗W=hamming(M) 产生M 点的 Hamming窗W=blackman(M) 产生M 点的 Blackman窗W=kaiser(M,beta) 产生 beta值的 M 点 Kaiser窗Examples

Page 94: Digtlal   Signal   Processing ——    Using   MATLAB

例:设计一个数字 FIR 低通滤波器,技术指标如下 : wp=0.2π , Rp= 0.25dB , ws= 0.3π , As= 50dB

首先查表选择满足阻带衰减的窗函数从中选择最合适的 ( 过渡带较小的 )调用 MATLAB 函数进行设计验证设计滤波器是否满足通带波纹如果不能满足,则换用过渡带较大的,重复以上步骤如果满足,则设计成功

Page 95: Digtlal   Signal   Processing ——    Using   MATLAB

频率采样设计法 (1)设计原理:系统函数 H(z) 能够从频率响应H(ejw) 的样本 H(k) 中恢复基本思想:已知理想低通滤波器 Hd(ejw) ,选取滤波器长度为 M ,在 [0 , 2π]区间以 M 等分频率对 Hd(ejw)采样得 H(k) ,再由其离散傅里叶反变换 h(n) 得系统函数 H(z)

h(n)=IDFT[H(k)] 可用函数 ifft 计算

Page 96: Digtlal   Signal   Processing ——    Using   MATLAB

频率采样设计法 (2)特点: 采样频率点上近似误差为 0 其它频率点上的近似误差取决于理想响应的形状,

理想响应愈陡峭,近似误差越大 靠近通带边缘的误差较大,通带内误差较小

分类: 直接设计法:直接利用基本思想,在近似误差上不

给出任何条件 最优设计法:通过改变过渡带内的样本值将阻带内误差减至最小

Page 97: Digtlal   Signal   Processing ——    Using   MATLAB

1

0

1

0/211

)(1)()(

M

n

M

kMkj

Mn

ez

kH

M

zznhzH

1

0/21

)(1)(

M

kMkjjw

jwMjw

ee

kH

M

eeH

1,2,1)(

0),0()()( *

/2

MkkMH

kHeHkH Mkj

2 ( )

(0), 02, 1,2, , 1

r

r M kr M

H kkH

H k MM

)(2)( kHj

r eM

kHkH

Page 98: Digtlal   Signal   Processing ——    Using   MATLAB

1,,12

1,

)(2

2

12

1,,0,

2

2

1

)(M

Mk

M

kMM

Mk

M

kM

kH

1,,1

2

1,

)(2

2

1

2

2

1,,0,

2

2

1

2)(M

Mk

M

kMM

Mk

M

kM

kH

Phase for Type 1 & 2

Phase for Type 3 & 4

Page 99: Digtlal   Signal   Processing ——    Using   MATLAB

直接设计法 (Naive design methods)

设计思想: 令 H(k)=Hd(e j2πk/M) , k=0,1,…,M-1 , 用 h(n)=IDFT[H(k)] 求得脉冲响应 h(n)

例:用频率采样法设计一个数字 FIR 低通滤波器,技术指标如下 : wp=0.2π , Rp= 0.25dB , ws= 0.3π , As=50dB

Page 100: Digtlal   Signal   Processing ——    Using   MATLAB

分析:取M=20 ,使在 wp处有一个样本,即 k=2

wp=0.2π= (2π/20)2

下一个样本在 ws ,即在 k=3

wp=0.3π= (2π/20)3

这样通带内 [0≤w≤wp] 内有 3 个样本,在阻带 [ws≤w≤π] 内有 7 个样本

Hr(k)=[1,1,1,0,……,0,1,1]

共 15 个零 由于 M=20 , α=(M-1)/2=9.5 ,为 II 类线性相位滤波

再由 IDFT 可得 h(n)

Page 101: Digtlal   Signal   Processing ——    Using   MATLAB

MATLAB编程解得

M=20;alpha=(M-1)/2;l=0:M-1;w1=(2*pi/M)*l;Hrs=[1,1,1,zeros(1,15),1,1];Hdr=[1,1,0,0]; wdl=[0,0.25,0.25,1];k1=0:floor((M-1)/2);k2=floor((M-1)/2)+1:M-1;angH=[-alpha*(2*pi)/M*k1,alpha*(2*pi)/M*(M-k2)];H=Hrs.*exp(j*angH);h=real(ifft(H,M));[db,mag,pha,grd,w]=freqz_m(h,1);[Hr,ww,a,L]=Hr_Type2(h);

Page 102: Digtlal   Signal   Processing ——    Using   MATLAB
Page 103: Digtlal   Signal   Processing ——    Using   MATLAB

最优设计法 (Optimum design method)

设计方法:增大取样点数 M ,并让过渡样本作为自由样本,改变他们的值以得到在给定 M 的条件下的最大衰减及过渡带宽

例:利用最优设计法设计一个比上例更好的低通滤波器

增加取样点数 M=40 ,以使过渡带内 (0.2 π<w<0.3π) 有一个样本,在k=5 和 k=35处,用 T 表示这两个样本值,其中 0<T<1 ,则以采样的振幅响应

Hr=[1,1,1,1,1,T,0,……,0,T,1,1,1,1]

共 29 个零

Page 104: Digtlal   Signal   Processing ——    Using   MATLAB

由于 alpha=(M-1)/2=19.5,相位响应的样本是

219.5 0.975 0 19

400.975 40 20 39

k k kH k

k k

现在我们考虑如何选取 T值,以得到更好的最小阻带衰减

首先我们选取通带和阻带幅度的中值 0.5

用 MATLAB编程解得

Page 105: Digtlal   Signal   Processing ——    Using   MATLAB

MATLAB 程序M=40;alpha=(M-1)/2;l=0:M-1;w1=(2*pi/M)*l;Hrs=[1,1,1,1,1,0.5,zeros(1,29),0.5,1,1,1,1];Hdr=[1,1,0,0]; wdl=[0,0.25,0.25,1];k1=0:floor((M-1)/2);k2=floor((M-1)/2)+1:M-1;angH=[-alpha*(2*pi)/M*k1,alpha*(2*pi)/M*(M-k2)];H=Hrs.*exp(j*angH);h=real(ifft(H,M));[db,mag,pha,grd,w]=freqz_m(h,1);[Hr,ww,a,L]=Hr_Type2(h);

Page 106: Digtlal   Signal   Processing ——    Using   MATLAB
Page 107: Digtlal   Signal   Processing ——    Using   MATLAB

结论:通过改变一个样本值,我们得到一种更好的设计实际系统的过渡带往往很小,只有一到两个样本,只需优化较少的样本就可以获得最大的最小阻带衰减这等小于使最大旁瓣幅度最小化,因此这类优化问题也称最大最小化问题 (minimax problem)最优过渡值表见文献 19的附录 B

Page 108: Digtlal   Signal   Processing ——    Using   MATLAB

最优等波纹设计法

窗口设计法和频率采样设计法的缺陷 设计过程不能将边缘频率 wp 和 wc精确给定 不能够同时标定波纹因子 δ1 和 δ2 , 近似误差在频带区间上不是均匀分布的,靠

近频带边缘误差愈大,远离频带边缘误差愈小

Page 109: Digtlal   Signal   Processing ——    Using   MATLAB

上述缺陷的克服对线性相位 FIR 滤波器而言,可以导出一组条件,使最大近似误差最小化的意义下设计的解达到最优 ( 最大值最小误差或 Chebyshev误差 )

满足这种条件的滤波器称为等波纹滤波器,其近似误差在通带和阻带均匀分布,且实现相同性能滤波器时阶数更低

Page 110: Digtlal   Signal   Processing ——    Using   MATLAB

最大最小问题的建立

线性相位 FIR 滤波器 4种情况的频率响应都能写为如下形式

)()( 21

wHeeeH rwjjjw M

其中 beta 和 Hr(w) 的表达式在表 7.2 (P.265) 中给出

利用三角函数恒等式,可将上面每个 Hr(w) 表达式写成一个 w 的函数 Q(w) 和一个余弦和的函数 P(w).

其中

四种情况下的 Q(w) , L 和 P(w) 由表 7.3(P.279) 给出

L

nr wnnwPwPwQwH

0

cos)()(),()()(

Page 111: Digtlal   Signal   Processing ——    Using   MATLAB

Chebyshev 近似问题

分析的目的是为了对 4 种情况有 Hr(w) 的共同形式 . 这将使问题的描述更容易为了将问题归结为 Chebyshev 近似问题,必须定义期望的振幅响应 Hdr(w) 和通带与阻带内定义的加权函数 W(w)( 用以独立控制 )

加权误差定义:],[],0[)],()()[()( sprdr wwSwwHwHwWwE

Page 112: Digtlal   Signal   Processing ——    Using   MATLAB

Chebyshev 近似问题

加权误差响应 E(w)与加权函数 W(w) 关系详见 P266

定义

SwwPwQ

wHwQwW

wPwQwHwWwE

dr

dr

,)()(

)()()(

)]()()()[()(

)]()(ˆ)[(ˆ)( wPwHwWwE dr

ˆ ( ) drdr

H wW w W w Q w H w

Q w

Page 113: Digtlal   Signal   Processing ——    Using   MATLAB

Chebyshev 近似问题的陈述

给定准确的 wp , ws , δ1 和 δ2 ,确定一组系数 a(n) 、 b(n) 、 c(n) 或 d(n) 以使在通带内和阻带内 E(w) 的最大绝对值最小,即

SwcoeffoverwE |)(|maxmin

.

Page 114: Digtlal   Signal   Processing ——    Using   MATLAB

极值数目的的确定

问题的提出:对某一给定的 M 点滤波器而言,在误差函数 E(w) 内存在多少个局部最大值和最小值结论在 P(w) 表达式中

2

3

0

cos 2 2cos 1cos 3 4cos 3cos

cosL

n

n

w ww w w

P w n w

Page 115: Digtlal   Signal   Processing ——    Using   MATLAB

交错点 (Alternation) 定理设 S 为闭区间 [0,pi] 内任意闭合子集,为使 P(w) 是在S 上对 Hdr(w) 的唯一最大值最小近似,其充要条件是E(w) 在 S 内至少出现 (L+2) 个交错点 (alternations) 或极值频率,即在 S 内一定存在 (L+2) 个频率 wi 使之满足

最优等波纹滤波器在 S 内的误差函数要么有 (L+2) 个,要么有 (L+3) 个

Swww

wEwEwE

L

Sii

110

1 |)(|max)()(

Page 116: Digtlal   Signal   Processing ——    Using   MATLAB

Parks-McClellan 算法交错点定理确保最大最小近似问题的解存在且唯一, Parks-McClellan 算法完成求解工作它由 Remez交换算法提供迭代解 .1. 滤波器的阶数 M 由 (7.48) 计算2. 估猜极值频率 wi (i= 1:L+2) 3. 根据这些极值频率点拟合一个 L阶多项式4. 在一个很细的密度上确定局部最大误差,并在新的极值上调整得到新的极值频率 wi’

5. 重复第 3 步6. 一直到最优一组频率和全局最大误差找到为止,最

后得出多项式 P(w) ,再确定系数 β(n) ,计算出 a(n) 和脉冲响应 h(n)

Page 117: Digtlal   Signal   Processing ——    Using   MATLAB

2,

6.14

log20ˆ

10*)1(1

log20

110

110

1

1log20

2110

20/12

1

210

20/

20/

11

110

ps

As

R

R

p

wwf

fM

A

R

s

p

p

Page 118: Digtlal   Signal   Processing ——    Using   MATLAB

等波纹设计函数 remez

调用格式 : [h]=remez(N,f,n,weights,ftype)当 weight=1 ,同时 ftype 不是 Hilbert 滤波器或微分器时[h]=remez(N,f,m) h 是滤波器脉冲响应的系数,长为 M=N+1 N 定义了滤波器的阶数 f – 一个数组,定义了以 π 为单位的频带边缘频率 . m – 一个数组,定义了在 f 给定频率上的期望幅度

响应

Page 119: Digtlal   Signal   Processing ——    Using   MATLAB

用 Remez 函数作等波纹设计实例

例题 7.23: 低通滤波器设计 同窗函数设计法比较 ( 例 7.8) 同频率采样设计法比较 ( 例 7.14,7.15,7.16)

例题 7.24: 带通滤波器设计 同窗函数设计法比较 ( 例 7.10) 同频率采样设计法比较 ( 例 7.17)

例题 7.25: 高通滤波器设计例题 7.26: 阶梯形滤波器设计

Page 120: Digtlal   Signal   Processing ——    Using   MATLAB

其它等波纹设计实例

例题 7.27: 使用 remez 函数设计数字微分器例题 7.28:使用 remez 函数设计数字 Hilbert 滤波器

Page 121: Digtlal   Signal   Processing ——    Using   MATLAB

作业 (P282) : p7.14 p7.19