附带资料 基于matlab的IIR数字滤波器设计

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

一. IIR 数字滤波器介绍

1.IIR 数字滤波器的基本原理

所谓数字滤波器,是指输入,输出均为数字信号,通过一定运算关系改变输入信号所含频率成分的

相对比例或者滤除某些频率成分的硬件。实质上就是一个由有限精度算法实现的线性时不变离散系统。它的基本工作原理是利用离散系统的特性对系统输入信号进行加工和变换,改变输入序列的频谱或信号波形,让有用的频率分量通过,抑制无用的信号分量输出,因此数字滤波与模拟滤波的概念相同,根据其频率特性同样可以分为低通,高通,带通,带阻,只是信号的形式和实现滤波方式有所不同。如果要处理的信号是模拟信号,就可以通过A/D或者D/A转换,在信号形式上进行匹配转换,同样可以使用数字滤波器对模拟信号进行滤波。

数字滤波器滤波的数学表达式:y (n )=x(n)*h(n); 如果滤波器的输入输出信号都是离散信号,那么

该滤波器的脉冲响应也一定是离散信号,这样的滤波器就成为了数字滤波器。

上面的系统为时域离散系统时,其频域特性为:Y (e jw ) =X (e jw ) H (e jw ).

其中Y (e jw ), X (e jw ) 分别是数字滤波器的输出序列和输入序列的频域响应,H (e jw )是数字滤波器的

频域响应。可以看见按照输入信号的频谱特点和处理信号的目的适当选择滤波器的频域响应H (e jw ) ,使得滤波后的输出信号满足设计性能要求,就是滤波器的滤波原理。

2.IIR 数字滤波器传输特性

∑b z r m -r

IIR 数字滤波器的系统函数可以表示为:H(Z)=

1+∑b k z -k

k =1r =0N ,式中H(Z)称为N 阶IIR 滤波器函数。

3.. 数字滤波器的技术要求.

我们通常设计的数字滤波器一般属于选频滤波器,H (e jw ) =|H (e jw ) |e jQ (w ) 。

我们的目的是要设计一个因果可实现的滤波器,另外买也要考虑到成本和复杂性问题,因此实用中

通带和阻带都允许一定的误差容限,即通带不一定是完全水平的,阻带也不可能完全衰减到零。而且,通带和阻带之间还要设置一定带宽的过渡带。如下图表示低通滤波器的技术要求:

图中,w p w s 分别表示通带截止频率和阻带截止频率,通带频率范

围为0≤w ≤w p ,通带中要求(1-δ1)≤|H(e jw ) |≤1,阻带截止频率范围w s ≤w ≤Π,再阻带中要求|H (e jw ) |≤δ2,从w p 到w s 称为过渡带,在这个频带内,幅度响应从通带平滑的下落到阻带。

二. IIR 数字滤波器的设计方法

1.常用的IIR 滤波器设计方法

(1). 以模拟滤波器函数为基础的变换法;即先设计一满足指定条件的模拟滤波器H(s),再将该模拟滤波器转化为数字滤波器H(z)。

(2). 直接设计法:在z 平面内,根据零、极点对系统特性的影响,调整零极点位置得H(z)。

(3). 最优化设计法(计算机辅助设计) ,在某种最小化误差准则下,建立差分方程系数 a k 、b i 对理想特性的逼近方程,使用迭代方法解方程组得到最佳逼近系统。由于此方法计算量大,需要借助于计算机进行设计。

下面分别介绍函数设计法和信号处理图形界面来设计IIR 数字滤波器,得出最优化的设计方法。

2. 基于matlab 的函数设计IIR 数字滤波器

IIR 数字滤波器设计的一般方法是先设计低通模拟滤波器,进行频率变换,将其转换为相应的(高通,带通等)模拟滤波器,在转换为高通,带通或带阻数字滤波器,由模拟滤波器设计数字滤波器的方法。这是因为模拟滤波器设计方法已经很成熟,它不仅有完整的设计公式,还有完善的图表供查阅,另外,还有一些典型的滤波器类型可供我们使用。对设计的全过程的各个步骤,MA TLAB 都提供了了相应的工具箱函数,使IIR 数字滤波器设计变得非常简单。

2.1. 基于matlab 函数的IIR 滤波器设计

2.1.1. 设计方法选择:

程序设计法是基于MATLAB 中相应的工具箱函数来实现的,IIR 数字滤波器的设计步骤可由图1.2所

示的流程图来表示。

这个图也清晰的表示了5类20个信号处理工具箱函数的作用,

在MA TLAB 中,模拟滤波器的系统函数 B (1) S M +B (2) S M -1+...... +B (M ) S +B (M +1) B (S ) H(S)= =N N -1A (S ) A (1) S +A (2) S +..... +A ((N ) S +A (N +1)

数字滤波器的系统函数 B (1) +B (2) Z -1+..... +B (M ) Z -(M -1) +B (M +1) Z -M B (Z ) H(Z)= =A (Z ) A (1) +A (2) Z -1+..... +A (N ) Z -(N -1) +A (N +1) Z -N

在实际工程中,需要的设计结果是系数向量B 和A ,用B 和A 来综合滤波器的硬件实现结构或软件

运算结构,为了直观的看出设计结果,本文的实例均以滤波器幅频响应曲线作为设计结果输出。如果需要滤波器系数,在运行程序后,只要在MATLAB 命令窗口键入系数向量名,则相应的系数就显示出来了。

2.1.2. 程序设计实例分析

(a )设计高通和带通Butterworth 数字滤波器

我们给出四阶归一化 Butterworth 模拟滤波器的系统函数

H (S ) =1 S 4+2. 6131S 3+3. 4142S 2+2. 6131S +1

jw 用双线性变换法从Ha (s )设计四阶带通butterworth 数字滤波器H BP (Z ) , 并图示|H BP (e ) |,

设计采样周期T=1s,指标如下

w 1c =0. 35π, w uc =0. 65π

现在我们分步进行:■建模

由于本例主要涉及三个问题:

(1) 由数字滤波器指标求相应的模拟滤波器指标;

(2) 模拟滤波器频率变换(因为已给定阶数和模拟滤波器的归一化低通原型);

(3) 由相应的模拟滤波器到数字滤波器(双线性变换法)。

由于调用bilinear 函数将模拟滤波器转换成数字滤波器非常容易,并且有效抑制频率失真的问题,

本例给定了数字滤波器指标,所以首先要设计处与该指标相应的四阶Butterworth 模拟滤波器,然后调用bilinear 函数将其转换为数字滤波器即可,应当特别注意的是,对于双线性变换法,由数字边界频率求相应的模拟边界频率时,一定要考虑预畸变矫正。只有这样,最终设计结果才能满足所给指标,

(ⅰ)首先按照步骤一的要求

设计高通数字滤波器时,相应的模拟高通滤波器3dB 截止频率为 ΩC =w 2tg (c ) T 2

设计带通数字滤波器时,相应的模拟滤波器的3dB 截止频率为 ΩLC =w w 22tg (lc ), Ωuc =tg (uc ) T 2T 2

(ⅱ)步骤二的的原理

可调用MATLAB 频率变换函数lp2lp ,lp2hp ,lp2bp ,分别实现从模拟低通到模拟低通,高通,带通,带阻的频率变换。

▲【Bt ,At 】=lp2hp(B ,A,wc ),将系数向量为B 和A 的模拟滤波器归一化低通原型(3Db )截止频频为1rad/s),变换成3dB 截止频率为wc 的高通模拟滤波器,返回高通模拟滤波器系数向量Bt 和At 。

▲【Bt ,At 】=lp2bp(B,A ,wo ,Bw )将系数向量为B 和A 的模拟滤波器归一化低通原型变换成中心频率为wo ,带宽为Bw 的带通模拟滤波器,返回带通模拟滤波器的系数向量Bt 和At 。

其中,wo=Ωlc Ωuc ,B w =Ωuc -Ωlc

由以上原理我们来编写如下程序:

%用双线性变换法设计数字高通和带通滤波器

clear;close all

T=1;wch=pi/2; %T为采样间隔,wch 位数字高通3dB 截止频率

wlc=0.35*pi;wuc=0.65*pi; %wlc,wuc ;数字高通3dB 截止频率

B=1;A=[1,2.6131,3.4142,2.6131,1];

[h,w]=freqs(B,A,512); %求原归一化模拟滤波器的频率响应

subplot(3,2,1);plot(w,20*log10(abs(h))); %画模拟滤波器幅频特性

grid;axis([0,10,-90,0])

xlabel('w/ ');ylabel('模拟低通幅度(dB )')

%(1)设计高通

omegach=2*tan(wch/2)/T; %预畸变求模拟高通3dB 截止频率

[Bhs,Ahs]=lp2hp(B,A,omegach); %模拟域低通转换为高通系数

[Bhz,Ahz]=bilinear(Bhs,Ahs,1/T); %模拟转换位数字高通系数变量

[h,w]=freqz(Bhz,Ahs,512); %求画出数字滤波器幅频特性

Subplot(3,2,3);plot(w/pi,20*log10(abs(h)));

grid;axis([0,1,-150,0])

xlabel('w/ ');ylabel('数字滤波器幅度(dB )')

%(2)设计带通

omegalc=2*tan(wlc/2)/T; %预畸变求滤波器通带低端截止频率

omegauc=2*tan(wuc/2)/T; %预畸变求滤波器通带高端截止频率

wo=sqrt(omegalc*omegauc);Bw=omegauc-omegalc;

[Bbs,Abs]=lp2bp(B,A,wo,Bw); %模拟域低通转换为带通系数

[Bbz,Abz]=bilinear(Bbs,Abs,1/T); %模拟转换为数字带通系数变量

[h,w]=freqz(Bbz,Abz,512); %求并画出数字滤波器幅频特性

subplot(3,2,4);plot(w/pi,20*log10(abs(h)));

grid;axis([0,1,-150,0])

xlabel('w/pi ');ylabel('数字滤波器幅度(dB )')

程序运行结果如图1.3,1.4,1.5所示分别表示模拟低通幅度,数字高通幅度和数字带通幅度特性。

模拟低通幅度 数字高通幅度

图1.3 图1.4

数字带通幅度

图1.5

(b )设计滤波器进行图像去噪处理

以上是我们运用MA TLAB 工具箱函数来编程设计IIR 数字滤波器并对其频响特性进行分析的实例,

下面我们就来引入数字滤波器处理图像的实例具体分析。

我们用卷积定理来说明数字滤波器进行图像去噪处理的原理,设图像信号e (x , y ) 通过线性不变系统

h (x , y ) 的结果是g (x , y ) ,即r (x,y )=e(x,y)*h(x,y); 由时域卷积,频域乘积定理得R (U ,V )=E(U ,V )H (U ,V )。 其中,R (u , v ) ,E (u , v ) ,H (u , v ) 分别是r (x , y ) ,e (x , y ) 和h (x , y ) 的傅里叶变换。

实际上,图像的能量大部分集中在幅度频的低频和中频段,而图像的边缘和噪声对应于高频部分。因此,能降低高频成分幅度的滤波器则能过滤噪声,减弱噪声的影响。

而Butterworth 低通滤波器在物理上是可以实现的滤波器,它的转移函数模的平方为

|Ha (j Ω) |2=1, 为N 阶,截止频率为Ωc 。 Ω2N 1+() ΩC

下面我们就来设计Butterwirth 滤波器来对加高斯白噪声的图像进行去噪处理

I = imread('K:\祖国好.jpg');

figure, imshow(I),

D = imnoise(I,'gaussian');

figure, imshow(D)

D=double(D);

F=fft2(D); %傅里叶变换

F=fftshift(F); %转换数据矩阵

[N1,N2]=size(F);

n=2;

d0=40;

n1=fix(N1/2);

n2=fix(N2/2);

for i=1:N1

for j=1:N2

d =sqrt((i-n1)^2+(j-n2)^2);

h=1/(1+(d/d0)^(2*n)); %计算低通转换函数

FD(i,j)=h*F(i,j); %低通滤波

end

end

FD=ifftshift(FD);

FD=ifft2(FD);

FD=uint8(real(FD));

figure,imshow(FD)

运行结果如下,我们可以从图1.6与图1.7看出Butterworth 滤波器能有效地过滤图像中高频加性噪声,增强图像。

图1.6 图1.7

2.1.3基于函数设计法的总结

从以上一系列函数设计中,我们由matlab 函数来设计滤波器是次优化的,它的设计步骤为:

1.先选择设计方法

2. 猜测滤波器参数,后进行设计

3. 观察滤波器的响应,判断其是否符合要求

4. 反复这一尝试与失败过程直到符合要求。

这种设计方法,很显然在设计要求上进行权衡分析是不是很有效,它更多时候是凭借操作者来设计的。因此我们下面将探讨更优化的设计方法。

3. 基于信号处理图形用户界面设计IIR 数字滤波器

基于matlab 函数的滤波器设计完成后,需要对已设计的滤波器的频率响应要进行校核。要得到幅频、相频响应特性,运算量也是很大的。而利用MA TLAB 强大的信号处理界面工具进行计算机辅助设计,可以快速有效地设计数字滤波器,大大地简化了计算量。

3.1.FDATool 设计IIR 数字滤波器

3.1.1.FDATool 工具包的介绍及使用

FDATool(Filter Design&Analysis Tool) 是MATLAB 信号处理工具箱里专用的滤波器设计分析工具,MATLAB 7.0以上的版本还专门增加了滤波器设计工具箱(Filter Design Toolbox)。FDATool 可以设计几乎所有的常规滤波器,包括FIR 和IIR 的各种设计方法。它操作简单,方便灵活。

FDATool 界面总共分两大部分,一部分是Design Filter 。在界面的下半部,用来设置滤波器的设计参数;另一部分则是特性区,在界面的上半部分,用来显示滤波器的各种特性。Design Filter部分主要分为:Filter Type(滤波器类型) 选项,包括Lowpass(低通) 、Highpass(高通) 、Bandpass(带通) 、Bandstop(带阻) 和特殊的FIR 滤波器。

Design Method(设计方法) 选项,包括IIR 滤波器的Butterwotth(巴特沃思) 法、Chebyshev Type I(切比雪夫I 型) 法、Chebyshev Type II(切比雪夫II 型) 法、Elliptic(椭圆滤波器) 法和FIR 滤波器的Equiripple 法、Least-Squares(最小乘方) 法、Window(窗函数) 法。

Filter Order(滤波器阶数) 选项,定义滤波器的阶数,包括Specify Order(指定阶数) 和Minimum Order(最小阶数) 。在Specify Order 中填入所要设计的滤波器的阶数(N阶滤波器,Specify Order=N-1)。如果选择Minimum Order,则MATLAB 根据所选择的滤波器类型自动使用最小阶数。

Frequency Specifications选项,可以详细定义频带的各参数,包括采样频率和频带的截止频率。它的具体选项由Filter Type选项和Design Method选项决定。例如Bandpass(带通) 滤波器需要定义Fstop1(下阻带截止频率) 、Fpass1(通带下限截止频率) 、Fpass2(通带上限截止频率) 、Fstop2(上阻带截止频率) ,而Lowpass(低通) 滤波器只需要定义Fstop1、Fpass1。采用窗函数设计滤波器时,由于过渡带是由窗函数的类型和阶数所决定,所以只需定义通带截止频率,而不必定义阻带参数。

Magnitude Specifications 选项,可以定义幅值衰减的情况。例如设计带通滤波器时,可以定义Wstop1(频率Fstop1处的幅值衰减) 、Wpass(通带范围内的幅值衰减) 、Wstop2(频率Fstop2处的幅值衰减) 。当采用窗函数设计时,通带截止频率处的幅值衰减固定为6db ,所以不必定义。

3.1.2.FDATool 设计IIR 数字滤波器

我们将以一个IIR 滤波器的设计实例来具体说明使用matlab 工具箱的方便。

要求设计elliptic (椭圆)带通数字低通滤波器满足下列指标:

它的通带范围从100HZ 到150HZ, 采样频率Fs=1000HZ, 通带最大衰减Rp=1dB,阻带最大衰减

Rs=60dB , 阶数为10。

在该实例中,首先在Response Type 中选择Bandpass 高通滤波器,然后在下面的Desigh Method 中选择IIR 类型,并且指定 Filter Order项中的阶数Specify Order=10 ,由于是设计elliptic 椭圆滤波器,其下面Option 就不必选择。 然后在Frequency Specifications中选择Unit 为Hz ,给出采样频率Fs=1000,通带Fpass1=100和Fpass2=150;最后在Magnitude Specifications中选择Unit 为dB ,Apass=1,Astop=60. 设置完成后点击Design Filter即可得到所设计的IIR 滤波器。通过菜单选项Analysis 可以在特性区看到所设计的幅频响应、相频响应、冲击响应和零极点配置等特性,如图1.8,1.9,2.0所示。设计完成后将结果保存为filterl.fda 文件。

下面即是运用FDATOOl 对elliptic 椭圆滤波器的设计界面:其中幅频特性如图1.8所示

图1.8

相频特性

图1.9

冲击响应特性

图2.0

从以上这些界面中我们可以清晰明了的看到设计的椭圆滤波器各种特性:由以上图中我们能够很容易的分析,图1.8中椭圆滤波器具有等纹波的通频带、等纹波的抑止频带,而且过渡带宽非常狭窄,总之,使用FDATool 工具包设计和分析滤波器,是非常方便易行的,而且交互性良好,不需要极其复杂的程序编制就可以实现。在工程中也是广泛应用 。

3.3.基于fdesign 更加优化的设计方法

3.1.1.fdesign 设计方法概述

Fdesign 是一种面向对象的滤波器设计方法。这种设计方法的设计思路是:

1. 先设定设计的要求

2. 因为MATLAB 提供可符合这些要求的设计方法,例如fvtool ,sptool 等,使用这些工具箱进行设计

3. 然后在各种方法中找到最优化的设计方法。

3.1.2. 使用滤波器对象的优点

1. 设计的filter.dfilt 为对象表示,对象中包含所有滤波器的特性及可供操作的函数

2.fvtool,sptool 提供了滤波器分析及视觉化集成环境。

3.方便对参数和结构进行滤波功能上的权衡分析,包括:延时,滤波器设计复杂度,阻带衰减权衡分析,

支持多种滤波器结构包括:direct-form FIR,transposed ,Overlap-add FIR以及之间的转换用convert 函数进行操作。

4.仿真与自动代码生成的途径:它可以生成simulink 模型

5.自动估算计算复杂度,使用cost 函数:df.cost 。

3.1.3 .fvtool设计IIR 数字滤波器

FVTool 可用于查看设计或导入的滤波器的特性,包括其幅度响应、相位响应、群延迟、极点-零点

图、冲激响应和阶跃响应等。

下面我就来用一个程序来分析如何用fvtool 设计滤波器:

%用工具箱的画图工具进行画图

clear;

Wp=60/600;Ws=90/600;Rp=1;Rs=15; %滤波器参数设定

[N, Wn] = BUTTORD(Wp, Ws, Rp, Rs);

[B,A] = BUTTER(N,Wn) ; %巴特沃斯模拟滤波器

[num, den] = iirlp2bp(B,A, 0.15, [0.1, 0.2]); %IIR低通向带通转换

fvtool(B,A, num, den); %进入fvtool 界面进行滤波器设计与分析 FT=dfilt.df1(B,A); %将要设计的滤波器参数传递给变量FT

realizemdl(FT); %生成simulink 仿真模型界面

运行此程序则会出现fvtool 界面,如图2.1所示

Butterwoth 滤波器幅频特性界面

图2.1

通过这个界面我们不仅可以分析道所要设计的滤波器的幅频特性,还可以分析它的相频特性,以及零极点图,单位脉冲响应,单位阶跃响应,群延迟,相位延迟以及加入高斯噪声后的频谱等等。

在实际的语言编码通信中,解调后信号和原传递信号的差异是因幅度和时间的量化而产生的,而滤波器则会引起这种差异的产生,而这种差异就是量化噪声,在fvtool 界面中我们也能分析到滤波器 的量化噪声功率谱。如下图2.2所示为Round-off Noise Power Spectrum-该滤波器的量化噪声功率谱

图2.2

我们还可以在fvtool 的信息栏看到看到滤波器的各项数据如图2.3所示,我们发现它将两项不同参

数的滤波器进行比较filter1为6阶的,而filter2为12阶的,因为是IIR 滤波器的设计,所以两者都不

是线性相位的,这是对同一个传递函数以不同参数进行自动比较,从而选出最优化的设计。

图2.3

通过这个设计巴特沃斯滤波器的程序,我们用realizemdl (FT )命令可以得出该我们所需要设计的

滤波器的仿真模型,进而出现simulink 界面如图2.4所示; 这样一个模块可以直接用于信号传输中滤波器

模块的建立。

图2.4

用鼠标双击simulink 界面中的该模型,我们可以得到滤波器的设计模型如图2.5所示:

图2.5

我可以看到该模型用到了12个延迟器,13个乘法器,12个加法器,这是一个典型的优化设计滤波器

模型。

3.1.4.Sptool设计IIR 数字滤波器(面向对象设计)

SPTool 是MATLAB 信号处理工具箱中自带的交互式图形用户界面工具,它包含了信号处理工具箱中的

大部分函数,可以方便快捷地完成对信号、滤波器及频谱的分析、设计和浏览,因此只需要操作界面就可

以载入,观察,分析,和打印数字信号,分析和设计数字滤波器。

SPTool 提供对信号、滤波器和频谱分析函数的访问入口。借助其可以:

①设计和编辑各种长度和类型并具有标准配置的 FIR 和 IIR 滤波器

②查看设计或导入的滤波器的特性,包括其幅度响应、相位响应、群延迟、极点-零点图、冲激 响应和阶跃响应等

③将滤波器应用于选定的信号使用不同频谱估计方法进行频域数据的图形化分析,其中包括 Burg、

FFT 、多正弦窗 (MTM)、MUSIC 、特征向量、Welch 和 Yule-Walker AR 。

■Sptool 设计IIR 滤波器实例分析:

首先在MATLAB 命令窗口输入命令:Fs =500;t = (0:500)/Fs;

f= sin(2*pi*t*40)+sin(3*pi*t*50)+sin(2*pi*t*100);

此时,变量Fs 、t 、s 将显示在workspace 列表中。在命令窗口键入Sptool ,将弹出Sptool 主界

面,如图2.9所示;我们按照以下步骤操作:

(1)点击菜单File/Import将信号f 导入并取名为f 。

(2)单击Filters 列表下的New ,按照参数要求设计出滤波器filt1

(3)将滤波器filt1应用到f 信号序列。分别在Signals 、Filters 、Spectra 列表中选择f 、filt1、 mtlbse auto 单击Filters 列表下的Apply 按钮,在弹出的Apply Filter 对话框中将输出信号命名为 信

号 3

(4)进行频谱分析。在Signals 中选滤波后的信号信号3,单击Spectra 下的Create 按钮,在弹出的

Spectra Viewer 界面中选择Method 为FFT ,Nfft=512,单击Apply 按钮生成滤波后信号的频谱。

Sptool 主界面

图2.6

IIR Chebyshev1型低通滤波器filt1设计界面

图2.7

模拟信号源f

图 2.8

经滤波后信号

3

图2.9

滤波后经FFT 处理后频谱

图3.0

分别选中原信号f 、滤波后信号3,信号3的频谱 ,单击各自列表下方的View 按钮,即可观察他们的波形,如图2.8,2.9,3.0所示。

低通滤波器filt1使输入信号f 中频率为40hz 的正弦波信号通过,而将频率为75hz 和100hz 的正弦波信号大大衰减。在图3.0中我们能很清楚的看到滤出的信号3集中在40HZ 的频率区,说明滤波的效果比较理想。这样滤波后的信号3波形非常清楚的展现在用户面前。

4.滤波器设计方法总结

在对滤波器实际设计时,运用函数设计法,整个过程的运算量是很大的。设计阶数较高的IIR 滤波器时,计算量更大,设计过程中要改变参数或滤波器类型时都要重新计算。它需要反复的实验,而且需要设计者凭借经验设定参数,平时所要设计的数字滤波器,阶数和类型并不一定是完全给定的,很多时候要根据设计要求和滤波效果不断地调整,以达到设计的最优化。在这种情况下,滤波器设计就要进行大量复杂的运算,单纯的靠公式计算和编制简单的程序很难在短时间内完成。因此,基于对象的信号处理工具FDATool ,Fvtool 以及Sptool 界面设计滤波器,可以有效的的解决这一问题,它不仅减少了设计复杂度,而且还为用户提供了一个便于分析和观察的界面。

Sptool 界面更是提供了简单,直观的,更加优化的数字处理方式。我们可以根据原信号的特点,在Sptool 界面中设计我们所需要的滤波器的特性,来对原信号进行处理,它能有效满足信号处理要求,因此我们常常会选择这种更加优化的方式来设计滤波器。

三.IIR 数字滤波器的仿真模型及实现

1. 仿真工具箱simulink 概述

Simulink 是MATLAB 各种工具箱中比较特别的,一般工具箱只是把面向某一类问题的程序集中起来,其中的程序都是用MATLAB 语言编写的,这些工具箱是MATLAB 在量方面的扩充,而Simulink 工具箱却是从底层开发的一个完整的方针环境和图形界面。在这个环境中,我们可以利用鼠标或着箭盘,完成面向框图系统仿真的全部过程,并且可以更加直观,快速和准确的达到方针的目标。原来的MATLAB 是在文本窗口中编程,图形窗口只是用来显示,而Simulink 则把图形窗口拓展为可以用

框图方式来编程,使MATLAB 的功能有了一个质的飞跃。

2 Simulink仿真框图设计

使用Simulink 来仿真,要经过以下步骤:

(1) 环节库及输入

(2) 环节的连接

(3) 环节参数的设定

(4) 仿真框图的运行

3. 仿真中信号传输实例:

现在我们就以上设计步骤来具体设计关于IIR 数字滤波器的信号传输过程:

我们首先确定仿真的模型,信号源:0.05*(5+4*sin(20t ))*cos(20t ),将这个模拟信号源

进行以0.01s 为采样周期进行等间隔采样,然后与信号W1(t )和W2(t )相加(这里W1(t )为离散正弦信号,幅度为2,频率为35.5HZ ,而W2(t)是一个高斯白噪声信号作为干扰源,它的均值为0,变动范围在0.1内),这样相加之后,成为一个混合信号,使其通过一个IIR 数字带通滤波器,用这个滤波器来滤除我们所需要的频段信号,是输出信号的频率在15到25HZ 内。

Ⅰ. 环节库及框图的建立

那么,最后就来建立信号传输仿真模块,按照3.2.1的数学模型我们要用到Simulink 工具箱中的常用到的常量信号源,DSP 离散正弦信号源,和高斯白噪声信号,模拟正弦信号,加法器,乘法器,积分器,零阶保持器以及示波器FDAtool 等模块。

我们首先打开simulink 工具箱,并且建立一个Model ,在这个空白Model 中进行环节库及框图的建立,在Simulink 菜单下找到Source ,双击Source 图标,将正弦信号源和常量信号源拉到Model 中, 然后在Signal Prosessing Blockset中分别找到DSP 离散正弦信号源和噪声信号源拉到Model 中,在Commonly Used Blocks中分别找到乘法器和加法器以及示波器,在countinuous 中找到积分器,然后把需要用来设计IIR 数字滤波器的模块FDATOOL 都拉到Model 中,把环节都布好后,把各环节的端口按框图连接起来。

Ⅱ. 仿真环节参数设定

(1)基本环节参数设定

首先按照要求在几个信号模块源中设定其特性,尤其是需要说明的是,用于模拟信号采样的的零阶保持器中采样时间间隔需要设置为0.01s ,因为模拟信号源0.05*(5+4*sin(20t ))*cos(20t )最高频率达到40rad/s,由抽样定理可知乃奎斯特抽样频率必须要大于或等于其最高频率的两倍,才不会引起采样中出现信号混叠状况,保证了信号稳定传输。我们注意到,模型中需要两个示波器,

Scope1用来显示抽样信号加了高斯噪声信号和DSP 正弦离散信号后的混合信号的波形,而Scope2我们将其设计为一个双踪示波器,用来显示滤波后的信号波形,和我们需要的原始抽样信号波形。然后将其进行比较。

■IIR 数字滤波器设计模块

在建立这个模型中,我们需要设计的IIR 数字带通滤波器是一个10阶的椭圆滤波器,通频带为15-20HZ ,我们不妨用FDATool 这个工具包来实现它,图3.4为FDATool 设计椭圆滤波器的界面,在FDATool 界面中我们首先在Response Type中选择Band pass带通滤波器类型,因为elliptic 椭圆滤波器具有等纹波的通频带、等纹波的抑止频带、狭窄带的过渡频特性,所以在Design Method中选择IIR elliptic椭圆滤波器的设计类型,在其右边的Filter Order 中选择滤波器的阶数为10阶,因为选择elliptic 椭圆滤波器类型所以下面的Option 就不必选择,然后确定Frequency Specifications,选择Fs 采样频率为1000HZ, 为了得到我们需要所需要的信号频段,因此选择一个狭窄的通带范围从15HZ 到25HZ ,最后

为了尽可能滤除理想的信号,在其右边的Magnitude Specifications 中确定Apass 通带最小衰减为0.5Db, 和Astop 阻带最大衰减为80dB ,这样他的整个操作界面就如图3.1所示

图3.1 IIR数字滤波器的参数设定

本文再次用到FDATool 界面设计IIR 数字滤波器,说明它在设计过程中是很方便和快捷的。

(2)simulink 仿真模块运行

下面我们就来检验一下其中IIR 数字带通滤波器的滤波效果

图3.3和图3.4分别显示混合信号滤波前的波形和滤波后的波形以及开始被抽样得到的原始波形图

经过加噪后的混合信号滤波前的波形

图3.3

我们可以看到,在抽样信号经过两个不同频率的离散信号(DSP 离散正弦信号和高斯噪声信号)干扰后的混合信号是一个夹杂多频率的信号,在现实中,我们总会遇到,我们所需要的有用信号在传输过程中不可避免的受到噪声干扰的状况,我们的目的就是得到我们所需要的原始信号,尽可能滤除干扰信号,图3.4就是滤波后信号与原始抽样信号的的波形图

混合信号滤波后的波形以及抽样后波形

图3.4

很明显最后滤波后仍然夹杂不同频率信号,这是因为,设计的IIR 带通数字滤波器只能滤出一个频率段的信号,因此从15HZ 到20HZ 内的高斯噪声信号全都夹杂在里面,而原始抽样信号是一个频率单一的离散信号,不可避免会出现失真。但是不可否认的是,设计的IIR 数字滤波器滤波效果依然明显,它有效地滤除了频带外的干扰信号。

通过以上实例,充分说明Simulink 中各种非常有用的工具箱不仅对于设计IIR 数字滤波器非常有用,而且对于整个信号仿真处理具有相当可视化的效果,它能让使用者从繁琐的底层编程中解放出来,把有限的时间更多的花在解决问题中,必然会提高工作效率。

综上所述,利用Matlab 的信号处理工具及其simulink 仿真工具包箱能够方便快捷地设计和实现各种滤波器,是信号波形更加直观,本文用FDA Tool 工具箱,信号处理函数以及专门用于滤波器设计的工具界面fvtool 与sptool 来编写程序来设计IIR 数字滤波器,充分利用了MA TLAB 的交互性好的特点,而且最后用到了simulink 仿真工具箱来实现信号传输和滤波器的设计,将滤波器的设计置于一个新的平台,这对于研究信号的传输和处理有着极其重要的作用。

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

一. IIR 数字滤波器介绍

1.IIR 数字滤波器的基本原理

所谓数字滤波器,是指输入,输出均为数字信号,通过一定运算关系改变输入信号所含频率成分的

相对比例或者滤除某些频率成分的硬件。实质上就是一个由有限精度算法实现的线性时不变离散系统。它的基本工作原理是利用离散系统的特性对系统输入信号进行加工和变换,改变输入序列的频谱或信号波形,让有用的频率分量通过,抑制无用的信号分量输出,因此数字滤波与模拟滤波的概念相同,根据其频率特性同样可以分为低通,高通,带通,带阻,只是信号的形式和实现滤波方式有所不同。如果要处理的信号是模拟信号,就可以通过A/D或者D/A转换,在信号形式上进行匹配转换,同样可以使用数字滤波器对模拟信号进行滤波。

数字滤波器滤波的数学表达式:y (n )=x(n)*h(n); 如果滤波器的输入输出信号都是离散信号,那么

该滤波器的脉冲响应也一定是离散信号,这样的滤波器就成为了数字滤波器。

上面的系统为时域离散系统时,其频域特性为:Y (e jw ) =X (e jw ) H (e jw ).

其中Y (e jw ), X (e jw ) 分别是数字滤波器的输出序列和输入序列的频域响应,H (e jw )是数字滤波器的

频域响应。可以看见按照输入信号的频谱特点和处理信号的目的适当选择滤波器的频域响应H (e jw ) ,使得滤波后的输出信号满足设计性能要求,就是滤波器的滤波原理。

2.IIR 数字滤波器传输特性

∑b z r m -r

IIR 数字滤波器的系统函数可以表示为:H(Z)=

1+∑b k z -k

k =1r =0N ,式中H(Z)称为N 阶IIR 滤波器函数。

3.. 数字滤波器的技术要求.

我们通常设计的数字滤波器一般属于选频滤波器,H (e jw ) =|H (e jw ) |e jQ (w ) 。

我们的目的是要设计一个因果可实现的滤波器,另外买也要考虑到成本和复杂性问题,因此实用中

通带和阻带都允许一定的误差容限,即通带不一定是完全水平的,阻带也不可能完全衰减到零。而且,通带和阻带之间还要设置一定带宽的过渡带。如下图表示低通滤波器的技术要求:

图中,w p w s 分别表示通带截止频率和阻带截止频率,通带频率范

围为0≤w ≤w p ,通带中要求(1-δ1)≤|H(e jw ) |≤1,阻带截止频率范围w s ≤w ≤Π,再阻带中要求|H (e jw ) |≤δ2,从w p 到w s 称为过渡带,在这个频带内,幅度响应从通带平滑的下落到阻带。

二. IIR 数字滤波器的设计方法

1.常用的IIR 滤波器设计方法

(1). 以模拟滤波器函数为基础的变换法;即先设计一满足指定条件的模拟滤波器H(s),再将该模拟滤波器转化为数字滤波器H(z)。

(2). 直接设计法:在z 平面内,根据零、极点对系统特性的影响,调整零极点位置得H(z)。

(3). 最优化设计法(计算机辅助设计) ,在某种最小化误差准则下,建立差分方程系数 a k 、b i 对理想特性的逼近方程,使用迭代方法解方程组得到最佳逼近系统。由于此方法计算量大,需要借助于计算机进行设计。

下面分别介绍函数设计法和信号处理图形界面来设计IIR 数字滤波器,得出最优化的设计方法。

2. 基于matlab 的函数设计IIR 数字滤波器

IIR 数字滤波器设计的一般方法是先设计低通模拟滤波器,进行频率变换,将其转换为相应的(高通,带通等)模拟滤波器,在转换为高通,带通或带阻数字滤波器,由模拟滤波器设计数字滤波器的方法。这是因为模拟滤波器设计方法已经很成熟,它不仅有完整的设计公式,还有完善的图表供查阅,另外,还有一些典型的滤波器类型可供我们使用。对设计的全过程的各个步骤,MA TLAB 都提供了了相应的工具箱函数,使IIR 数字滤波器设计变得非常简单。

2.1. 基于matlab 函数的IIR 滤波器设计

2.1.1. 设计方法选择:

程序设计法是基于MATLAB 中相应的工具箱函数来实现的,IIR 数字滤波器的设计步骤可由图1.2所

示的流程图来表示。

这个图也清晰的表示了5类20个信号处理工具箱函数的作用,

在MA TLAB 中,模拟滤波器的系统函数 B (1) S M +B (2) S M -1+...... +B (M ) S +B (M +1) B (S ) H(S)= =N N -1A (S ) A (1) S +A (2) S +..... +A ((N ) S +A (N +1)

数字滤波器的系统函数 B (1) +B (2) Z -1+..... +B (M ) Z -(M -1) +B (M +1) Z -M B (Z ) H(Z)= =A (Z ) A (1) +A (2) Z -1+..... +A (N ) Z -(N -1) +A (N +1) Z -N

在实际工程中,需要的设计结果是系数向量B 和A ,用B 和A 来综合滤波器的硬件实现结构或软件

运算结构,为了直观的看出设计结果,本文的实例均以滤波器幅频响应曲线作为设计结果输出。如果需要滤波器系数,在运行程序后,只要在MATLAB 命令窗口键入系数向量名,则相应的系数就显示出来了。

2.1.2. 程序设计实例分析

(a )设计高通和带通Butterworth 数字滤波器

我们给出四阶归一化 Butterworth 模拟滤波器的系统函数

H (S ) =1 S 4+2. 6131S 3+3. 4142S 2+2. 6131S +1

jw 用双线性变换法从Ha (s )设计四阶带通butterworth 数字滤波器H BP (Z ) , 并图示|H BP (e ) |,

设计采样周期T=1s,指标如下

w 1c =0. 35π, w uc =0. 65π

现在我们分步进行:■建模

由于本例主要涉及三个问题:

(1) 由数字滤波器指标求相应的模拟滤波器指标;

(2) 模拟滤波器频率变换(因为已给定阶数和模拟滤波器的归一化低通原型);

(3) 由相应的模拟滤波器到数字滤波器(双线性变换法)。

由于调用bilinear 函数将模拟滤波器转换成数字滤波器非常容易,并且有效抑制频率失真的问题,

本例给定了数字滤波器指标,所以首先要设计处与该指标相应的四阶Butterworth 模拟滤波器,然后调用bilinear 函数将其转换为数字滤波器即可,应当特别注意的是,对于双线性变换法,由数字边界频率求相应的模拟边界频率时,一定要考虑预畸变矫正。只有这样,最终设计结果才能满足所给指标,

(ⅰ)首先按照步骤一的要求

设计高通数字滤波器时,相应的模拟高通滤波器3dB 截止频率为 ΩC =w 2tg (c ) T 2

设计带通数字滤波器时,相应的模拟滤波器的3dB 截止频率为 ΩLC =w w 22tg (lc ), Ωuc =tg (uc ) T 2T 2

(ⅱ)步骤二的的原理

可调用MATLAB 频率变换函数lp2lp ,lp2hp ,lp2bp ,分别实现从模拟低通到模拟低通,高通,带通,带阻的频率变换。

▲【Bt ,At 】=lp2hp(B ,A,wc ),将系数向量为B 和A 的模拟滤波器归一化低通原型(3Db )截止频频为1rad/s),变换成3dB 截止频率为wc 的高通模拟滤波器,返回高通模拟滤波器系数向量Bt 和At 。

▲【Bt ,At 】=lp2bp(B,A ,wo ,Bw )将系数向量为B 和A 的模拟滤波器归一化低通原型变换成中心频率为wo ,带宽为Bw 的带通模拟滤波器,返回带通模拟滤波器的系数向量Bt 和At 。

其中,wo=Ωlc Ωuc ,B w =Ωuc -Ωlc

由以上原理我们来编写如下程序:

%用双线性变换法设计数字高通和带通滤波器

clear;close all

T=1;wch=pi/2; %T为采样间隔,wch 位数字高通3dB 截止频率

wlc=0.35*pi;wuc=0.65*pi; %wlc,wuc ;数字高通3dB 截止频率

B=1;A=[1,2.6131,3.4142,2.6131,1];

[h,w]=freqs(B,A,512); %求原归一化模拟滤波器的频率响应

subplot(3,2,1);plot(w,20*log10(abs(h))); %画模拟滤波器幅频特性

grid;axis([0,10,-90,0])

xlabel('w/ ');ylabel('模拟低通幅度(dB )')

%(1)设计高通

omegach=2*tan(wch/2)/T; %预畸变求模拟高通3dB 截止频率

[Bhs,Ahs]=lp2hp(B,A,omegach); %模拟域低通转换为高通系数

[Bhz,Ahz]=bilinear(Bhs,Ahs,1/T); %模拟转换位数字高通系数变量

[h,w]=freqz(Bhz,Ahs,512); %求画出数字滤波器幅频特性

Subplot(3,2,3);plot(w/pi,20*log10(abs(h)));

grid;axis([0,1,-150,0])

xlabel('w/ ');ylabel('数字滤波器幅度(dB )')

%(2)设计带通

omegalc=2*tan(wlc/2)/T; %预畸变求滤波器通带低端截止频率

omegauc=2*tan(wuc/2)/T; %预畸变求滤波器通带高端截止频率

wo=sqrt(omegalc*omegauc);Bw=omegauc-omegalc;

[Bbs,Abs]=lp2bp(B,A,wo,Bw); %模拟域低通转换为带通系数

[Bbz,Abz]=bilinear(Bbs,Abs,1/T); %模拟转换为数字带通系数变量

[h,w]=freqz(Bbz,Abz,512); %求并画出数字滤波器幅频特性

subplot(3,2,4);plot(w/pi,20*log10(abs(h)));

grid;axis([0,1,-150,0])

xlabel('w/pi ');ylabel('数字滤波器幅度(dB )')

程序运行结果如图1.3,1.4,1.5所示分别表示模拟低通幅度,数字高通幅度和数字带通幅度特性。

模拟低通幅度 数字高通幅度

图1.3 图1.4

数字带通幅度

图1.5

(b )设计滤波器进行图像去噪处理

以上是我们运用MA TLAB 工具箱函数来编程设计IIR 数字滤波器并对其频响特性进行分析的实例,

下面我们就来引入数字滤波器处理图像的实例具体分析。

我们用卷积定理来说明数字滤波器进行图像去噪处理的原理,设图像信号e (x , y ) 通过线性不变系统

h (x , y ) 的结果是g (x , y ) ,即r (x,y )=e(x,y)*h(x,y); 由时域卷积,频域乘积定理得R (U ,V )=E(U ,V )H (U ,V )。 其中,R (u , v ) ,E (u , v ) ,H (u , v ) 分别是r (x , y ) ,e (x , y ) 和h (x , y ) 的傅里叶变换。

实际上,图像的能量大部分集中在幅度频的低频和中频段,而图像的边缘和噪声对应于高频部分。因此,能降低高频成分幅度的滤波器则能过滤噪声,减弱噪声的影响。

而Butterworth 低通滤波器在物理上是可以实现的滤波器,它的转移函数模的平方为

|Ha (j Ω) |2=1, 为N 阶,截止频率为Ωc 。 Ω2N 1+() ΩC

下面我们就来设计Butterwirth 滤波器来对加高斯白噪声的图像进行去噪处理

I = imread('K:\祖国好.jpg');

figure, imshow(I),

D = imnoise(I,'gaussian');

figure, imshow(D)

D=double(D);

F=fft2(D); %傅里叶变换

F=fftshift(F); %转换数据矩阵

[N1,N2]=size(F);

n=2;

d0=40;

n1=fix(N1/2);

n2=fix(N2/2);

for i=1:N1

for j=1:N2

d =sqrt((i-n1)^2+(j-n2)^2);

h=1/(1+(d/d0)^(2*n)); %计算低通转换函数

FD(i,j)=h*F(i,j); %低通滤波

end

end

FD=ifftshift(FD);

FD=ifft2(FD);

FD=uint8(real(FD));

figure,imshow(FD)

运行结果如下,我们可以从图1.6与图1.7看出Butterworth 滤波器能有效地过滤图像中高频加性噪声,增强图像。

图1.6 图1.7

2.1.3基于函数设计法的总结

从以上一系列函数设计中,我们由matlab 函数来设计滤波器是次优化的,它的设计步骤为:

1.先选择设计方法

2. 猜测滤波器参数,后进行设计

3. 观察滤波器的响应,判断其是否符合要求

4. 反复这一尝试与失败过程直到符合要求。

这种设计方法,很显然在设计要求上进行权衡分析是不是很有效,它更多时候是凭借操作者来设计的。因此我们下面将探讨更优化的设计方法。

3. 基于信号处理图形用户界面设计IIR 数字滤波器

基于matlab 函数的滤波器设计完成后,需要对已设计的滤波器的频率响应要进行校核。要得到幅频、相频响应特性,运算量也是很大的。而利用MA TLAB 强大的信号处理界面工具进行计算机辅助设计,可以快速有效地设计数字滤波器,大大地简化了计算量。

3.1.FDATool 设计IIR 数字滤波器

3.1.1.FDATool 工具包的介绍及使用

FDATool(Filter Design&Analysis Tool) 是MATLAB 信号处理工具箱里专用的滤波器设计分析工具,MATLAB 7.0以上的版本还专门增加了滤波器设计工具箱(Filter Design Toolbox)。FDATool 可以设计几乎所有的常规滤波器,包括FIR 和IIR 的各种设计方法。它操作简单,方便灵活。

FDATool 界面总共分两大部分,一部分是Design Filter 。在界面的下半部,用来设置滤波器的设计参数;另一部分则是特性区,在界面的上半部分,用来显示滤波器的各种特性。Design Filter部分主要分为:Filter Type(滤波器类型) 选项,包括Lowpass(低通) 、Highpass(高通) 、Bandpass(带通) 、Bandstop(带阻) 和特殊的FIR 滤波器。

Design Method(设计方法) 选项,包括IIR 滤波器的Butterwotth(巴特沃思) 法、Chebyshev Type I(切比雪夫I 型) 法、Chebyshev Type II(切比雪夫II 型) 法、Elliptic(椭圆滤波器) 法和FIR 滤波器的Equiripple 法、Least-Squares(最小乘方) 法、Window(窗函数) 法。

Filter Order(滤波器阶数) 选项,定义滤波器的阶数,包括Specify Order(指定阶数) 和Minimum Order(最小阶数) 。在Specify Order 中填入所要设计的滤波器的阶数(N阶滤波器,Specify Order=N-1)。如果选择Minimum Order,则MATLAB 根据所选择的滤波器类型自动使用最小阶数。

Frequency Specifications选项,可以详细定义频带的各参数,包括采样频率和频带的截止频率。它的具体选项由Filter Type选项和Design Method选项决定。例如Bandpass(带通) 滤波器需要定义Fstop1(下阻带截止频率) 、Fpass1(通带下限截止频率) 、Fpass2(通带上限截止频率) 、Fstop2(上阻带截止频率) ,而Lowpass(低通) 滤波器只需要定义Fstop1、Fpass1。采用窗函数设计滤波器时,由于过渡带是由窗函数的类型和阶数所决定,所以只需定义通带截止频率,而不必定义阻带参数。

Magnitude Specifications 选项,可以定义幅值衰减的情况。例如设计带通滤波器时,可以定义Wstop1(频率Fstop1处的幅值衰减) 、Wpass(通带范围内的幅值衰减) 、Wstop2(频率Fstop2处的幅值衰减) 。当采用窗函数设计时,通带截止频率处的幅值衰减固定为6db ,所以不必定义。

3.1.2.FDATool 设计IIR 数字滤波器

我们将以一个IIR 滤波器的设计实例来具体说明使用matlab 工具箱的方便。

要求设计elliptic (椭圆)带通数字低通滤波器满足下列指标:

它的通带范围从100HZ 到150HZ, 采样频率Fs=1000HZ, 通带最大衰减Rp=1dB,阻带最大衰减

Rs=60dB , 阶数为10。

在该实例中,首先在Response Type 中选择Bandpass 高通滤波器,然后在下面的Desigh Method 中选择IIR 类型,并且指定 Filter Order项中的阶数Specify Order=10 ,由于是设计elliptic 椭圆滤波器,其下面Option 就不必选择。 然后在Frequency Specifications中选择Unit 为Hz ,给出采样频率Fs=1000,通带Fpass1=100和Fpass2=150;最后在Magnitude Specifications中选择Unit 为dB ,Apass=1,Astop=60. 设置完成后点击Design Filter即可得到所设计的IIR 滤波器。通过菜单选项Analysis 可以在特性区看到所设计的幅频响应、相频响应、冲击响应和零极点配置等特性,如图1.8,1.9,2.0所示。设计完成后将结果保存为filterl.fda 文件。

下面即是运用FDATOOl 对elliptic 椭圆滤波器的设计界面:其中幅频特性如图1.8所示

图1.8

相频特性

图1.9

冲击响应特性

图2.0

从以上这些界面中我们可以清晰明了的看到设计的椭圆滤波器各种特性:由以上图中我们能够很容易的分析,图1.8中椭圆滤波器具有等纹波的通频带、等纹波的抑止频带,而且过渡带宽非常狭窄,总之,使用FDATool 工具包设计和分析滤波器,是非常方便易行的,而且交互性良好,不需要极其复杂的程序编制就可以实现。在工程中也是广泛应用 。

3.3.基于fdesign 更加优化的设计方法

3.1.1.fdesign 设计方法概述

Fdesign 是一种面向对象的滤波器设计方法。这种设计方法的设计思路是:

1. 先设定设计的要求

2. 因为MATLAB 提供可符合这些要求的设计方法,例如fvtool ,sptool 等,使用这些工具箱进行设计

3. 然后在各种方法中找到最优化的设计方法。

3.1.2. 使用滤波器对象的优点

1. 设计的filter.dfilt 为对象表示,对象中包含所有滤波器的特性及可供操作的函数

2.fvtool,sptool 提供了滤波器分析及视觉化集成环境。

3.方便对参数和结构进行滤波功能上的权衡分析,包括:延时,滤波器设计复杂度,阻带衰减权衡分析,

支持多种滤波器结构包括:direct-form FIR,transposed ,Overlap-add FIR以及之间的转换用convert 函数进行操作。

4.仿真与自动代码生成的途径:它可以生成simulink 模型

5.自动估算计算复杂度,使用cost 函数:df.cost 。

3.1.3 .fvtool设计IIR 数字滤波器

FVTool 可用于查看设计或导入的滤波器的特性,包括其幅度响应、相位响应、群延迟、极点-零点

图、冲激响应和阶跃响应等。

下面我就来用一个程序来分析如何用fvtool 设计滤波器:

%用工具箱的画图工具进行画图

clear;

Wp=60/600;Ws=90/600;Rp=1;Rs=15; %滤波器参数设定

[N, Wn] = BUTTORD(Wp, Ws, Rp, Rs);

[B,A] = BUTTER(N,Wn) ; %巴特沃斯模拟滤波器

[num, den] = iirlp2bp(B,A, 0.15, [0.1, 0.2]); %IIR低通向带通转换

fvtool(B,A, num, den); %进入fvtool 界面进行滤波器设计与分析 FT=dfilt.df1(B,A); %将要设计的滤波器参数传递给变量FT

realizemdl(FT); %生成simulink 仿真模型界面

运行此程序则会出现fvtool 界面,如图2.1所示

Butterwoth 滤波器幅频特性界面

图2.1

通过这个界面我们不仅可以分析道所要设计的滤波器的幅频特性,还可以分析它的相频特性,以及零极点图,单位脉冲响应,单位阶跃响应,群延迟,相位延迟以及加入高斯噪声后的频谱等等。

在实际的语言编码通信中,解调后信号和原传递信号的差异是因幅度和时间的量化而产生的,而滤波器则会引起这种差异的产生,而这种差异就是量化噪声,在fvtool 界面中我们也能分析到滤波器 的量化噪声功率谱。如下图2.2所示为Round-off Noise Power Spectrum-该滤波器的量化噪声功率谱

图2.2

我们还可以在fvtool 的信息栏看到看到滤波器的各项数据如图2.3所示,我们发现它将两项不同参

数的滤波器进行比较filter1为6阶的,而filter2为12阶的,因为是IIR 滤波器的设计,所以两者都不

是线性相位的,这是对同一个传递函数以不同参数进行自动比较,从而选出最优化的设计。

图2.3

通过这个设计巴特沃斯滤波器的程序,我们用realizemdl (FT )命令可以得出该我们所需要设计的

滤波器的仿真模型,进而出现simulink 界面如图2.4所示; 这样一个模块可以直接用于信号传输中滤波器

模块的建立。

图2.4

用鼠标双击simulink 界面中的该模型,我们可以得到滤波器的设计模型如图2.5所示:

图2.5

我可以看到该模型用到了12个延迟器,13个乘法器,12个加法器,这是一个典型的优化设计滤波器

模型。

3.1.4.Sptool设计IIR 数字滤波器(面向对象设计)

SPTool 是MATLAB 信号处理工具箱中自带的交互式图形用户界面工具,它包含了信号处理工具箱中的

大部分函数,可以方便快捷地完成对信号、滤波器及频谱的分析、设计和浏览,因此只需要操作界面就可

以载入,观察,分析,和打印数字信号,分析和设计数字滤波器。

SPTool 提供对信号、滤波器和频谱分析函数的访问入口。借助其可以:

①设计和编辑各种长度和类型并具有标准配置的 FIR 和 IIR 滤波器

②查看设计或导入的滤波器的特性,包括其幅度响应、相位响应、群延迟、极点-零点图、冲激 响应和阶跃响应等

③将滤波器应用于选定的信号使用不同频谱估计方法进行频域数据的图形化分析,其中包括 Burg、

FFT 、多正弦窗 (MTM)、MUSIC 、特征向量、Welch 和 Yule-Walker AR 。

■Sptool 设计IIR 滤波器实例分析:

首先在MATLAB 命令窗口输入命令:Fs =500;t = (0:500)/Fs;

f= sin(2*pi*t*40)+sin(3*pi*t*50)+sin(2*pi*t*100);

此时,变量Fs 、t 、s 将显示在workspace 列表中。在命令窗口键入Sptool ,将弹出Sptool 主界

面,如图2.9所示;我们按照以下步骤操作:

(1)点击菜单File/Import将信号f 导入并取名为f 。

(2)单击Filters 列表下的New ,按照参数要求设计出滤波器filt1

(3)将滤波器filt1应用到f 信号序列。分别在Signals 、Filters 、Spectra 列表中选择f 、filt1、 mtlbse auto 单击Filters 列表下的Apply 按钮,在弹出的Apply Filter 对话框中将输出信号命名为 信

号 3

(4)进行频谱分析。在Signals 中选滤波后的信号信号3,单击Spectra 下的Create 按钮,在弹出的

Spectra Viewer 界面中选择Method 为FFT ,Nfft=512,单击Apply 按钮生成滤波后信号的频谱。

Sptool 主界面

图2.6

IIR Chebyshev1型低通滤波器filt1设计界面

图2.7

模拟信号源f

图 2.8

经滤波后信号

3

图2.9

滤波后经FFT 处理后频谱

图3.0

分别选中原信号f 、滤波后信号3,信号3的频谱 ,单击各自列表下方的View 按钮,即可观察他们的波形,如图2.8,2.9,3.0所示。

低通滤波器filt1使输入信号f 中频率为40hz 的正弦波信号通过,而将频率为75hz 和100hz 的正弦波信号大大衰减。在图3.0中我们能很清楚的看到滤出的信号3集中在40HZ 的频率区,说明滤波的效果比较理想。这样滤波后的信号3波形非常清楚的展现在用户面前。

4.滤波器设计方法总结

在对滤波器实际设计时,运用函数设计法,整个过程的运算量是很大的。设计阶数较高的IIR 滤波器时,计算量更大,设计过程中要改变参数或滤波器类型时都要重新计算。它需要反复的实验,而且需要设计者凭借经验设定参数,平时所要设计的数字滤波器,阶数和类型并不一定是完全给定的,很多时候要根据设计要求和滤波效果不断地调整,以达到设计的最优化。在这种情况下,滤波器设计就要进行大量复杂的运算,单纯的靠公式计算和编制简单的程序很难在短时间内完成。因此,基于对象的信号处理工具FDATool ,Fvtool 以及Sptool 界面设计滤波器,可以有效的的解决这一问题,它不仅减少了设计复杂度,而且还为用户提供了一个便于分析和观察的界面。

Sptool 界面更是提供了简单,直观的,更加优化的数字处理方式。我们可以根据原信号的特点,在Sptool 界面中设计我们所需要的滤波器的特性,来对原信号进行处理,它能有效满足信号处理要求,因此我们常常会选择这种更加优化的方式来设计滤波器。

三.IIR 数字滤波器的仿真模型及实现

1. 仿真工具箱simulink 概述

Simulink 是MATLAB 各种工具箱中比较特别的,一般工具箱只是把面向某一类问题的程序集中起来,其中的程序都是用MATLAB 语言编写的,这些工具箱是MATLAB 在量方面的扩充,而Simulink 工具箱却是从底层开发的一个完整的方针环境和图形界面。在这个环境中,我们可以利用鼠标或着箭盘,完成面向框图系统仿真的全部过程,并且可以更加直观,快速和准确的达到方针的目标。原来的MATLAB 是在文本窗口中编程,图形窗口只是用来显示,而Simulink 则把图形窗口拓展为可以用

框图方式来编程,使MATLAB 的功能有了一个质的飞跃。

2 Simulink仿真框图设计

使用Simulink 来仿真,要经过以下步骤:

(1) 环节库及输入

(2) 环节的连接

(3) 环节参数的设定

(4) 仿真框图的运行

3. 仿真中信号传输实例:

现在我们就以上设计步骤来具体设计关于IIR 数字滤波器的信号传输过程:

我们首先确定仿真的模型,信号源:0.05*(5+4*sin(20t ))*cos(20t ),将这个模拟信号源

进行以0.01s 为采样周期进行等间隔采样,然后与信号W1(t )和W2(t )相加(这里W1(t )为离散正弦信号,幅度为2,频率为35.5HZ ,而W2(t)是一个高斯白噪声信号作为干扰源,它的均值为0,变动范围在0.1内),这样相加之后,成为一个混合信号,使其通过一个IIR 数字带通滤波器,用这个滤波器来滤除我们所需要的频段信号,是输出信号的频率在15到25HZ 内。

Ⅰ. 环节库及框图的建立

那么,最后就来建立信号传输仿真模块,按照3.2.1的数学模型我们要用到Simulink 工具箱中的常用到的常量信号源,DSP 离散正弦信号源,和高斯白噪声信号,模拟正弦信号,加法器,乘法器,积分器,零阶保持器以及示波器FDAtool 等模块。

我们首先打开simulink 工具箱,并且建立一个Model ,在这个空白Model 中进行环节库及框图的建立,在Simulink 菜单下找到Source ,双击Source 图标,将正弦信号源和常量信号源拉到Model 中, 然后在Signal Prosessing Blockset中分别找到DSP 离散正弦信号源和噪声信号源拉到Model 中,在Commonly Used Blocks中分别找到乘法器和加法器以及示波器,在countinuous 中找到积分器,然后把需要用来设计IIR 数字滤波器的模块FDATOOL 都拉到Model 中,把环节都布好后,把各环节的端口按框图连接起来。

Ⅱ. 仿真环节参数设定

(1)基本环节参数设定

首先按照要求在几个信号模块源中设定其特性,尤其是需要说明的是,用于模拟信号采样的的零阶保持器中采样时间间隔需要设置为0.01s ,因为模拟信号源0.05*(5+4*sin(20t ))*cos(20t )最高频率达到40rad/s,由抽样定理可知乃奎斯特抽样频率必须要大于或等于其最高频率的两倍,才不会引起采样中出现信号混叠状况,保证了信号稳定传输。我们注意到,模型中需要两个示波器,

Scope1用来显示抽样信号加了高斯噪声信号和DSP 正弦离散信号后的混合信号的波形,而Scope2我们将其设计为一个双踪示波器,用来显示滤波后的信号波形,和我们需要的原始抽样信号波形。然后将其进行比较。

■IIR 数字滤波器设计模块

在建立这个模型中,我们需要设计的IIR 数字带通滤波器是一个10阶的椭圆滤波器,通频带为15-20HZ ,我们不妨用FDATool 这个工具包来实现它,图3.4为FDATool 设计椭圆滤波器的界面,在FDATool 界面中我们首先在Response Type中选择Band pass带通滤波器类型,因为elliptic 椭圆滤波器具有等纹波的通频带、等纹波的抑止频带、狭窄带的过渡频特性,所以在Design Method中选择IIR elliptic椭圆滤波器的设计类型,在其右边的Filter Order 中选择滤波器的阶数为10阶,因为选择elliptic 椭圆滤波器类型所以下面的Option 就不必选择,然后确定Frequency Specifications,选择Fs 采样频率为1000HZ, 为了得到我们需要所需要的信号频段,因此选择一个狭窄的通带范围从15HZ 到25HZ ,最后

为了尽可能滤除理想的信号,在其右边的Magnitude Specifications 中确定Apass 通带最小衰减为0.5Db, 和Astop 阻带最大衰减为80dB ,这样他的整个操作界面就如图3.1所示

图3.1 IIR数字滤波器的参数设定

本文再次用到FDATool 界面设计IIR 数字滤波器,说明它在设计过程中是很方便和快捷的。

(2)simulink 仿真模块运行

下面我们就来检验一下其中IIR 数字带通滤波器的滤波效果

图3.3和图3.4分别显示混合信号滤波前的波形和滤波后的波形以及开始被抽样得到的原始波形图

经过加噪后的混合信号滤波前的波形

图3.3

我们可以看到,在抽样信号经过两个不同频率的离散信号(DSP 离散正弦信号和高斯噪声信号)干扰后的混合信号是一个夹杂多频率的信号,在现实中,我们总会遇到,我们所需要的有用信号在传输过程中不可避免的受到噪声干扰的状况,我们的目的就是得到我们所需要的原始信号,尽可能滤除干扰信号,图3.4就是滤波后信号与原始抽样信号的的波形图

混合信号滤波后的波形以及抽样后波形

图3.4

很明显最后滤波后仍然夹杂不同频率信号,这是因为,设计的IIR 带通数字滤波器只能滤出一个频率段的信号,因此从15HZ 到20HZ 内的高斯噪声信号全都夹杂在里面,而原始抽样信号是一个频率单一的离散信号,不可避免会出现失真。但是不可否认的是,设计的IIR 数字滤波器滤波效果依然明显,它有效地滤除了频带外的干扰信号。

通过以上实例,充分说明Simulink 中各种非常有用的工具箱不仅对于设计IIR 数字滤波器非常有用,而且对于整个信号仿真处理具有相当可视化的效果,它能让使用者从繁琐的底层编程中解放出来,把有限的时间更多的花在解决问题中,必然会提高工作效率。

综上所述,利用Matlab 的信号处理工具及其simulink 仿真工具包箱能够方便快捷地设计和实现各种滤波器,是信号波形更加直观,本文用FDA Tool 工具箱,信号处理函数以及专门用于滤波器设计的工具界面fvtool 与sptool 来编写程序来设计IIR 数字滤波器,充分利用了MA TLAB 的交互性好的特点,而且最后用到了simulink 仿真工具箱来实现信号传输和滤波器的设计,将滤波器的设计置于一个新的平台,这对于研究信号的传输和处理有着极其重要的作用。


相关文章

  • 有关毕业论文的资料
  • 文章: <现代数字信号处理之-----短波通信> <基于认知无线电的短波通信发展前景> <短波宽带OFDM通信系统研究与实现> <基于DSP的IIR设计> <DSP综合设计> &l ...查看


  • 数字滤波器毕业论文
  • 摘 要 本文介绍了数字滤波器.IIR 数字滤波器的设计和内插技术及用MA TLAB 工具箱进行IIR 数字滤波器的设计和内插程序的实现.本文介绍了IIR 数字滤波器的三种设计方法,即脉冲响应不变法,双线性变换法和一种IIR 数字滤波器的优化 ...查看


  • 巴特沃斯高通数字滤波器的设计
  • 课程设计任务书 2010-2011学年第一学期 专业: 通信工程 学号 080110008 姓名: 朱亮亮 课程设计名称: 数字信号处理课程设计 设计题目: 巴特沃斯高通数字滤波器的设计 完成期限:自 2011 年 1 月 3 日至 201 ...查看


  • 基于matlab语音信号处理设计毕业论文
  • Matlab 语音信号处理 摘要 语音信号处理是研究用数字信号处理技术和语音学知识对语音信号进行处理的新兴的学科,是目前发展最为迅速的信息科学研究领域的核心技术之一.通过语音传递信息是人类最重要.最有效.最常用和最方便的交换信息形式. Ma ...查看


  • 湖 南 科 技 大 学 1
  • 湖 南 科 技 大 学 毕 业 设 计( 论 文 ) MATLAB环境下的数字滤波目 器及其应用 者 院 业 号 蒋峰 信息与电气工程 电子信息工程 0804030119 邓小东 二〇一二年 六 月 一 日 题作学专学 指导教师 湖南科技大 ...查看


  • IIR数字滤波器
  • IIR 低 通 数 字 滤 波 器 设 计 院系: 专业: 学号 姓名 信院电子系 电子信息工程 目录 摘 要........................................................... 2 第1节 ...查看


  • 一种新型超声波测距系统信号处理方法
  • 许高斌1,闵 锐1,陈 兴1,马渊明1,金传恩2 (1.合肥工业大学 电子科学与应用物理学院,安徽省MEMS工程技术研究中心,安徽 合肥230009:2.合肥科盛微电子科技有限公司,安徽 合肥230000) 一种新型的适用于工程应用的超声波 ...查看


  • 无限冲激响应FIR在TMS320C64上实现
  • DSP 芯片及应用课程设计 设计题目:无限冲激响应FIR 在TMS320C64上实现 姓名:吴康鑫 学号:学院:信息工程 指导教师:饶志华 时间日期:2012.4.29 摘要 随着计算机和信息技术的飞速发展,数字信号处理已经成为高速实时处理 ...查看


  • matlab工具箱设计滤波器
  • MATLAB中用FDATool设计滤波器及使用 该文章讲述了MATLAB中用FDATool设计滤波器及使用. 1. 在Matlab中键入fdatool运行Filter Design and Analysis Tool.具体使用请参见Matl ...查看


热门内容