基于Matlab的二维FIR数字滤波器的设计
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第22卷 第1期2010年3月
塔 里 木 大 学 学 报
Journal of Tari m University
Vol.22No.1
Mar.2010
文章编号:1009-0568(2010)01-0052-06
基于Matlab的二维F IR数字滤波器的设计
化希耀1 苏博妮1 张燕2
(1 塔里木大学信息工程学院,新疆阿拉尔 843300)
(2 西北师范大学物理与电子工程学院,甘肃兰州 730070)
摘要 数字滤波器设计是数字信号处理的重要组成部分。
文章介绍了基于Matlab编程环境下用窗函数设计法,频率采样法,频率交换法,实现F I R二维数字滤波器的设计,并给出了设计实例仿真。
设计结果表明,利用Matlab软件设计数字滤波器简便、易行。
关键词 Matlab;F I R滤波器;窗函数;频率
中文分类号:TP391 文献标识码:A
The D esi gn of2D F I R D i g ita l F ilter Ba sed on M a tl ab
Hua Xiyao1 Su Boni1 Zhang Yan2
(1 College of I nf or mati on Engineering,Tari m University,A lar,Xinjiang 843300)
(2 College of Physics and Electr onic Engineering,North W est Nor mal University,Lanzhou,Gansu 730070)
Abstract The design of digital filter is one of the most i m portant parts in signal p r ocessing.This article intr oduced using window func2 ti on method frequency sa mp ling method and frequency exchange method t o i m p le ment the design of2D F I R digital filter based on M at2 lab p r ogramm ing envir on ment and gave exa mp le of si m ulati on.The result indicates that usingM atlab t o design digital filter is very si m2 p le.
Key words Matlab;F I R digital filter;window functi on;frequency
随着信息时代和数字世界的到来,数字信号处理己成为当今一门极其重要的学科和技术领域。
在数字信号处理中,数字滤波器设计是基础,用来对信号进行过滤、检测与参数估计等处理,在通信、图像、语音、雷达等许多领域都有着十分广泛的应用,尤其在图像处理、数据压缩等方面应用尤为突出[1]。
目前数字滤波器的设计有许多现成的高级语言设计程序,但他们都存在设计效率较低,不具有可视图形,不便于修改参数等缺点,Matlab为数字滤波器的研究和应用提供了一个直观、高效、便捷的利器,它以矩阵运算为基础,把计算、可视化、程序设计融合到了一个交互式的工作环境中,Matlab信号处理工具箱、图像处理工具箱、小波工具箱等更是为数字滤波器的设计研究的提供了可能[2]。
本文在Matlab 编程环境下设计了二维F I R数字滤波器,同时对设计的滤波器在图像处理方面的应用给出了实例仿真分析。
1 F I R数字滤波器的设计
1.1 F I R数字滤波器的原理
数字滤波器是一种用来过滤时间离散信号的数字系统,通过对抽样数据进行数学处理来达到频域
①收稿日期:2009-06-11
作者简介:化希耀(1982-),男,助教,主要从事数据结构与算法方面的教学和研究。
E-mail:hua-28@
第1期化希耀等:基于Matlab 的二维F I R 数字滤波器的设计
滤波的目的。
根据其单位冲激响应函数的时域特性可分为两类:无限长冲激响应滤波器(II R -DF )和
有限长冲激响应滤波器(F I R -DF )[3]。
与II R 滤波
器相比,F I R 的实现是非递归的,总是稳定的,更重要的是,F I R 滤波器在满足幅频响应要求的同时,可以获得严格的线性相位特性;但是在满足同样的阻带衰减的情况下需要较高的阶数,滤波器阶数越高将占用更多的DSP 运算时间,因此对F I R -DF 的设计目标是在满足指标要求的情况下尽量减少滤波器的阶数。
数字滤波器用于改变输入信号的频谱特性,将输入的数字时间序列转化为输出的数字时间序列,并在转化过程中,使信号按预定的形式变化,以满足某种特定的设计要求
[4]。
一个因果的数字滤波器
可以用它的单位冲激响应h (n )、传输函数H (z )或者差分方程来表达,其中单位冲激响应和传输函数描述了系统的时域和频域性质,差分方程则反映了实现该滤波器所需的运算。
F I R -DF 的冲激响应h (n )是有限长的,一个M 阶F I R -DF 可以用差分方程表示如下:
y (n )=ρM =1
i =0h (i )x (n -i )
(1)
其系统函数H (z )=ρM =1
i =0
h (n )z
-n
(2)
M 阶的F I R 滤波器设计算法是非递归运算,设
计的核心问题是确定能满足所要求的转移序列或脉冲响应的常数问题,利用Matlab 本身所提供的函数命令,可以实现滤波器的设计,设计方法主要有窗函数法、频率采样法和等波纹最佳逼近法等。
1.2 窗函数设计法
窗函数设计法是一种通过截短和计权使无限长非因果序列成为有限长脉冲响应序列的设计方法。
通常在设计滤波器之前,应该先根据具体的工程应用确定滤波器的技术指标。
然后建立目标数字滤波
器模型,通常先采用理想的数字滤波器模型,再根据数学知识和滤波器的基本原理设计出一个实际的滤波器模型来逼近给定的指标。
设计滤波器常用的窗函数有矩形窗(Boxcar )、三角窗(barelett )、海明窗(Ha mm ing )、汉宁窗(Han 2ning )、布莱克曼窗(B lackman )等。
二维滤波器的实
现方法有两种:一种方法是用一维窗函数来构造二维窗函数(函数f wind1);另一种方法是直接使用二维窗函数(函数f wind2)。
假设要设计的二维F I R 滤波器的单位脉冲响应为:
h (n 1,n 2)=w (n 1,n 2)i (n 1,n 2)
(3)
其中是无限长冲激响应序列,是二维窗函数,等式两边做傅里叶变换得
H (w 1,w 2)=
1
π2
κI Ω(Ω1,Ω2)W (w 1-Ω1,w 2-Ω2)d Ω1Ω2
(4)
上式表明,对无限冲激响应加窗的效果等价于在频域用W (w 1,2w )对I (w 1,w 2)进行平滑。
这里用Matlab 中所提供的函数f wind1来设计二维带通滤
波器,以汉宁窗(Hanning )为例,设计程序如下所示:
[f1,f2]=freqs pace (21,’m eshgrid’);Hd =ones (21);r =sqrt (f1.^2+f2.^2);Hd ((r <0.1)|(r >0.5))=0;mesh (f1,f2,Hd )
h3=f wind1(Hd,hanning (21));figure,freqz2(h3);
title (’用Hanning 窗设计的带通滤波器幅频响应’
);图1是用汉宁窗(Hanning )所设计的带通滤波器的幅频响应。
3
5
塔 里 木 大 学 学 报第22
卷
图1 用Hanning 窗设计的带通滤波器幅频响应
1.3 频率采样设计法
频率采样设计法中,滤波器的频率响应指标是由连续频率响应的采样得到的,用其中非零频率响应的采样值就可以计算出冲激响应矩阵。
设期望的频率响应矩阵为h (m ,n ),0≤m ≤M ≤n ≤N 其频率响应为:
H (e j w
1,e j w
2)=∑M -1m -0∑N -1
n -0
h (m ,n )e
-j (w 1m +w 2n )
(5)
频域的采样为:
H (K,L )=∑M -1m -0∑N -1
n -0h (m ,n )e
-j 2
π(m k M +nl
N )(6)
则所设计的冲激响应矩阵为:
∑M -1m -0∑N -1n -0
H (K,L )e
j 2
π(m k M +nl
N )(7)
使用图象处理工具箱中的函数fsa mp2设计的程序如下所示:
[f1,f2]=freqs pace (21,’m eshgrid’);Hd =zer os (21);
r =sqrt (f1.^2+f2.^2)<0.3;
Hd (r )=1;mesh (f1,f2,Hd );
h =fsa mp2(Hd );figure,freqz2(h );
图2 用频率采样法设计的低通滤波器幅频响应
1.4 频率变换法
频率变换方法是通过频率变换,将一个一维零相位的F I R 滤波器变成二维滤波器。
由于它保持了一维滤波器的大多数特性(如传输带宽,波纹特性等),因而如果一维滤波器是最优的,则变换得到的二维滤波器也容易保持最优性。
此外,通过频率变
换得到的二维滤波器具有有效的实现结构,比直接用卷积法或用DFT 实现的运算量要小。
在Matlab 中,提供了函数ftrans2,用于实现频率变换算法,设计程序如下所示:
b1=re mez (10,[00.40.61],[1100]);[H1,w ]=freqz (b1,1,64,’w hole’
);4
5
第1期化希耀等:基于Matlab 的二维F I R 数字滤波器的设计
col or map (jet (64))
p l ot (w /p i -1,fftshift (abs (H1)));b2=re mez (14,[00.30.51],[1100]);[H2,w ]=freqz (b2,1,64,’w hole’);col or map (jet (64))
p l ot (w /p i -1,fftshift (abs (H2)));h1=ftrans2(b1);
figure,freqz2(h1,[3232]);h2=ftrans2(b2);
figure,freqz2(h2,[3232])
;
图3 截断频率为0.6
的十阶低通滤波器的频率响应
图4截断频率为0.5
的十四阶低通滤波器的频率响应
图5 截断频率为0.6的十阶二维滤波器的频率响应
5
5
塔 里
木 大 学 学 报第22
卷
图6 截断频率为0.5的十四阶二维滤波器的频率响应
2 实际应用举例
中,因为图象的大部分能量集中在幅度谱的低频部
分,而以上设计的截断频率为50Hz 的Butter worth 二维低通滤波器,
可以对加入噪声的图像进行滤波
,实现图像去噪,结果如下图所示:
图7 读入moon ..
tif,eight
..tif 的图象
图8 加入poiss on 躁声后的图象
6
5
第1期化希耀等:基于Matlab
的二维F I R
数字滤波器的设计
图9 用Butter worth
低通滤波器滤波后的图象
图10 维纳滤波
图10是直接利用工具箱中提供的维纳滤波器进行滤波去噪,将此图与图9的结果进行比较,可以看到,这里设计的低通滤波器基本达到了滤波去噪的效果。
3 结束语
以上在Matlab 环境下分别采用3种方法设计了二维滤波器,并且对设计的滤波器进行了实际应用仿真,该滤波器可以用做数字图像去噪,其效果与利用Matlab 工具箱提供的滤波器实现效果基本相同,用Matlab 设计数字滤波器不仅实现简单而且可以随时修改滤波器的参数,改变滤波器的性能,设计过程简单易行,在数字信号处理教学和工程设计方
面得到了广泛应用。
参考文献
[1] 彭红平,杨福宝.基于Matlab 的F I R 数字滤波器设计
[J ].武汉理工大学学报,2005(5):275-277.
[2] 陈杨,陈荣娟,郭颖辉,等.MAT LAB 6.X 图象编程与
图象处理[M ].西安:西安电子科技大学出版社,2002:
108-113.
[3] 陈爱萍,胡晓东.基于Matlab 的II R 数字滤波器的设计
[J ].湖南工程学院学报,2004(3):8-10.
[4] 潘永才,王子旭,游治.数字F I R 滤波器的Matlab 设计
[J ].半导体技术,2001(8):52-54.
7
5。