系统简介
在处理数字信号的组成部分中,数字滤波器起到一个至关重要作用,简单来说它就是一个运算过程。它的主要功能是转化数字序列,它是一种数字处理设备,将输入数字序列转换成输出数字序列。它和模拟滤波器比较就会突出以下几点优点:分别为高精度、大规模集成、比较灵活且具有较强的稳定性。因此它在以下这些领域中广泛应用:分别为雷达测量、通信、医学、导航和声呐等等。本文对数字滤波器进行了深入的研究,也了解了无线脉冲响应数字滤波器的基本原理。并且讨论了使用不同的方法设计IIR数字滤波器,利用MATLAB软件,借助MATLB里FDATool工具来设计IIR低通滤波器的方法。
关键词:低通滤波器;MATLAB;数字信号处理;
第一章 绪论
1.1 研究背景及意义
在上个世纪六十年代中期,随着计算机技术的发展,数字滤波器一词开始出现于人们的视野之中。它可以处理图像和语音,也可以对雷达和音乐等进行处理。通过一定的方法可以把不必要的信息进行过滤,到目前为止,滤波工具中它是使用最多的一种。它具有以下两个优点:分别为高精度和高稳定性。通过特定操作来将输入序列转化为所需要的数据,这个就是它的本质。信号检查离不开数字滤波器的辅佐,它在信号估计中起到重要作用。
如今,在微电子科技中模电技术已经逐渐退出市场的应用,在生产和设计电子产品的过程中主要都是使用数字电子技术。数字信号处理技术包含有变换、滤波、特征提取等非常多的过程,在其中使用较为广泛的就是滤波技术。滤波技术能够分离出我们想要频率的信号,并且能够大大的减少和抑制残差在里面的噪音信号。相对于传统的模电信号处理来说,它具有更高的可靠性和更强的针对性。因为采用的编程方法使用灵活性好,实际应用时引起的外部不稳定性较小,降低了构建硬件电路的难度。可以通过特定方法对数字信号滤波器进行分类,大体可以分为如下两种:分别为无限脉冲响应和有限脉冲响应,可以用IIR和FIR对其进行表示。在这两种方法中,后者严格要求自身的线性相位,因为线性相位就是它的特性,属于非递归结构。后者这种滤波器对于采样响应的单位有一定限制,但是它的性能稳定。然而相同幅度指数的顺序是IIR的5-10倍,并且成本更高。IIR具有相位非线性,输入和输出反馈等特点,与后者这种滤波器进行比较,若想满足相应的指标要求,那么它所需要的阶数更少。因此前者这种滤波器不需要使用较多的存储单元,运行时间更短并且更经济。
综上所述,IIR数字滤波器设计比FIR滤波器设计更具有工程实用价值。IIR滤波器的设计技巧比较多,应用非常方便。所以本课题通过设计数字滤波器和对它进行实验来体现出它该有的价值。
1.2 本文主要研究内容
对于MATLAB而言,它是一款有名的数学软件,可以用于设计仿真,使用方便,语言简洁,在社会中广泛运用。本研究课题通过这款数学软件设计IIR低通滤波器,在通过信号处理工具箱对滤波器进行快速的设计并分析,接着对得到的结果进行仿真分析。
第二章 数字滤波器概述
2.1滤波原理
滤波的基本原理就是过滤掉输入的信号,这就是我们平常所说的滤波,具体可以从下图进行了解:
x(n) y(n)
图 2-1 LSI系统
以下为其输入关系:
y(n)=x(n)*h(n) (2.1)
若是有傅里叶变化,我们可以用下面的这个关系进行表示:
Y(ejω) = X(ejω) * H(ejω) (2.2)
我们可以用Y表示输出,用H表示系统,X表示输入信号,这个输出信号中只有|w|<wc的信号才可以通过,其他的信号都不能通过,所以从中可以得出,不同的滤波器形状,所得的结果也不同。
滤波器的输入与输出会对单位冲激响应造成影响,若是输入输出为离散时间信号,那么所得的结果也是离散的,我们就把这种叫做数字滤波器。假如它想用硬件来实现,那么就需要以下几个原件:分别为延时器、乘法器和加法器。假如它想要用数学软件来实现,那么它就只需要一个线性卷积程序就好。
2.2数字滤波器的分类
通过不一样的分类方式可以把它分为好几种类型,但是大体上我们可以把它分为以下两种滤波器:分别为现代和经典。后者有一个特点,在输入的信号的频率成分中,想要滤除的占用一个频带,有用的占一个频带,这两个频带互不影响。想要获得纯净信号,可以选择一个合适的滤波器对干扰信号进行过滤,这样就可以实现滤波。但是,加入干扰的频谱和信号的频谱有重叠,那么干扰信号就不能有效的过滤。达不到预期想要的结果。这个时候就需要使用到现代滤波器,主要可以分为以下几种:自适应、维纳和卡尔曼等等。对于现代滤波器而言,想要达到预想的效果,就需要以一些统计特性为依据,在特定的条件下尽可能的抑制干扰,同时还需要尽可能的回复信号。
经典滤波器从特性上进行划分大体可以划分为以下四种滤波器:分别为低通、带阻、高通和带通滤波器。以下是四种滤波器的介绍:
低通:对噪声和高频进行抑制,同时也抑制干扰,但是直流分量和低频可以通过。
高通:对直流分量和低频起到抑制作用,同时高频分量可以通过。
带通:对不是这频段的信号起到抑制作用,同时对噪声和干扰信号也起到抑制作用,但是却能通过一些特定的信号。
带阻:和上一种相反,对特定的信号起到抑制作用,不是这个频段信号可以通过。
图2-2 各种理想滤波器的幅频特性
滤波器按照采取原件进行划分可以分为以下两种滤波器:分别为无源和有源。
无源滤波器:它是由电阻电阻,电感和电容所组成。所依据的基本原理就是随着频率发生改变,电感和电容的电抗也会随着变化。这种滤波器存在一定的缺点,比如说显著的负载效应和存在能量损耗的信号,当使用电感元件时,极易产生电磁感应。重量和体积和电感有关系,电感越大,重量和体积也就越大,在低频域内不能使用。但是它还是拥有以下几点优点:简单电路和较高的可信度。
有源滤波器:它的组成部分是有有源元件和电阻电容。它具有以下几点优点:通带内信号不会涉及到能量损耗,可让信号放大,没有显著的负载效应,若是多级相联,那么所受到的影响很小,若想得到高阶滤波器,只需要级联就好,简单方便,并且所形成的滤波器又轻又小,用不到电感元件。但是它也存在一些缺点:它的供电必须要使用到直流电源,不能在大功率的地方使用,通带范围受影响,不可在高压地带使用,可靠性不是特别高,不能在高频的地方使用。
对于本课题所研究的滤波器分类的角度是:单位脉冲响应长度或者是网络结构,以此可以划分为以下两种滤波器,分别为IIR和FIR,若以h(n)作为采样响应,且它的时宽无限,且符合n0 < n < ∞时,我们就把这叫做IIR系统。
2.3 IIR低通滤波器概述
2.3.1 滤波的目的
①对于信号频谱而言,改变各频率分量所占的份额,主要是为了抑制某些频率成分。
②估计参量和检测信号都是广义滤波。
2.3.2 数字滤波器的设计原理
通常而言,它是一个线性时不变系统。下面为他的设计原理:利用频率特性去求得单位脉冲响应或者是系统函数。在理论上来说,不考虑其他因素的影响,是可以得到一个理想频率特性,但是在现实中几乎不可能。在现实中的滤波器都是可以存在误差的,所以我们都是用频率特性指标指代频率特性。
2.3.3 IIR数字滤波器
无线长度单位脉冲响应滤波器是一个离散时间系统,虽然它的输出信号相位并不一定是线性,但是幅频特性极好。求的滤波器洗漱,就是相当于无线长度单位脉冲响应滤波器的设计。数字滤波器按照响应时间进行划分可以分为以下两种滤波器:分别为无限脉冲响应和有限脉冲响应。用递归模型才可以得到IIR滤波器。
幅频特性 丨H(ejω)丨
指代各个频率成分在信号经由滤波器后减少的情况。
相频特性 φ(ω)
能够对各频率成分经由滤波器后的延时时间进行反映。
基本的技术指标如下:
(1)特征频率参数
①通带截止频率:指代一个边界点,位于过渡带和通带之间,信号可在边界点增加至规定下限,可以用公式fp = ωp / 2π表示。
②阻带截止频率:指代一个边界点,位于过渡带和通带之间,信号可在边界点减少至规定下限,。可以用公式fr= ωp / 2π表示。
③转折频率:通常可以用fc当做阻带截频,也可以用它当做通带截频,转折频率大致就是3dB的信号功率时的频率。可以用公式fp = ωc / 2π表示。
④若无电路损耗,谐振频率等于固有频率。
(2)衰减与增益
①通常而言,在低通中,ω=0的增益就是通带增益,我们可以用Kp进行表示。在高通中,ω趋近于无穷大时的增益就是Kp;在带通中,中心频率处增益则为Kp。
②通常而言,在带阻中,增益倒数极为阻带衰减。
③通带中每个点最大差量可以用△Kp表示,若是dB值的变化量,那么它的单位也是dB。
(3)品质因数和阻尼系数
α表示阻尼系数,ωo表示对角频率,Q表示品质因数,ωo表示中心频率,ω为带宽。对角频率阻尼作用即为α,它可以当做一种指标用于衡量能量衰减。品质因素用1/α进行表示,它也是一个重要指标,可以用来衡量滤波器选择特性。通常情况下,固有频率是与中心频率一样的,没有什么区别。
(4)灵敏度
对于滤波器而言,需要众多元件才能够组成滤波电路,并且它的性能好坏会随着元件的变化而变化。我们用表示它的其中一个性能指标y变化了,然后它的另外一个性能指标x随着变化的灵明度,可以用下面这个公式进行表示:
(2.6)
在设计的滤波电路中,有一个关键参数就是灵敏度,它和电路系统灵敏度不一样,也和测量仪器的灵敏度不一样,这种灵敏度越小,就代表滤波器稳定性越好,也标志它拥有越高的容错率。
(5)群延时函数
为了不超过规定范围的输出信号失真,当幅频特性符合标准,以一定的条件要求相频特性。在这次的设计之中,对于相位失真程度的判定,需要使用到群延时函数。
第三章 IIR数字滤波器设计方法
3.1 IIR数字滤波器的设计步骤
实际应用中,对于递归滤波器的设计有两种思路。其中一种是,应用模拟滤波器来设计递归滤波器,之后同通过不同的运算法则将其转换回数字式的滤波器。无论是在计算原理上还是在文献指导中,此种思路相对思路比较清晰也容易实现,因此大家用得比较多、实际也很受欢迎。第二类思路就是,在特定的时间值域中,按照数值关系设置对应的方程式,同时对于控制部分还得加入必要的辅助算法,才能实现功能。具体思路是:第一,将过度模拟滤波器进行对应设计,然后形成为一种函数,例如:Hα(s),我们称之为系统函数,第二步,通过数据转换将此函数变化另一种形式,使之成为数字滤波器的系统函数,这里我们先取名为H(z),以方便后续讲述。
3.1.1利用模拟滤波器成熟的理论设计IIR数字滤波器的过程
(1)通常大家习惯选用、比较方便的技术指标有:通带边界频率、通带最大衰减、阻带截止频率、阻带最小衰减。
(2)实现数字低通到模拟低通,这步骤中需要进行一系列数模转换才能实现。
(3)在设置好模拟低通波指标后,接着需按照其进行过度模拟低通滤波器的设计工作。
(4)选择最合适的转换算法,把模拟滤波函数值Hα(s)再次转回数字低通滤波值H(z)。
3.2代码
wp=0.2*pi;
ws=0.3*pi;
rp=0.5;
rs=20;
[n,wn]=ellipord(wp,ws,rp,rs,'s');
[z,p,k]=ellipap(n,rp,rs);
w=logspace(-1,1,1000);
h=freqs(k*poly(z),poly(p),w);
semilogx(w,abs(h));
grid;
3.3.3代码
fs=1000;
wp=[100 200]*2/fs;
ws=[30 300]*2/fs;
rp=3;
rs=30;
Nn=128;
[N,wn]=cheb1ord(wp,ws,rp,rs)
[b,a]=cheby1(N,rp,wn)
freqz(b,a,Nn,fs)
4.4代码
N1= 1024; t=0:1:N1-1;
fs = 5000;
s = (sin(2*100*pi*t/fs)+sin(2*pi*500*t/fs)+2*sin(2*pi*1000*t/fs))+randn(1,length(t/fs));
Y=fft(s);
lp=510;
wn1=2*lp/fs;
[b1,a1]=cheby1(10,0.05,wn1);
y1=filter(b1,a1,s);
Y1=fft(y1);
Ts=t(2)-t(1);
Ws=2*pi/Ts;
Wn=Ws/2;
f=linspace(0,Wn/(2*pi),length(t)/2);
Ya=abs(Y(1:length(t)/2));
Ya1=abs(Y1(1:length(t)/2));
figure(1);
subplot(121);
plot(f*fs,Ya);axis([0,1500,0,1000]);
xlabel('f');
ylabel('频谱幅值(\omega)');
title('原信号频谱');
subplot(122);
plot(f*fs,Ya1);
axis([0,1500,0,1000]);
xlabel('f');
ylabel('频谱幅值F(\omega)');
title('经过IIR低通滤波器后的信号频谱');
figure(2);
freqz(b1,a1,64,fs);axis([0,1500,-100,0]);
title('设计的IIR低通滤波器');
figure(3);
subplot(121);
plot(t,s);title('原信号时域图');
axis([0,150,-5,5]);grid;
ss=ifft(Y1(1:length(t)));
subplot(122);
plot(t,ss);title('滤波后的时域图');
axis([0,150,-5,5]);grid;
第四章 基于MATLAB的IIR低通滤波器设计
4.1 MATLAB简介
作为一种常用工具,大家都习惯简称为Matlab。但事实上,它是矩阵实验室的简称。这种工具既能够完成数值计算的功能,同时还兼顾有专业性的符号运算、特殊文字处理,甚至进行可视化建模仿真、实时控制等功能,因此应用极为广泛。在此工具中,所有运算均是以数据矩阵为基础,同时在执行程序过程中运用大量的同工程处理、数学应用等相类似的命令形式,由此运用其来解决实际问题对比与C、Fortran等会上手较快,更加容易被接受。在新版本的软件工具中,也考虑到其他工具的升级换代,因此特别针对C++、Java等给予了支持,开放了很多应用端口,因此在使用Matlab进行运算时候,可以比较方便调用这些工具,而且也能够识别用户根据自身需求而编写的程序,甚至存放在库函数以备后用。另外,众多Matlab的编程爱好者在长期的实践中摸索出很多经典程序段,只要自己需要也可以随时下载来用。
该软件整体结构由MATLAB和Simulink两块部分,在实现的时候,可以充分调用交互方式,进行高级程序编排。在此类交互作用中,根据需要可以编写线性、非线性、静态、动态等各种类型的功能。总结其最大优势,那就是能够将各种交互工具的优势结合到一起,以此能够为各种学科及实践应用提供比较完备的解决方法,这点其他编程语言很少能够做到如此全面。
MATLAB软件的系统组成:
1、MATLAB开发环境:开发环境指的是软件的操作界面,在操作界面里我们能够使用各种各样的其自带库函数功能、工具,因此在解决实际问题时候很少因为软件功能不全面而不能操作,因此用途非常广泛。
2、MATLAB开发语言:该软件中使用的是一种面向对象的语言,因此对于数据的结构处理、流程控制性方面等都表现较好。
3、应用界面:该软件的应用界面很丰富,能够应用的有效库比较全面,在此可以方便每个程序设计者进行友好交互的设计。通常在使用c语言时候,也会调用到matlab的某些子程序,那么通过交互性语言设计为单独执行的可执行程序即可。
4、数学函数库集:以工程及数学应用为基础的matlab中,可以找到很多有用的数值计算的方法,既有简单的三角函数,还可以有傅里叶变换函数、复杂举证运算等多种方法。几乎所有数据应用中需要的方法,在库函数中均可以找到,即使找不到可以非常方便的调用程序来实现。
5、完成图像生成:该软件中的图像形成也非常具有特点,可以运用工具设计数据图形,比如矩阵、数组,也可以仅仅只是调用图像中的各种关键参数,例如颜色、形状、位置等,根据用户需要而选择。
4.2 FDATool界面设计
4.2.1 FDATool介绍
基于matalab软件内部结构特点,针对信号处理具备专有工具,以此来进行设计及分析滤波的功能,这种工具叫做滤波设计分析器(FDATool)。在MATLAB6.0以上的版本中,此工具是被完好放置于专有滤波设计的工具箱中。
FDATool I的功能十分强大,而操作十分简单灵活,非常受设计者欢迎。 FDATool的界面较为简洁:整个设计分析器的主界面分为两大块区。包括特性专区、设计专区。特性专区主要是专门以这类界面整体表现滤波器的不同特性的界面区;设计专区可以进行不同滤波特有属性的不同表现,而且是以参数形式体现的,在界面区不同选项中,有高通、低通、带通的选择,还有带阻性、特殊性的选择;具体使用时候,可以用到不同运算方法,例如最小二乘法、窗口法、切比雪夫I法、II法等;在不同的滤波选项中,可以确定阶数大小及最小化阶数等选项,如果使用指定阶数大小这个功能的话,那么选项卡中填写的是N阶,那么在实际滤波器中产生的阶数大小应该多一阶;若运用最小化这个功能,那么该工具在运行中会结合程序设计用户的需要选择适合的最小阶数的滤波;同时,能够进行不同频率规格的选择,针对这个选择,使用的用户完全可以根据需要自行定夺滤波器的不同频带参数,既有频带截止参数又有采样化的频率选择。这类选项下还有子选项,子选项是可选项非必选项,具体大小可以根据滤波器类型、设计器两项内容共同抉择,比如通常来说,低通滤波的相关参数只能有下阻带结束频率及通带下限结束频率两个类别,这些滤波器由此可以被固定住,但是带通滤波却正好相反,需要具备上阻带结束频率、通带上界结束频率,另外还需要有下阻带及通带下限结束频率,将这思想参数确定好滤波器才算设置完毕。当在做窗体函数运算来设计滤波器时候,特别注意窗体函数的阶数大小及类型设计,由此可以确定过渡带的不同参数,也不要求再单独设定阻带数据,因而对于适用设计器的用户来首,此时只用将滤波器的通带结束频率设计好就行。接下来要说说幅度规格内选择项,它可以实现在特殊位置的幅值衰弱减退的大小程度,比如属于通带区域之内的幅度衰弱、上位与下区位阻带结束频率的衰弱程度等,如若运用软件做设计的人员需要应用窗体函数做滤波设计的时候,通带结束频率的幅度值大小可以自行固定到6dB,不必单独设计。整个区域最后需要介绍的是窗体函数选项,如果设计人员需要用到滤波设计器时候,那么此选择项目能够帮助定义很多不同的窗体函数的相关参数值。
4.2.2使用FDATool工具箱设计滤波器
假设需要获得一个八阶带通、切比雪夫的I型滤波,其关键属性值Rp设置为0.5,将采集样本的频率取值为八百赫兹,通带范围设置在两百到四百赫兹之间。接着先在设计方法的选择项目中选择IIR项目,然后找到旁边一个选项卡从选项卡中找到Chebyshev I,并且需要将滤波阶数定选为八,频率规格中选择单位为赫兹(Hz),采样频率设置为Fs=800Hz,同时需要记得把通带的下限截止频率调整到两百赫兹、通带上限截止频滤(fpass2)设置为400Hz。再切换到幅度规格选项, 将单位选择为db,把apass的值设置为0.8。上面所说的参数即设计一个8阶带通车比雪夫I型滤波器所需要的全部参数。然后点击设计滤波器按钮并且点击分析,就会在特性区生成所设计的滤波器对应的脉冲响应特性曲线、幅频响应曲线、相频响应曲线以及冲击响应曲线。
4.3 MATLAB程序设计法
还可以使用MATLAB中自带的各个种类的滤波器专用函数,能够方便设定待定的滤波器的相位、振幅以及脉冲响应等一整个系列参数,从而设计出符合某些参数要求的数字滤波器。
假设需要获得一个八阶带通、切比雪夫的I型滤波,其关键属性值Rp正好为0.8,此类采样频率调制到八百赫兹,通带范围设置为两百到四百赫兹之间:
Rp = 0.8;
n = 8;
Wn = [ 200 400 ]/400;
[a , b] = cheby1(n,Rp,Wn);
[y , t ] = impz(b, a 100);
Stem( t, y, ‘.’)
在这段程序代码里,Rp=0.8代表滤波器的幅值衰减值是0.8;n=8代表的是滤波器的阶数为8阶。
4.4 运用MATLAB设计IIR低通滤波器
下面分别是IIR低通滤波器的幅频特性曲线和相频特性曲线,还有信号经过这个IIR低通滤波器后,时域图和频谱图的前后对比:
图 低通滤波器的幅频特性和相频特性曲线
图9 原信号与信号经过IIR低通滤波器后的频谱对比
图10 原信号与信号经过IIR低通滤波器后的时域图对比
由上面的截图可以得知,这个IIR低通滤波器的通带范围0至500Hz之内的信号幅值得到了保留,但是其他频带的信号幅值被衰减,时域图也获得了优化。