数字信号处理和分析课程设计报告Word文件下载.docx
《数字信号处理和分析课程设计报告Word文件下载.docx》由会员分享,可在线阅读,更多相关《数字信号处理和分析课程设计报告Word文件下载.docx(32页珍藏版)》请在冰豆网上搜索。
摘要
本文是以IIR数字滤波器的传统设计思想与步骤加以实用与拓展,并结合计算机辅助设计方法而进行数字滤波器设计的介绍。
以数字滤波器为例,着重运用了基于MATLAB的四种滤波处理处理方式(Butterworth,Chebyshev1,Chebyshev2,Ellipticfilter),同时,运用《数字信号处理》课程中所学知识,把具体的事物转化为用数学方法可以进行科学处理的数据。
以照片为操作对象,结合已有的程序进行加噪,后取加噪前后的图像的像素点进行RGB值幅度大小对比,得到一定得直观的滤波目的。
之后,对加噪后的图像进行能量密度分析,得到用以确定滤波器边界频率和阻带边界频率的参照值,在进一步凭借参照值,带入不同滤波器参数进行IIR低通滤波器设计,同时观察各不同IIR低通滤波器的图像滤波去噪效果,从而得出最佳的IIR低通滤波器设计参数。
最后,应用不同的逼近方式设计IIR滤波器并观察滤波效果。
使用以上方法为数字滤波器设计带来全新的实现手段,设计快捷方便,仿真波形直观。
关键词:
数字滤波器;
IIR;
MATLAB;
滤波
Abstract
ThisarticleisbasedonthetraditionofIIRdigitalfilterdesignanddevelopmentandstepstobepractical,methodscombinedwithcomputer-aideddesignofdigitalfilterdesignintroduced.Digitalfilter,forexample,focusesontheuseofMATLAB-basedfilteringapproachfour(Butterworth,Chebyshev1,Chebyshev2,Ellipticfilter),atthesametime,theuseof"
DigitalSignalProcessing"
intheknowledge,thespecificthingsintomathematicalmethodcanbeusedforscientificdataprocessing.Takephotosfortheoperationoftheobject,combinedwiththeexistingprocedureswithnoiseandafterimagestakenbeforeandafteraddingnoisethepixelRGBvaluesofthesizerangeofcontrast,haveacertainintuitivefilteringpurposes.Afteraddingnoisetotheimageaftertheenergydensityanalysis,todeterminethefilterstopbandboundaryfrequencyandthefrequencyofthereferencevalueoftheborder,inthefurtherwithreferencetothevalueofdifferentfilterparametersintothelow-passIIRfilterdesign,whileobservingthevariouslow-passfilterIIRfilterdenoisingimages,whichcometothebestoftheIIRlow-passfilterdesignparameters.Finally,adifferentwayofapproachingthedesignIIRfilterandobservethefilteringeffect.Usingtheabovemethodfordigitalfilterdesigntoachieveawholenewmeansoffastandconvenientdesign,simulationwaveformsandintuitive.
朗读
显示对应的拉丁字符的拼音
字典-查看字典详细内容
Keywords:
Digitalfilter;
IIR;
MATLAB;
filter
基于MATLAB的IIR数字滤波器的设计
一、实验目的
通过MATLAB的设计实验,要求学生回顾所学数字信号处理级分析的基础理论和基础实验,掌握数字滤波器的综合使用及设计方法,熟悉掌握IIR数字滤波器的设计及应用方法,达到数字信号处理实验课程所要求掌握的基本内容。
二、设计要求与内容
数字滤波器是具有一定传输选择特性的数字信号处理装置,其输入、输出均为数字信号,实质上是一个由有限精度算法实现的线性时不变离散系统。
它的基本工作原理是利用离散系统特性对系统输入信号进行加工和变换,改变输入序列的频谱或信号波形,让有用频率的信号分量通过,抑制无用的信号分量输出。
数字滤波器和模拟滤波器有着相同的滤波概念,根据其频率响应特性可分为低通、高通、带通、带阻等类型,与模拟滤波器相比,数字滤波器除了具有数字信号处理的固有优点外,还有滤波精度高(与系统字长有关)、稳定性好(仅运行在0与l两个电平状态)、灵活性强等优点。
数字滤波器按单位脉冲响应的性质可分为无限长单位脉冲响应滤波器IIR和有限长单位脉冲响应滤波器(FIR)两种。
在这里我们选择用IIR完成相关设计及分析。
三、课程设计原理
3.1总体方案设计
3.1.1matlab软件及其工具箱的简介
MATLAB具有用法简单、灵活、程式结构性强、延展性好等优点,已经逐渐成为科技计算、视图交互系统和程序中的首选语言工具。
特别是它在线性代数、数理统计、自动控制、数字信号处理、动态系统仿真等方面表现突出,已经成为科研工作人员和工程技术人员进行科学研究和生产实践的有利武器。
MATLAB具有以下几个特点:
功能强大的数值运算功能
强大的图形处理能力
高级但简单的程序环境
丰富的工具箱
工具箱
各种工具箱(TOOLBOX)使用户能够学习和使用专业技术,它们集成了MATLAB函数并扩展了MATLAB工作环境,这样就可以解决一些特殊类别的问题,用户可以方便快捷地使用复杂的理论公式,免除了自己编写复杂而庞大的算法程序的困扰。
尤其是在做数学推导和理论验证时,有了这些功能丰富的工具箱,问题就变的十分简单。
总的来说,迄今所有的几十个工具箱大致可分为两类:
功能型工具箱和领域型工具箱。
功能型工具箱主要用来扩充MATLAB的符号计算功能、图形建模仿真功能、文字处理功能以及与硬件实时交互功能,能用于多种学科。
而领域型工具箱是专业性很强的,如控制工具箱、金融工具箱等。
3.1.2双线性变换法设计IIR数字滤波器的原理
脉冲响应不变法的主要缺点是产生频率响应的混叠失真。
这是因为从S平面到Z平面是多值的映射关系所造成的。
为了克服这一缺点,可以采用非线性频率压缩方法,将整个频率轴上的频率范围压缩到-π/T~π/T之间,再用z=esT转换到Z平面上。
也就是说,第一步先将整个S平面压缩映射到S1平面的-π/T~π/T一条横带里;
第二步再通过标准变换关系z=es1T将此横带变换到整个Z平面上去。
这样就使S平面与Z平面建立了一一对应的单值关系,消除了多值变换性,也就消除了频谱混叠现象,映射关系如图1所示。
图3-1-1双线性变换的映射关系
为了将S平面的整个虚轴jΩ压缩到S1平面jΩ1轴上的-π/T到π/T段上,可以通过以下的正切变换实现
(1)
式中,T仍是采样间隔。
当Ω1由-π/T经过0变化到π/T时,Ω由-∞经过0变化到+∞,也即映射了整个jΩ轴。
将式
(1)写成
将此关系解析延拓到整个S平面和S1平面,令jΩ=s,jΩ1=s1,则得
再将S1平面通过以下标准变换关系映射到Z平面
z=es1T
从而得到S平面和Z平面的单值映射关系为:
(2)
(3)
式
(2)与式(3)是S平面与Z平面之间的单值映射关系,这种变换都是两个线性函数之比,因此称为双线性变换
式
(1)与式
(2)的双线性变换符合映射变换应满足的两点要求。
首先,把z=ejω,可得
(4)
即S平面的虚轴映射到Z平面的单位圆。
其次,将s=σ+jΩ代入式(4),得
因此
由此看出,当σ<
0时,|z|<
1;
当σ>
0时,|z|>
1。
也就是说,S平面的左半平面映射到Z平面的单位圆内,S平面的右半平面映射到Z平面的单位圆外,S平面的虚轴映射到Z平面的单位圆上。
因此,稳定的模拟滤波器经双线性变换后所得的数字滤波器也一定是稳定的。
双线性变换法优缺点
双线性变换法与脉冲响应不变法相比,其主要的优点是避免了频率响应的混叠现象。
这是因为S平面与Z平面是单值的一一对应关系。
S平面整个jΩ轴单值地对应于Z平面单位圆一周,即频率轴是单值变换关系。
这个关系如式(4)所示,重写如下:
上式表明,S平面上Ω与Z平面的ω成非线性的正切关系,如图2所示。
由图2看出,在零频率附近,模拟角频率Ω与数字频率ω之间的变换关系接近于线性关系;
但当Ω进一步增加时,ω增长得越来越慢,最后当Ω→∞时,ω终止在折叠频率ω=π处,因而双线性变换就不会出现由于高频部分超过折叠频率而混淆到低频部分去的现象,从而消除了频率混叠现象。
图3-1-2双线性变换法的频率变换关系
但是双线性变换的这个特点是靠频率的严重非线性关系而得到的,如式(4)及图2所示。
由于这种频率之间的非线性变换关系,就产生了新的问题。
首先,一个线性相位的模拟滤波器经双线性变换后得到非线性相位的数字滤波器,不再保持原有的线性相位了;
其次,这种非线性关系要求模拟滤波器的幅频响应必须是分段常数型的,即某一频率段的幅频响应近似等于某一常数(这正是一般典型的低通、高通、带通、带阻型滤波器的响应特性),不然变换所产生的数字滤波器幅频响应相对于原模拟滤波器的幅频响应会有畸变,如图3所示。
图3-1-3双线性变换法幅度和相位特性的非线性映射
对于分段常数的滤波器,双线性变换后,仍得到幅频特性为分段常数的滤波器,但是各个分段边缘的临界频率点产生了畸变,这种频率的畸变,可以通过频率的预畸来加以校正。
也就是将临界模拟频率事先加以畸变,然后经变换后正好映射到所需要的数字频率上。
3.2设计方案论证
3.2.1IIR数字滤波器设计思路与步骤
IIR数字滤波器可用一个n阶差分方程:
y(n)=Σbrx(n-r)+Σaky(n-k),
或用它的Z域系统函数:
对照模拟滤波器的传递函数:
不难看出,数字滤波器与模拟滤波器的设计思路相仿,其设计实质也是寻找一组系数{b,a},去逼近所要求的频率响应,使其在性能上满足预定的技术要求;
不同的是模拟滤波器的设计是在S平面上用数学逼近法去寻找近似的所需特性H(S),而数字滤波器则是在Z平面寻找合适的H(z)。
IIR数字滤波器的单位响应是无限长的,而模拟滤波器一般都具有无限长的单位脉冲响应,因此与模拟滤波器相匹配。
由于模拟滤波器的设计在理论上已十分成熟,因此数字滤波器设计的关键是将H(S)→H(Z),即,利用复值映射将模拟滤波器离散化。
已经证明,冲击响应不变法和双线性变换法能较好地担当此任,则在此基础上,数字滤波器的设计就可首先归结为模拟滤波器的设计了。
数字滤波器的设计步骤如图所示。
图3-2-1数字滤波器设计步骤
3.2.2数字滤波器的性能要求
一个理想滤波器,要求所在通频带内幅频响应是一常数;
相位频率相应为零或是频率的线性函数。
但一个实际的滤波器要是不可能得到上述幅频和相频响应。
以低通滤波器为例,频率响应有通带、过渡带及阻带三个范围
•δ1:
通带衰减δ2:
阻带衰减
•ωc:
通带截止频率ωst:
阻带截止频率
•ωc-ωst:
过渡带
3.2.3数字滤波器设计方法概述
设计IIR数字滤波器一般有以下两种方法:
•1.模拟滤波器:
首先设计一个合适的模拟滤波器,然后将它转换成满足给定指标的数字滤波器,这种方法适合于设计幅频特性比较规则的滤波器,例如低通、高通、带通、带阻等。
•2.直接在频域或者时域中进行数字滤波器设计,由于要联立方程,设计时需要计算机作辅助设计。
四、设计步骤及方法
根据论证,现采用上述方法开始基本设计。
4.1设计的一般方法
IIR滤波器以模拟低通滤波器为基础的设计方法,为了设计其他的选频滤波器(高通,带通,带阻等),需要对低通滤波器进行频率转换,在设计过程中有两种不同的变换,频带变换和模拟/数字变换。
根据这两种变换的先后次序,引出两种设计方法。
4.2巴特沃思低通滤波器
4.2.1基本性质
巴特沃思滤波器以巴特沃思函数来近似滤波器的系统函数。
巴特沃斯滤波器是根据幅频特性在通频带内具有最平坦特性定义的滤波器。
巴特沃思滤波器的低通模平方函数表示
4.2.2系统函数和极点分布
4.2.3设计过程
4.3切比雪夫I滤波器
4.3.1基本性质
4.3.2设计过程
五、实际设计过程
5.1数字图像的概念理解
日常所见的图像多是连续的,即f,x,y的值可以是任意实数。
为了能够用计算机对图像进行加工,需要把连续的图像在坐标空间XY和性质空间F都离散化。
这种离散化的图像就是数字图像。
图像中的每个基本单元叫做图像元素简称像素(pictureelement)。
对2-D图像,英文里常用pixel代表像素。
我们用(x,y,o)来确定图像的所有值。
其中,x,y是像素坐标,o是分别取1,2,3时分别代表矩阵携带的颜色信息分别是红蓝绿。
5.2滤波设计前的准备
选取数字图像并对图像添加噪声。
加燥所用到的MATLAB函数程序是:
imshow(dh1);
dh1=imread(RNAME,'
jpg'
);
imwrite(dh,WRNAME,'
其中imread是读取图像的函数并把图像转化为矩阵的函数,inshow是显示图像的函数,inwrite是生成新图片用的。
原图像:
下面是用MATLAB对图形加燥后的图像
加噪效果如同在原图上加一层噪声图像,我们希望滤除图上的散点。
加噪前的图像能量密度图加噪后的图像能量密度图
对能量密度图进行分析可以看出图像在W在0.3以前变形。
所以我们选定Wc=0.3为截止频率。
5.3确定归一化参数指标
(1)由5.2确定Wc=0.3
(2)选取通带最大衰减,同时根据图像选取最优参数:
Matlab编程如下:
forP=1:
20
wp=0.03+0.03*(P-1);
ws=wp+0.25;
dp=0.2+0.02*p;
ds=40;
inshow(dh1);
我们选取最佳视觉参数:
wp=0.4;
ws=0.8;
dp=0.1;
5.3.1选取滤波器类型
1巴特沃兹(butterworth)
所用到程序:
[N,WN]=buttord(wp,ws,dp,ds);
%修改可做别的模型
[num,den]=butter(N,WN);
foro=1:
3
A(1:
M,1:
N)=dh(1:
N,o);
AL=A;
AI=A;
fork=1:
N
x=AL(:
k);
AL(:
k)=filter(num,den,x);
%设计出的IIR滤波器的参数num,den
end
dhL(1:
N,o)=AL(1:
N);
DH(1:
N,o)=dhL(1:
%有约束滤波
End
滤波前图像
滤波后图像
滤波后的能量密度图滤波前的能量密度图
巴特沃兹滤波器幅值频率图
2切比雪夫1型
[N,WN]=cheb1ord(wp,ws,dp,ds);
[num,den]=cheby1(N,dp,WN);
foro=1:
滤波后的图像
滤波后的能量密度图滤波后的能量密度图
切比雪夫1型滤波器幅值频率
3切比雪夫2型
所用到程序:
[N,WN]=cheb2ord(wp,ws,dp,ds);
[num,den]=cheby2(N,dp,WN);
滤波后的能量密度图滤波后的能量密度图
切比雪夫2型滤波器幅值频率
3椭圆滤波器
所用到程序:
[N,WN]=ellipord(wp,ws,dp,ds);
[num,den]=ellip(N,dp,ds,WN);
滤波后图像
椭圆滤波器幅值频率
六、比对调试及运行成果
模拟展示
七、收获、体会和建议
这次课程设计的数字滤波器是比较复杂的。
虽然以前在《数字信号处理》课程学习及试验中接触过一些相关知识,但在初期还是感到无从下手。
这是我第一次接触MATLAB软件,感觉它作为一种设计语言或者说一种辅助的设计工具,不仅有它的优势,同样也有劣势。
因为以前曾经学习过C、C+之类的汇编语言,所以对程序设计并不陌生,但是,对于数字信号处理这门课程的课程设计,不仅仅需要基本的编程语言功底,同样需要了解掌握相关数字信号处理的知识。
设计过程中,我深刻的体会到在设计过程中,需要反复实践,其过程很可能相当烦琐,有时花很长时间设计出来的程序并不能达到理想的效果,那时心中未免有点灰心,有时还特别想放弃,此时更加需要静下心,查找原因。
设计思路是最重要的,只要你的设计思路是成功的,那你的设计已经成功了一半。
因此我们应该在设计前做好充分的准备,像查找详细的资料,为我们设计的成功打下坚实的基础。
设计滤波器阶段,这个阶段可以说是整个设计过程的重中之重。
所有的设计方法还有步骤虽都有相关内容可以参考上都有,甚至还有例题,但是这个阶段遇到的主要问题就是以前的知识忘记不少,所以做设计的时候要常随手翻阅课本以及相关资料,同时,有些程序在不同条件下运行存在不同的偏差值,因为为达到最好的效果,反复尝试是这个阶段的主要工作。
实验阶段可以说是这次设计中最重要的部分,因为以前的只是理论而不是真正的实体。
所以说它是最重要的。
因为MATLAB作为一种辅助软件,较人性化,便于操作,所以程序开发完毕后,简单运行边可以得到结果。
但是这个环节的重点就是程序的调试。
根据出现的效果的不同,同时为了使数字滤波器达到最好的效果,许多参数的设定需要随时的修改矫正,这样就需要我们进行一定量的计算与分析。
通过查询资料并且询问老师,这些问题一个一个都被解决了。
另外就是要熟练地掌握课本上的知识,这样才能对试验中出现的问题进行分析解决。
这是应用课本知识的大好时机。
总之,通过这次练习我有了很多收获。
在摸索该如何设计滤波器使之实现所需功能的过程中,特别有趣,培养了我的设计思维,增强了全局思维能力。
在改进程序的过程中,同学们共同探讨,最后的程序已经比初期设计有了很大提高。
在让我体会到了设计程序的艰辛的同时,更让我体会到成功的喜悦和快乐。
附录
1.butterworth滤波器
functionDE_NOISE_IMAGE_butter%butterworth滤波器,
[filename,pathname]=uigetfile(...
{'
*.jpg'
'
MATLABFiles(*.jpg)'
;
'
*.m'
'
M-files(*.m)'
...
*.fig'
Figures(*.fig)'
*.mat'
MAT-files(*.mat)'
*.mdl'
Models(*.mdl)'
*.*'
AllFiles(*.*)'
},...
Pickafile'
%选择已加燥的照片
[q,qq]=size(pathname);
S='
\'
[q1,qq1]=size(filename);
RNAME=pathname;
RNAME(qq+1)=S
(1);
RNAME(qq+2:
qq+1+qq1)=filename(1:
qq1);
%选择路径用的
dh1=imread(RNAME,'
%选被噪声污染的图象;
%dh1=imread(filename,'
[M,N,O]=size(dh1);
dh1=double(dh1)/255;
dh=dh1;
dhL=dh1;
dhI=dh1;
PGJ_INPUT(dh1);
%图象功