找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3751|回复: 0
打印 上一主题 下一主题
收起左侧

《MATLAB及其实践》课程设计报告

[复制链接]
跳转到指定楼层
楼主
ID:249537 发表于 2017-11-15 09:13 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

MATLAB及其实践》课程设计报告




设计题号:


姓   名:


学   院:


专   业:


班   级:


学   号:


日   期
  2017年 10月23日——2017年11月10日

指导教师:



摘要

随着信息时代和数字世界的到来,数字信号处理已成为今一门极其重要的学科和技术领域。数字滤波器是数字信号处理的基础,用来对信号进行过滤、检测与参数估计等处理,在通信、图像、语音、雷达等许多领域都有着十分广泛的应用。尤其在图像处理、数据压缩等方面取得了令人瞩目的进展和成就。鉴于此,数字滤波器的设计就显得尤为重要。例如,在电力系统微机保护和二次控制中,很多信号的处理与分析都是基于对正弦基波和某些整次谐波的分析,而在系统电压电流信号(尤其是故障舜变过程)中各种复杂成分,所以滤波器一直是电力系统二次装置的关键部件。目前微机保护和二次信号处理软件主要是采用的数字滤波器。

目前数字滤波器的设计有许多现成的高级语言设计程序,但他们都存在设计效率低,不具有可视图形,不便于参数修改等缺点,而MATLAB的FDATool工具为数字滤波器的研究和应用提供了一个直观、高效、便捷的利器。它以矩阵运算为基础,把计算、可视化、仿真设计融合到一个交互式的工作环境中。尤其是MATLAB工具箱使各个领域的研究人员可以直观方便地进行科学研究和工程应用。其中的信号处理、图像处理等工具箱为数字滤波研究的蓬勃发展提供了有力的工具。本文介绍了一种基于MATLAB环境下对数字理滤波器进行设计与仿真的方法。在基于MATLAB环境的数字滤波器的设计过程中,MATLAB工具箱提供了几种模拟滤波的原型产生函数—贝塞尔低通模拟滤波器原型,巴特沃斯滤波器原型,切比雪夫(Ⅰ型、Ⅱ型)滤波器原型,椭圆滤波器原型等不同的模拟滤波器原型;模拟低通滤波器原型向低通、高通、带通、带阻的转变函数;从模拟滤波器向数字滤波器转化的双线性变换和冲激响应不变法;模拟数字IIR滤波器阶数选择函数以及数字滤波器直接设计函数等。这一整套设计函数给在MATLAB中设计IIR数字带来了极大的方便。                                

目录

1.1数字滤波器概述……………………………………1

1.2 MATLAB概述………………………………………3

2.1 IIR滤波器设计的常用方法………………………5

2.2双线性变换法设计IIR数字滤波器………………9

2.3 脉冲响应不变法……………………………………14

2.4 完全滤波器的设计…………………………………18

数字滤波器及MATLAB语言概述

1.1数字滤波器概述

1.1.1数字滤波器的定义

数字滤波器是指完成信号滤波处理功能的,用有限精度算法实现的离散时间线性非时变系统,其输入是一组数字量,其输出是经过变换的另一组数字量。因此,数字滤波器本身既可以是用数字硬件装配成的一台完成给定运算的专用的数字计算机,也可以将所需要的运算编成程序,让通用计算机来执行。数字滤波器,输入输出均为数字信号,通过一定的运算关系,改变输入信号中所含频率成分的相对比例,或则滤除某些频率成分的器件。

对于数字滤波器而言,若系统函数为H(z),其脉冲响应为h(n),输入时间序列为x(n),则它们在时域内的关系式如下:

y(n)=h(n)﹡x(n)                       (1-1)

在Z域内,输入和输出存在如下关系:

Y(z)= H(z)X(z)                       (1-2)

式中,X(z)、Y(z)分别为x(n)和y(n)的Z变换。

在频域内,输入和输出则存在如下关系:

Y(j)=H(j)X(j)                   (1-3)

式中,H(j)是数字滤波器的频率特性;X(j)Y(j)分别为x(n)和y(n)的频谱,而为数字角频率。

1.1.2数字滤波器的分类

数字滤波器可以有很多种分类方法,但总体上可分为两大类。一类称为经典滤波器,即一般的滤波器,其特点是输入信号中的有用成分和希望滤除的成分占用不同的频带,通过合适的选频滤波器可以实现滤波。例如,若输入信号中有干扰,信号和干扰的频带互不重叠,则可滤出信号中的干扰得到纯信号。但是,如果输入信号中信号和干扰的频带相重叠,则干扰就不能被有效的滤出。另一类称为现代滤波器,如维纳滤波器、卡尔曼滤波器等,其输入信号中有用信号和希望滤除的成分频带重叠。对于经典滤波器,从频域上也可以分为低通、高通、带通和带阻滤波器。从时域特性上看,数字滤波器还可以分为有限冲激响应数字滤波器(FIR)和无限冲激响应数字滤波器(IIR)。

对于有限冲激响应数字滤波器(FIR),其输出y(n)只取决于有限个过去和现在的输入,x(n),x(n-1),…,x(n-m),滤波器的输入输出关系可表示为

y(n)=                    (1-4)

对于无限冲激响应数字滤波器(IIR),它的输出不仅取决于过去和现在的输入,而且还取决于过去的输出,其差分方程为

y(n)+=           (1-5)

该差分方程的单位冲激响应是无限延续的。

1.1.3常用滤波器的性能指标

滤波器性能一般用系统频率特性来说明,常用的性能指标主有以下三个参数:

1. 幅度平方函数

                   (1-6)

该性能指标主要用来说明系统的幅频特性。

2. 相位函数

        (1-7)

其中:

                  (1-8)

该指标主要用来说明系统的相位特性。

3. 群延时

                        (1-9)

定义为相位对角频率导数的负值,说明了滤波器对不同的频率成分的平均延时。当要求在通带内的群延迟是常数时,滤波器相位响应特性是线性的。

它以矩阵运算为基础,把计算、可视化、仿真设计融合到一个交互式的工作环境中。尤其是MATLAB工具箱使各个领域的研究人员可以直观方便地进行科学研究和工程应用。其中的信号处理、图像处理等工具箱为数字滤波研究的蓬勃发展提供了有力的工具。

实际设计中所能得到的滤波器的频率特性与理想滤波器的频率特性之间存在着一些显著的差别,现以低通滤波器的频率特性为例进行说明。

1.理想低通滤波器的特性:

设滤波器输入信号为,信号中混入噪音,它们有不同的频率成分。滤波器的单位脉冲响应为。则理想滤波器输出为:

             (1-10)

即噪音信号被滤除,而信号无失真只有延时和线性放大。对上式作傅里叶变换得:

  (1-11)

假定噪音信号被滤除,即:

                 (1-12)

整理得:

              (1-13)

图1-1 理想低通滤波器频率特性       图1-2 理想滤波器的单位脉冲响应

假定信号频率成分为:,噪音频率成分为。则完成滤波的理想低通滤波器特性是:

       (1-14)

即:

                (1-15)

                    (1-16)

系统的单位脉冲响应为:

       (1-17)

理想低通滤波器的频率特性如图1-1所示,单位脉冲响应的波形如图1-2所示。

理想滤波器具有非因果、无限长的单位脉冲响应和不连续的频率特性,要用稳定的线性时不变(LTI)系统来实现这样的特性是不可能的。工程上是用脉冲响应为有限长的、因果的、稳定的线性时不变系统或具有连续频率特性的线性时不变系统来逼近理想特性。在满足一定的误差要求的情况下来实现理想滤波特性。因此实际的滤波器的频率特性如图1-3所示。

其中:

——截止频率

——阻带起始频率

——过渡带宽

在通带内幅度响应以的误差接近于1,即:

             (1-18)

为阻带起始频率,在阻带内幅度响应以小于的误差接近于零,即:

               (1-19)

为了使逼近理想低通滤波器的方法成为可能,还必须提供一带宽为的不为零的过渡带。在这个频带内,幅度响应从通带平滑的下落到阻带。

1.2 MATLAB概述

MATLAB是美国MathWorks公司开发的一种功能极其强大的高技术计算语言和内容极其丰富的软件库,集数值计算、矩阵运算和信号处理与显示于一身。该软件最初是由美国教授Cleve Moler创立的。1980年前后,他在教线性代数课程时,发现用其他高级语言编程时极不方便,便构思开发了MATLAB,即矩阵实验室(Matrix Laboratory)。该软件利用了当时代表数值线性代数领域最高水平的EISPACK和LINPACK两大软件包,并且利用Fortran语言编写了最初的一套交互式软件系统,MATLAB的最初版本便由此产生了。      

最初的MATLAB由于语言单一,只能进行矩阵的运算,绘图也只能用原始的描点法,内部函数只有几十个,因此功能十分简单。1984年该公司推出了第一个MATLAB的商业版,并用C语言作出了全部改写。现在的MATLAB程序是MathWorks公司用C语言开发的,第一版由steve Bangert主持开发编译解释程序,Steve Kleiman完成图形功能的设计,John Little和Cleve Moler主持开发了各类数学分分析的子模块,撰写用户指南和大部分的M文件。接着又添加了丰富的图形图像处理、多媒体功能、符号运算和与其它流行软件的接口功能,使MATLAB的功能越来越强大。

MTALAB系统主要由以下五个部分组成:

(1)MATALB语言体系。 MATLAB是高层次的矩阵/数组语言,具有条件控制、函数调用、数据结构、输入输出、面向对象等程序语言特性。利用它既可以进行小规模端程,完成算法设计和算法实验的基本任务,也可以进行大规模编程,开发复杂的应用程序。

(2)MATLAB工作环境 。这是对MATLAB提供给用户使用的管理功能的总称。包括管理工作空间中的变量据输入输出的方式和方法,以及开发、调试、管理M文件的各种工具。

(3)图形句相系统 。这是MATLAB图形系统的基础,包括完成2D和3D数据图示、图像处理、动画生成、图形显示等功能的高层MATLAB命令,也包括用户对图形图像等对象进行特性控制的低层MATLAB命令,以及开发GUI应用程序的各种工具。

(4)MATLAB数学函数库。这是对MATLAB使用的各种数学算法的总称。包括各种初等函数的算法,也包括矩阵运算、矩阵分析等高层次数学算法。

(5)MATLAB应用程序接口(API)。这是MATLAB为用户提供的一个函数库,使得用户能够在MATLAB环境中使用C程序或FORTRAN程序,包括从MATLAB中调用于程序(动态链接),读写MAT文件的功能。

除此之外,MATLAB系统还具有如下特点:

(1)具有易学易用的语言体系;

(2)具有交互式的工作环境;

(3)具有多层面的图像处理系统;

(4)具有丰富高效的MATLAB工具箱;

(5)具有便利的程序接口(API);

(6)应用领域广泛;

(7)嵌入了面向对象编程语言。



滤波器的设计

2.1 IIR滤波器设计的常用方法

IIR数字滤波器的系统函数为:

       (2-1)

IIR滤波器设计就是根据性能指标要求,设计滤波器的分子和分母多项式。IIR数字滤波器的设计通常借助于模拟滤波器原型,再将模拟滤波器转换为数字滤波器。模拟滤波器的理论和设计方法已发展得相当成熟,且有一些典型的模拟滤波器供我们选择,如巴特沃斯(Butterworth)滤波器、切比雪夫(Chebyshev)滤波器、椭圆(Cauer)滤波器、贝塞尔(Bessel)滤波器等,这些典型的滤波器各有特点。本文采用经典设计法中的模拟滤波器变换法和完全设计函数法分别来设计数字滤波器。

用MATLAB进行典型的数字滤波器的设计,一般步骤如下:

(1)按一定规则将给出的数字滤波器的技术指标转换成模拟低通滤波器的技术指标;

(2)根据转换后的技术指标使用滤波器阶数选择函数,确定最小阶数N和固有频率Wn,根据选用的模拟低通滤波器的类型可分别用函数:buttord、cheb1ord、cheb2ord、ellipord等;

(3)运用最小阶数N产生模拟滤波器原型,模拟低通滤波器的创建函数有:buttap、cheb1ap、cheb2ap、ellipap等;

(4)运用固有频率Wn把模拟低通滤波器原型转换成模拟低通、高通、带通、带阻滤波器,可分别用函数lp2lp、lp2hp、lp2bp、lp2bs;

(5)运用冲激响应不变法或双线性变换法把模拟滤波器转换成数字滤波器,分别用函数impinvar和bilinear来实现。

2.2双线性变换法设计IIR数字滤波器

在MATLAB中,双线性变换法的调用函数是bilinear。其调用格式为:

a. [zd,pd,kd]= bilinear(z,p,k,fs)

b. [zd,pd,kd]= bilinear(z,p,k,fs,fp)

c. [numd,dend]=bilinear(num,den,fs)

d. [numd,dend]=bilinear(num,den,fs,fp)

e. [Aa,Bb,Cc,Dd]=bilinear(A,B,C,D,fs)

f. [Aa,Bb,Cc,Dd]=bilinear(A,B,C,D,fs,fp)

[zd,pd,kd]=bilinear(z,p,k,fs)是把模拟滤波器的零极点模型转换为数字滤波器的零极点模型,fs为采样频率,z,p,k分别为滤波器的零点、极点和增益;

[numd,dend]=bilinear(num,den,fs)是把模拟滤波器的传递函数模型转换为数字滤波器的传递模型;

[Aa,Bb,Cc,Dd]=bilinear(A,B,C,D,fs)是把模拟滤波器的状态方程模型转换为数字滤波器状态方程模型。

例如,用双线性变换法设计一个巴特沃思数字低通滤波器,技术指标如下:通带截止频率=24k rad/s,阻带截止频率=28k rad/s,通带波纹系数=0.3dB, 阻带波纹系数=50dB,采样频率fs=20000Hz。

程序如下:

[N,Wn]=buttord(wp,ws,Rp,Rs,’s’)    %估计滤波器最小阶数

[z,p,k]=buttap(N);

[Bap,Aap]=zp2tf(z,p,k);

[b,a]=lp2lp(Bap,Aap,Wn);

[bz,az]=bilinear(b,a,fs)

freqz(bz,az,Nn,fs)

程序在MATLAB环境下的运行及结果如图2-1所示:

结果如下:

N =11

Wn =1.4892e+004

bz =

  Columns 1 through 6

    0.0110    0.1211    0.6055    1.8166    3.6333    5.0866

  Columns 7 through 12

    5.0866    3.6333    1.8166    0.6055    0.1211    0.0110

az =

  Columns 1 through 6

1.0000    2.7098    4.6379    5.2252    4.3685    2.7207

  Columns 7 through 12

1.2885    0.4561    0.1181    0.0211    0.0023    0.0001

图2-1  巴特沃思数字低通滤波器幅频-相频特性

2.3 脉冲响应不变法

脉冲响应不变法就是要求数字滤波器的脉冲响应序列h(n)与模拟滤波器的脉冲响应的采样值相等,即

h(n)==           (2-2)            

式中,T为采样周期。根据模拟信号的拉普拉斯变换与离散序列的Z变换之间的关系,我们知道

                (2-3)                                 

此式表明,的拉普拉斯变换在s平面上沿虚轴,按照周期=2/T延拓后,按式z=,进行Z变换,就可以将Ha(s)映射为H(z)。事实上,用脉冲响应不变法设计IIR滤波器,只适合于Ha(s)有单阶极点,且分母多项式的阶次高于分子多项式阶次的情况。将Ha(s)用部分分式表示:     

Ha(s)=LT[h]=         (2-4)           

式中,LT[·]代表拉普拉斯变换,为的单阶极点。将Ha(s)进行拉普拉斯反变换,即可得到

=                 (2-5)   

式中,u(t)是单位阶跃函数。则的离散序列(对它进行抽样):h(n)==             (2-6)

对h(n)进行z变换之后,可以得到数字滤波器的系统函数H(z)

H(z)==         (2-7)  

对比Ha(s)与H(z),我们会发现:s域中Ha(s)的极点是,映射到z平面之后,其极点变成了,而系数没有发生变化,仍为。因此,在设计IIR滤波器时,我们只要找出模拟滤波器系统函数Ha(s)的极点和系数,通过脉冲响应不变法,代入H(z)的表达式中,即可求出H(z),实现连续系统的离散化

但是脉冲响应不变法只适合于设计低通和带通滤波器,而不适合于设计高通和带阻滤波器。因为,如果模拟信号的频带不是介于之间,则会在的奇数倍附近产生频率混叠现象,映射到z平面后,则会在附近产生频率混叠现象。从而使所设计的数字滤波器不同程度的偏离模拟滤波器在附近的频率特性,严重时使数字滤波器不满足给定的技术指标。为此,希望设计的滤波器是带限滤波器,如果不是带限的,例如,高通滤波器、带阻滤波器,需要在高通滤波器、带阻滤波器之前加保护滤波器,滤出高于折叠频率/T以上的频带,以免产生频率混叠现象。但这样会增加系统的成本和复杂性。因此,高通与带阻滤波器不适合用这种方法。

在MATLAB中,脉冲响应不变法的调用函数是impinvar,其调用格式为:

a. [bz,az]=impinvar(b,a,fs)

b. [bz,az]=impinvar(b,a)

c. [bz,az]=impinvar(b,a,fs,tol)

该函数的功能是将分子向量为b、分母向量为a的模拟滤波器,转换为分子向量为bz、分母向量为az的数字滤波器。fs为采样频率,单位为Hz,默认值为1Hz。tol指误差容限,表示转换后的离散系统函数是否有重复的极点。

例如,用脉冲响应不变法设计一个契比雪夫1型数字低通滤波器,指标要求:通带截止频率=1000Hz,阻带截止频率=1200Hz,采样频率fs=5000Hz,通带衰减系数=0.3dB,阻带衰减系数=40dB。

程序如下:

wp=1000*2*pi;ws=1200*2*pi;fs=2500;Rp=0.3;Rs=40;

[N,Wn]=cheb1ord(wp,ws,Rp,Rs,'s'); %估计滤波器最小阶数

[z,p,k]=cheb1ap(N,Rp);            %模拟滤波器函数引用

[A,B,C,D]=zp2ss(z,p,k);           %返回状态转移矩阵形式

[AT,BT,CT,DT]=lp2lp(A,B,C,D,Wn); %频率转换

[b,a]=ss2tf(AT,BT,CT,DT);         %返回传递函数形式

[bz,az]=impinvar(b,a,fs);           %调用脉冲相应不变法

[H,W]=freqz(bz,az);               %返回频率响应

plot(W*fs/(2*pi),abs(H));           %画图

grid;

xlabel('frequency/Hz');         

ylabel('magnitude');

N,Wn

N =11  Wn =6.2832e+003

程序在MATLAB环境下的运行及结果如图2-2所示:

图 2-2  契比雪夫型数字低通滤波器幅频特性曲线

2.4 完全滤波器的设计

在MATLAB信号处理工具箱提供了几个直接设计IIR数字滤波器的函数,所用到的函数有butter、cheby1、cheb2ord、ellipd以及besself等。Butter用来直接设计巴特沃思数字滤波器,cheby1用来直接设计切比雪夫型滤波器,cheb2ord用来设计切比雪夫型滤波器,ellipd用来设计椭圆滤波器,besself用来设计贝塞尔滤波器。完全滤波器的设计就是根据设计要求,直接调用函数来设计所需要的数字滤波器。主要函数的特点如下:

1、设计Butterworth滤波器用函数butter(),可以设计低通、高通、带通和带阻的数字和模拟滤波器,其特性是通带内的幅度响应最大限度的平滑,但损失了截止频率处的下降斜度。

2、设计Chebyshevl型滤波器用函数chebyl()。可以设计低通、高通、带通和带阻的数字和模拟Chebyshevl型滤波器,其通带内为等波纹,阻带内为单调。Chebyshevl型滤波器的下降斜度比II型大,但其代价是通带内波纹较大。

3、设计Chebyshev11型滤波器用函数cheby2()。可以设计低通、高通、带通和带阻的数字和模拟ChebyshevII型滤波器,其通带内为单调,阻带内等波纹。ChebyshevII型滤波器的下降斜度比I型小,但其阻带内波纹较大。

4、设计椭圆滤波器用函数ellip(),与chebyl、cheby2类似,可以设计低通、高通、带通和带阻的数字和模拟滤波器。与Butterworth和Chebyshev滤波器相比,ellip函数可以得到下降斜度更大的滤波器,得通带和阻带均为等波纹。一般情况下,椭圆滤波器能以最低的阶实现指定的性能指标。

以上几种函数在低通滤波器设计中的比较:

设:Wp=30Hz,Ws=35Hz,Fs=100,Rp=0.sdB,Rs=4odB分别用巴特沃斯(Butterworth)滤波器、切比雪夫(chebyshev)滤波器、椭圆(Cauer)滤波器,程序设计如下:

巴特沃斯低通滤波器:

[nl,Wnl]=buttord(wp/(Fs/2),ws/(Fs/2),rp,rs,’z’);

[numl,denl]=butter(nl,Wnl);

切比雪夫I型低通滤波器:

[n2,Wn2]=cheb1ord(wp/(Fs/2),ws/(Fs/2),rp,rs,’z’):

[num2,den2]=ehebyl(n2,rp,Wn2);

切比雪夫II型低通滤波器:

[n3,Wn3]=ehebZord(wp/(Fs/2),ws/(Fs/2),rp,rs,’z’);

[num3,den3]=cheby2(n3,rp,Wn3):

椭圆低通滤波器:

[n4,Wn4]=ellipord(wp/(Fs/2),ws/(Fs/2),rp,rs,’z’):

[num4,den4]=ellip(n3,rp,rs,Wn3);



完整的Word格式文档51黑下载地址:
2017MATLAB课程设计封面格式.doc (174.5 KB, 下载次数: 12)


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表