基于matlab的fir数字滤波器设计.docx

上传人:b****6 文档编号:5553396 上传时间:2022-12-19 格式:DOCX 页数:13 大小:312.43KB
下载 相关 举报
基于matlab的fir数字滤波器设计.docx_第1页
第1页 / 共13页
基于matlab的fir数字滤波器设计.docx_第2页
第2页 / 共13页
基于matlab的fir数字滤波器设计.docx_第3页
第3页 / 共13页
基于matlab的fir数字滤波器设计.docx_第4页
第4页 / 共13页
基于matlab的fir数字滤波器设计.docx_第5页
第5页 / 共13页
点击查看更多>>
下载资源
资源描述

基于matlab的fir数字滤波器设计.docx

《基于matlab的fir数字滤波器设计.docx》由会员分享,可在线阅读,更多相关《基于matlab的fir数字滤波器设计.docx(13页珍藏版)》请在冰豆网上搜索。

基于matlab的fir数字滤波器设计.docx

基于matlab的fir数字滤波器设计

巢湖学院

学士论文(设计)

 

题目基于matlab的fir数字滤波器设计

 

姓名Michael

所在院系物理与电子科学系

专业班级05电子信息工程

(2)班

学号05029072

指导教师啊兵

日期2009年5月26日

 

基于matlab的fir数字滤波器设计

05电信

(2)Michael指导教师啊兵

摘要:

介绍了应用Matlab语言设计FIR数字滤波器时采用直接程序设计法。

同时介绍了FIR数字滤波器几种设计方法的函数调用格式;通过实例,给出了程序设计法的详细步骤,并在Matlab的Simulink环境下,对所设计的滤波器进行了仿真。

关键词:

数字滤波器;Matlab

Abstract:

ItIntroducedtheapplicationofMatlablanguagewhendesigningFIRdigitalfilterwithdirectprocedures.AtthesametimeitintroducedseveralformatsoffunctioncallswhendesigningFIRdigitalfilter;throughsomeexamplesofprogrammingmethoditgivesthedetailstepsofSimulinkinMatlabenvironment,andtosimulatethedesignedfilter.

Keywords:

digitalfilterMATLAB

第一章引言

1.MATLAB的特点

MATLAB(MatrixLaboratory)机矩阵实验室是由美国MathWorks公司推出的一款集数值分析、矩阵计算、信号处理和图形显示于一体的工具软件。

它的命令语句功能非常强大,包含了大量高度集成的可直接调用的函数,高效简洁;另一方面,它又是一个开放系统,针对不同的学科,推出了不同的工具箱。

自1984年推向市场以来,经过十几年的发展和竞争,现已成为国际认可(IEEE)的最优化的科技应用软件一。

正是由于MATLAB具有良好的扩展性以及强大的数据分析和处理能力,现已广泛应用于矩阵代数、数值计算、数字信号处理、振动理论、神经网络控制、动态仿真等领域。

MATLAB是用M语言编程,尽管不能在M文件中直接调用C语言程序,但可以通过MATLAB提供的应用编程接口(API)来与外部接口,在MATLAB环境中调用C语言或Fortran程序、输入或输出数据以及与其他软件程序建立客户/服务器关系。

在MATLAB中调用C语言程序,必须通过MEX文件来实现。

2.FIR数字滤波器

滤波就是有选择性地提取或去掉(或削弱)某一段或某几段频率范围内的信号,数字滤波器是一种用来过滤时间离散信号的数字系统,它是通过对抽样数据进行数学处理来达到选频目的。

数字滤波器可分为IIR(无限冲激响应)和FIR(有限冲激响应)两种结构。

随着计算机技术和集成电路技术的发展,数字信号处理以其方便、灵活的特点,越来越引起人们的重视。

数字滤波器是数字信号处理的重要内容,数字滤波器的设计已成为数字信号处理研究中的热点之一。

应用Matlab语言可以快捷地设计出由软件组成的数字滤波器,很容易通过对参数的修改进行性能的优化。

FIR滤波器(即有限长冲击响应滤波器,FiniteImpulseResponseDigitalFilter)最大的优点就是在满足幅频特性的同时,还可以获得严格的线性相位特性,这使它在语音处理、图像处理等要求高保真的数字信号处理中显得十分重要。

第二章FIR数字滤波器的设计原理

1.FIR滤波器设计原理

由于FIR滤波器冲击响应h[n]是有限长序列,因此这种结构可用非递归结构来实现[1]。

FIR数字滤波器系统函数一般形式为:

FIR滤波器数学表达式可用差分方程来表示:

式中:

y(n)输出序列;h(k)滤波器系数;n滤波器阶数;x(k)输入序列。

应用Matlab设计FIR滤波器的主要任务就是根据给定的性能指标,设计一个H(z),使其逼近这一指标,进而计算并确定滤波器的系数b(n),再将所设计滤波器的幅频响应、相频响应曲线作为输出,与设计要求进行比较,对设计的滤波器进行优化。

FIR滤波器的主要设计方法有窗函数法、最优化设计法及约束最小二乘逼近法[2]。

在滤波器传统设计中,要得到其幅频和相频响应特性,需要根据这些方法进行大量的计算,这使得滤波器的设计缓慢,周期变长,不利于设计的优化。

Matlab信号处理工具箱中提供了基于滤波器设计方法的工具函数,编程中可根据设计要求直接调用相应的函数,方便快捷,见表1。

表1 FIR数字滤波器设计方法及函数调用格式

设计方法

调用方法

调用格式

说明

窗函数法

Fir1

Fir2

b=fir1(n,Wn)

b=fir2(n,f,m)

n为阶数;Wn为截止频率

f,m为期望幅频向量和幅值向量

最优化设计法

Firls

Remez

Remezord

b=firls(n,f,a)

bremez(n,f,a,w)

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

两者仅算法不同,f为频率点向量,n为指定频率点幅度响应,w为权系数

Fo为归一化频率边界,ao为频带内幅值,w为权向量

最小二乘法

Fircls

Fircls1

b=fircls(n,f,a,up,lo)

b=fircls1(n,wo,dp,ds)

up,lo为每个频带上边界和下边界频率,f,a为期望幅频特性的频率向量和幅值向量。

Wo

为截至频率,dp为离幅值1的最大偏差,ds为阻带离幅值0的最大偏差。

 

2.用窗函数法设计FIR数字滤波器

窗函数设计[3]技术是FIR滤波器设计的主要方法之一,由于其运算简单、精度高,已成为工程中应用最广泛的设计方法。

设计滤波器的基本思想是让待设计的实际滤波器逼近理想特性。

理想低通滤波器的频率特性应为:

振幅特性在通带内为1,阻带内为0;在通带内的相位特性与w成线性关系,即

它对应的理想单位冲激相应hd(n)为

可见,理想低通滤波器的单位冲激响应hd(n)是无限长的非因果序列。

而我们要设计的是FIR滤波器,其h(n)必然是有限长的,为了构造物理上可以实现的长度为N的因果线性相位滤波器,必须将hd(n)截取长度为N的一段,或者说用一个有限长度的窗口函数序列w(n)来截取hd(n),即h(n)=w(n)hd(n),因而窗函数序列的形状及长度的选择就是关键。

工程实际中常用的窗函数有6种,即矩形窗、三角形窗、汉宁(Hanning)窗、哈明(Hamming)窗、布莱克曼(Blackman)窗和凯泽(Kaiser)窗。

它们之间的性能比较如表2所示。

实际的FIR数字滤波器的频率响应H(

)逼近理想滤波器频率响应Hd(

)的好坏,取决于窗函数的频率特性W(w)。

表26种窗函数的特性

窗函数

旁瓣峰值/dB

近似过渡带宽

精确过渡带宽

阻带最小衰减/dB

矩形窗

-13

4

/N

1.8

/N

21

三角形窗

-25

8

/N

6.1

/N

25

汉宁窗

-31

8

/N

6.2

/N

44

哈明窗

-41

8

/N

6.6

/N

53

布莱克曼窗

-57

12

/N

11

/N

74

凯泽窗(

-57

10

/N

80

 

3.窗函数法设计步骤

3.1

用窗函数设计FIR滤波器的步骤为:

(1)选择窗函数类型能够和长度,写出窗函数w(n)表达式。

根据阻带最小衰减选择窗函数w(n)的类型,再根据过渡带宽确定所选窗函数的长度N。

(2)构造希望逼近的频率响应函数

根据设计需要,一般选择相应的线性相位理想滤波器(理想低通,理想高通,理想带通,理想带阻)。

应当注意,理想滤波器的截止频率wc点(对低通滤波器

)近似为最终设计的FIRDFD的-6dB频率。

(3)计算:

(4)加窗得到设计结果:

3.2

实际设计时,一般采用MATLAB工具箱函数实现。

步骤

(1)由设计者根据设计指标完成,步骤

(2)-(4)的解题过程可调用设计函数fir1来实现。

Fir1时用窗函数法设计线性相位FIRDF的工具箱函数,调用格式如下:

hn=fir1(N,wc,’ftype’,window)

fir实现线性相位FIR滤波器的标准窗函数法设计。

“标准”时指再设计低通、高通、带通、带阻FIR滤波器时,

分别取相应的理想低通、高通、带通、带阻滤波器,故而设计的滤波器的频率响应称为标注频率响应。

hn=fir1(N,wc)可得到6dB截至频率为wc的N阶(单位脉冲响应h(n)长度为N+1)FIR低通滤波器,默认(缺省参数windows)选用hammiing窗。

其单位脉冲响应h(n)为:

h(n)=h(n+1),n=0,1,2,…,N

而且满足线性相位条件:

h(n)=h(N-1-n)

其中wc为对π归一化的数字频率,0

wc

1。

hn=fir1(N,wc,’ftype’)可设计高通和带阻滤波器。

·当ftype=high时,设计高通FIR滤波器;

·当ftype=stop时,设计带阻FIR滤波器。

hn=fir1(N,wc,’ftype’,window)通过选择wc、ftype和window参数,可以设计各种加窗滤波器。

Fir2可以指定任何形状的Hd(

),用help命令查阅其调用格式。

4.用Matlab对FIR数字滤波器进行仿真设计

4.1编写流程[4]

我们以低通数字滤波器设计为例,来介绍用MATLAB对FIR数字滤波器进行仿真过程:

设计55阶低通滤波器,截止频率在0.3,并用滤波器对信号sin(2*pi*15*t)+0.5*sin(2*pi*90*t)+0.2*sin(2*pi*300*t)滤波(信号采样频率为600Hz)。

1)用RLS设计数字低通滤波器B=fircls1(n,wo,dp,ds)函数返回长度为n+1线性相位低通FIR滤波器,截止频率为wo,取值0-1之间。

通带幅度偏离1.0最大值为dp,阻带偏离0最大值为ds,n为滤波器阶数。

2)建立新的M文件选择“File”菜单项,单击“NewM-file”按钮,便建立一个M文件[5]。

3)编写程序,调试程序,在MATLAB平台上得出实验结果编写完程序,单击“Debug”按钮,即可观察到所设计滤波器幅频特性和滤波前后的波形。

4.2实例

下面给出两个实例说明用MATLAB设计FIR滤波器的优点,及滤波器的滤波特性。

先用最优化设计法设计一个滤波器:

例1:

设计一个最小阶数的低通滤波器,采样频率fs=2000Hz,通带截止频率为500Hz,阻带的截至频率为600Hz,阻带最小衰减为40dB,通带的最大衰减为3dB。

在设计之前应先确定用说明方法设计,本例可选择等波纹的最优化设计法。

程序如下:

fs=2000;%采样频率

rp=3;%通带波纹

rs=40;%阻带波纹

f=[500600];%截止频率

a=[10];%期望的幅度

dev=[(10^(rp/20)-1)/(10^(rp/20)+1)10^(-rs/20)];

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

b=remez(n,fo,ao,w);%调用最优设计法中remez函数

freqz(b,1,1024,fs)

程序运行后,计算机输出该滤波器的幅频及相频响应特性,如图1所示。

图1 滤波器输出的幅频及相频响应特性

上图中幅频特性曲线从500Hz开始向下折,这是因为题设中通带截止频率为500Hz,同样图中幅频曲线在600Hz降为最低,是因为题设中阻带的截至频率为600Hz。

用窗函数设计一个滤波器:

例2:

设计一个低通滤波器,性能指标为通带0~1000Hz,阻带截止频率为2000Hz,通带波动1%,阻带波动5%,采样频率为10000Hz,采用Kaiser窗。

主要程序如下:

fc=1000;

fs=10000;

[n,Wn,beta,ftype]=kaiserord([10002000],[10],[0.050.05],fs);%得出滤波器的阶数

w=2*fc/fs%模拟到数字滤波器的技术指标的转换

window=kaiser(n+1,beta);%使用kaiser窗函数

b=fir1(n,w,window);%使用标准频率响应的加窗设计函数fir1

freqz(b,1,512);%数字滤波器频率响应;

t=(1:

100)/fs;

s=sin(2*pi*t*800)+sin(2*pi*t*3000)+sin(2*pi*t*4000);

%混和正弦波信号

sf=filter(b,1,s);%对信号s进行滤波

滤波器长度为13,归一化截止频率为0.2,凯塞窗控制旁瓣的参数为1.5099,以及传递给函数firl用于指定滤波器类型的ftype为low,通过图2-图4可以看出它能满足设计要求。

图2滤波器的幅频与相频特性

图3滤波前混和正弦波信号的波形

图4滤波后的波形

用最小二乘法设计一个fir滤波器

例3:

有一个采样频率为1000Hz的信号源,sin(30πt)+0.5*sin(180πt)+0.2*sin(600πt),应用约束最小二乘法设计一个带通滤波器,通带为[0.20.4],对该信号进行滤波。

程序如下:

t=0:

1/1000:

1;

sig=sin(2*pi*15*t)+0.5*sin(2*pi*90*t)+0.2*sin(2*pi*300*t);

plot(t,sig);

n=50;

f=[00.20.41];

a=[010];

up=[0.021.020.01];

lo=[-0.020.98-0.01];

b=fircls(n,f,a,up,lo);

newsig=fftfilt(b,sig);

figure

ft=t(301:

350);

ns=newsig(301:

350);

zns=interp(ns,12);

znt=interp(ft,12);

plot(znt,zns);

该题滤波器的幅频特性曲线和相频特性曲线及滤波前后的波形如图5、图6和图7所示:

图5滤波器的幅频特性曲线和相频特性曲线。

图6滤波前的波形

图7滤波后的波形

上文分别介绍了fir滤波器设计的三种方法:

窗函数法、最优化设计法和最小二乘法设计fir滤波器的程序步骤,并对程序进行了仿真,通过波形图,展示了滤波器的特性曲线和很好的仿真效果。

5结论:

FIR滤波器的应用十分广泛,当今的许多信号处理系统,如图像处理等系统要求具有线性相位特性。

在这方面FIR滤波器有其独特的优点,能很容易地设计出具有严格线性特性的FIR系统。

此外,FIR滤波器的冲激响应是有限长序列,其系统函数为一个多项式,它所含的极点多为原点,所以FIR滤波器永远是稳定的。

综上所述,在Matlab中进行数字滤波器的设计,简化为函数的调用,极大方便了数字滤波器的设计。

参考文献

[1]曲东才。

MATLAB平台下数字微分信号提取研究[J]。

系统仿真学报。

2002.Vol.14No.8。

[2]丁吉,姜涛。

基于Matlab的FIR数字滤波器的设计[J]。

长春工业大学学报。

2006年9

月第27卷第3期。

[3]丁玉美,高西全。

数字信号处理[M]。

第二版。

西安电子科技大学出版社。

[4]陈玲玲张虹。

基于MATLAB的FIR数字滤波器的优化设计[J]。

科技信息。

2008年第32

期。

[5]徐金明。

MATLAB实用教程[M]。

北京:

清华大学出版社,2005年。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 解决方案 > 学习计划

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1