基于MATLAB的数字滤波器的设计课程设计.docx
《基于MATLAB的数字滤波器的设计课程设计.docx》由会员分享,可在线阅读,更多相关《基于MATLAB的数字滤波器的设计课程设计.docx(41页珍藏版)》请在冰豆网上搜索。
基于MATLAB的数字滤波器的设计课程设计
数字信号处理课程设计任务书
一、设计题目、内容及要求
设计题目:
基于MATLAB的数字滤波器设计
设计内容:
所设计的数字滤波器应完成以下功能:
(1)设计低通、带通、高通数字滤波器;
(2)可以对合成信号(含低频、中频、高频分量\语音信号进行滤波;(3)通过GUI界面进行控制。
设计要求:
1、根据题目要求进行数字滤波器总体设计。
2.完成数字滤波器具体设计。
(1)输入信号的选定。
(2)确定设计方法、设计指标。
3.滤波器程序的设计。
(1)完整源程序。
(2)运行结果图。
4.书写设计说明书。
二、设计原始资料
范寿康主编,DSP技术与DSP芯片,电子工业出版社。
三、要求的设计成果(课程设计说明书、设计实物、图纸等)
设计结果能正确仿真演示
设计说明书一份(包括总体设计、算法原理图及说明、系统GUI演示、源程序清单等)
四、进程安排
周一:
资料收集
周二:
利用MATLAB完成GUI界面绘制
周三:
程序调试
周四:
书写课程设计说明书
周五:
答辩
五、主要参考资料
1、楼顺天,李博函.基于MATLAB的系统分析与设计一信号处理.西安电子科技大学出版社,1998
2、奥本海姆.离散时间信号处理.科学出版社,2000
3、宗孔德,胡广书.数字信号处理.清华大学出版社,1997
指导教师(签名):
|教研室主任(签名):
课程设计成绩评定表
出勤
出勤天数
情况
缺勤天数
成
出勤情况及设计过程表现(20分)
绩
课设答辩(20分)
评
设计成果(60分)
定
总成绩(100分)
提问
(答辩)
问题
情况
综合评定
指导教师签名:
1引言1
1.1数字滤波器的背景及意义1
1.2数字滤波器的设计要求1
1.3数字滤波器的设计目的1
2数字滤波器的设计2
2.1数字滤波器的基本概念2
2.2利用双线性变换法设计IIR数字滤波器2
2.3利用窗函数法设计FIR数字滤波器2
3基于MATLAB的数字滤波器的设计4
3.1MATLAB软件介绍4
3.2MATLAB常用函数简介4
3.3IIR数字滤波器设计5
3.3.1IIR低通滤波器设计5
3.3.2IIR高通滤波器设计7
3.3.3IIR带通滤波器设计8
3.3.4IIR数字滤波器的流程图10
3.4HR数字滤波器设计10
3.4.1FIR低通滤波器设计10
3.4.2FIR高通滤波器设计12
3.4.3FIR带通滤波器设计14
3.4.4FIR滤波器设计流程图16
4MATLAB数学应用软件介绍17
5图形用户界面设计18
6总结23
参考文献25
附录26
1引言
1.1数字滤波器的背景及意义
数字滤波器是一种对数字信号进行处理的系统,数字滤波器完成数字信号滤波处理功能,其输入是一组数字量,其输出是经过变换的另一组数字量。
它通过一定的运算关系或电路形式来改变输入信号所包含的频率成分的相对比例或滤出某些频率成分,数字滤波器具有稳定性高、精度高、灵活性大等优点。
随着数字技术的发展,用数字技术实现滤波器的功能越来越受到人们的注意和广泛的应用。
1.2数字滤波器的设计要求
设计要求:
L根据题目要求进行数字滤波器总体设计。
2.完成数字滤波器具体设计。
(1)输入信号的选定。
(2)确定设计方法、设计指标。
3.滤波器程序的设计。
(1)完整源程序。
(2)运行结果图。
1.3数字滤波器的设计目的
掌握用双线性变换法设计IIR数字滤波器及用窗函数法设计FIR数字滤波器的具体设计方法和原理,观察设计的数字滤波器的幅频特性,了解双线性变换法和窗函数法设计数字滤波器时的特点。
2数字滤波器的设计
2.1数字滤波器的基本概念
滤波器从功能上分类可以分为经典滤波器和现代滤波器,经典滤波器主要用于在频率域的滤波选取,现代滤波器是通过复杂的统计学理论,用于在大量的同频率信号中选取需要的信号数据,数字滤波器从实现方法上可以分为无限冲击响应滤波器和有限冲击响应滤波器。
它们是用单位采样响应h(n)的特性来区分的,HR滤波器的h(n)是无限长序列,而FIR滤波器的h(n)是有限长序列。
2.2利用双线性变换法设计HR数字滤波器
变换原理:
双线性变换法是使数字滤波器的频率响应与模拟滤波器的频率响应相似的一种变换方法。
为了克服脉冲响应不变法的多值映射这一缺点,首先把整个s平面压缩变换到某一中介的si平面的一横带里,然后再通过标准变换关系将此横带变换到整个Z平面上去,这样就使S平面与Z平面是一一对应关系,消除了多值变换性,同时也就消除了频谱混叠现象。
2.3利用窗函数法设计FIR数字滤波器
窗函数设计法是一种通过截短和计权的方法使无限长非因果序列成为有限长脉冲响应序列的设计方法。
通常在设计滤波器之前,应该先根据具体的工程应用确定滤波器的技术指标。
在大多数实际应用中,数字滤波器常常被用来实现选频操作,所以指标的形式一般为在频域中以分贝值给出的相对幅度响应和相位响应。
用窗函数法设计FIR滤波器的步骤如下:
(1)根据过渡带宽及阻带衰减要求,选择窗函数的类型并估计窗口长度N(或阶数乂=?
4-1)。
窗函数类型可根据最小阻带衰减AS独立选择,因为窗口长度N对最小阻带衰减AS没有影响。
在确定窗函数类型以后,可根据过渡带宽小于给定指标确定所拟用的窗函数的窗口长度No设待求滤波器的过渡带宽为△co,它与窗口长度N近似成反比。
窗函数类型确定后,其计算公式也确定了,不过这些公式是近似的,得出的窗口长度还要在计算中逐步修正。
原则是在保证阻带衰减满足要求的情况下,尽量选择较小的N。
在N和窗函数类型确定后,即可调用MATLAB中的窗函数求出窗函数吗5)。
(2)根据待求滤波器的理想频率响应求出理想单位脉冲响应hd(n)。
如果给出待求滤波器的频率响应为Hd©“),则理想的单位脉冲响应可以用傅里叶反变换式得到,在一般情况下,hd(n)是不能用封闭公式表示的,需要采用数值方法表示。
从co=0到co=2tt采样N点,采用离散傅里叶反变换(IDFT)即可求出
(3)计算滤波器的单位脉冲响应h(n)o它是理想单位脉冲响应和窗函数的乘积,
即h(n)=h(n)=hd(n)xWd(〃)xwd(n),在MATLAB中用点乘命令表示为h=儿xw%。
(4)验算技术指标是否满足要求。
为了计算数字滤波器在频域中的特性,可调用freqz子程序,如果不满足要求,可根据具体情况,调整窗函数类型或长度,直到满足要求为止。
3基于MATLAB的数字滤波器的设计
3.1MATLAB软件介绍
Matlab是由matrix和laboratory两个英文单词的前三个字母组合而成,是“MatrixLaboratory”的缩写,意为“矩阵实验室”,它是MathWorks公司于1984年推出的一套高性能的数值计算可视理等方面产生了大量的矩阵及其相应的计算问题。
自己去编写大量的繁复的计算程序,不仅会消耗大量的时间和精力,减缓工作进程,而且往往质量不高。
美国Mathwork软件公司推出的Matlab软件就是为了给人们提供一个方便的数值计算平台而设计的。
Matlab是一个交互式的系统,它的基本运算单元是不需指定维数的矩阵,按照IEEE的数值计算标准(能正确处理无穷数Inf(Infinity)、无定义数NaN(not-a-number)及其运算)进行计算。
系统提供了大量的矩阵及其它运算函数,可以方便地进行一些很复杂的计算,而且运算效率极高。
Matlab命令和数学中的符号、公式非常接近,可读性强,容易掌握,还可利用它所提供的编程语言进行编程完成特定的工作。
除基本部分外,Matlab还根据各专门领域中的特殊需要提供了许多可选的工具箱,如应用于自动控制领域的ControlSystem工具箱和神经网络中NeuralNetwork工具箱等。
3.2MATLAB常用函数简介
1.wavread函数:
[y,fs*bits]=wavread(Blip,)ni于读取语音,采样值放在向量y中,fs表示采样频率(Hz),bits表示采样位数。
sound(x,fs,bits);用于对声音的回放。
向量y则就代表了一个信号(也即一个复杂的“函数表达式“)也就是说可以像处理一个信号表达式一样处理这个声音信号。
2.FFT函数:
FFT用于序列快速傅立叶变换。
其调用格式为:
y=fft(x)o其中,x是序列,y是序列的FFT,x可以为一向量或矩阵:
若x为一向量,y是x的FFT,且和x相同长度。
若x为一矩阵,则y是对矩阵的每一列向量进行FFT。
3.Firl函数:
firl函数是基于窗函数的FIR滤波器设计——标准频率响应形状。
其调用格式为b=fii,l(N,we/ftype5,window)。
ftype和window可以默认。
b=firl(N,wc)可得到截止频率为wc且满足线性相位条件的N阶FIR低通滤波器,window默认选用hamming窗。
其单位脉冲响应h(n)为:
h(n)=b(n+l),n=0,l,2,...,N。
当wc=[wc1,wc2]时,得到的是通带为wc1b=firl(N,wc/ftype)可设计高通和带阻滤波器。
当ftype=high时,,设计高通FIR滤波器:
当ftype=stopH寸,设计带阻FIR滤波器。
4.sound(x,fs,bits):
该函数用于播放生硬,向量y就代表了一个信号(也即一个复杂的“函数表达式”),也就是说可以像处理一个信号表达式一样处理这个声音信号。
3.3IIR数字滤波器设计
3.3.1IIR低通滤波器设计
根据数字滤波器的设计原理,首先将数字域的指标转化为模拟域的指标设计模拟低通滤波器,然后应用双线性变换法将模拟滤波器转化为数字滤波器将指标转换成归一化模拟低通滤波器的指标,通过归一化的模拟低通滤波器阶数N和3dB截止频率的计算,将模拟域频率变换成模拟低滤波器H(s),并用双线性变换法将H(s)转换成数字低通滤波器H(z),由此得到低通数字滤波器。
IIR低通滤波器的设计程序为:
wb=fb*2*pi/fs;%将数字频率转化为数字角频率
wc=fc*2*pi/fs;Wb=2*fs*tan(wb/2);%数字角频率转化为模拟角频率
Wc=2*fs*tan(wc/2);
[n,wn]=buttord(Wb,Wc,Ap,As,'s');%最小阶次为N的巴特沃兹低通滤波器
[b,a]=butter(n,wn;s');%截止频率为wn的低通模拟巴特沃兹滤波器
[bd,ad]=bilinear(b,a,fs);%将模拟滤波器转化为数字滤波器
[h,w]=freqz(bd,ad,1024);%数字滤波器的n点复频响应值
figure
(1);subplot(1,1,1);plot(w*fs/(2*pi),20*log10(abs(h)));%复频特性曲线出le(1IR低通滤波器幅频特性);
图3.1IIR低通滤波器的幅频特性
读入信号对信号傅里叶变换进行频谱分析,利用filter函数滤波,对得到的信号傅里叶变换进行频谱分析,与滤波前进行比较。
并在滤波前后用sound函数播放语音信号,观察滤波前后的变化。
图3.2滤波前后信号的波形和频谱比较分析滤波前后信号的变化,波形图变窄,频谱变化表明:
信号的低频率段被保留,
高频率段被滤除。
分析滤波前后的声音变化,滤波后声音明显变低而沉闷,这说明滤波器设计基本符合指标要求。
3.3.2IIR高通滤波器设计
与低通滤波器的设”•原理相似、,首先将数字域的指标转化为模拟域的指标设计模拟低通滤波器,然后应用双性变换发将模拟滤波器转化为数字滤波器。
将指标转换成归一化模拟低通滤波器的指标,通过归一化的模拟低通滤波器阶数N和3dB截止频率的计算,将模拟域频率变换成模拟低滤波器H(s),并用双线性变换法将H(s)转换成数字低通滤波器H(z),由此得到低通数字滤波器。
图3.3IIR高通滤波器的幅频特性
%最小阶次为N的巴特沃兹低通滤波器%截止频率为wn的高通模拟滤波器%将模拟高通滤波器转换为数字滤波器%数字滤波器的n点复频响应值
读入信号对信号傅里叶变换进行频谱分析,利用filter函数滤波,对得到的信号傅里叶变换进行频谱分析,与滤波前进行比较。
并在滤波前后用sound函数播放语音信号,观察滤波前后的变化。
图3.4滤波前后信号的波形和频谱比较
分析滤波前后信号的变化,波形图变窄,频谱变化表明:
信号的高频率段被保留,低频率段被滤除。
分析滤波前后的声音变化,滤波后声音明显变高而尖锐,这
说明滤波器设计基本符合指标要求。
3.3.3IIR带通滤波器设计
IIR带通滤波器的设计程序为:
wb=[fblfb2]*2*pi/fs;
wc=[fclfc2]*2*pi/fs;
Wb=2*fs*tan(wb/2);
Wc=2*fs*tan(wc/2);
[n,wn]=buttord(Wb,Wc,ap,as/s,);
[b,a]=butter(n,wn/s*);
[bd.ad]=bilinear(b5a,fs);
%将数字频率转化为数字角频率
%数字角频率转化为模拟角频率
%最小阶次为N的巴特沃兹低通滤波器
%通带为wn的模拟带通滤波器
%将模拟带通滤波器转换为数字带通滤波器
[h,w]=freqz(bd,ad);%数字带通滤波器的n点复频响应值
figure(5);
plot(w*fs/(2*pi),20*log10(abs(h)));
grid;%图上加坐标网络
title('IIR带通滤波器幅频特性');
读入信号对信号傅里叶变换进行频谱分析,利用filter函数滤波,对得到的信号傅里叶变换进行频谱分析,与滤波前进行比较。
并在滤波前后用sound函数播放语音信号,观察滤波前后的变化。
HzHz
图3.6滤波前后信号的波形和频谱比较
分析滤波前后信号的变化,波形图变窄。
频谱变化表明:
信号的低频率段和高频率段被滤除,中间频率段被保留;分析滤波前后的声音变化,滤波后声音一定程度上变的尖锐,与高通滤波器滤波后的声音相比较低。
这说明滤波器设计基本符合指标。
3.3.4IIR数字滤波器的流程图
开始
读入数字滤波器技术指标
将指标转换成归一化模拟滤波器的指标
计算归一化的模拟滤波器阶数N和3db截止频率
模拟域频率变换,将信号变换成模拟滤波器H(s)
用双线性变换法将H(s)转换成数字滤波器H(z)
输入信号后显示相应结果
结束
图3.7IIR数字滤波器流程图
3.4FIR数字滤波器设计
3.4.1FIR低通滤波器设计
分析性能指标,确定所使用的窗函数。
经调试,应用blackman窗比较接近所要求的滤波器指标。
确定窗函数的系数b和a(FIR数字滤波器a=l),并显示滤波器的频率特性。
FIR低通滤波器的设计程序为:
wp=2*pi*fb/Fs;
N=ceil(l2*pi/(ws-wp));
Wn=(fb+fc)/Fs;
ws=2*pi*fc/Fs;%求数字角频率
%确定FIR低通滤波器的窗口长度N
%求归一化截止频率
b=fir1(N,Wn,blackman(N+1));%得到截止频率为wc且满足线性相位条件的N阶
FIR低通滤波器,窗函数为布莱克曼窗
[h1,w1]=freqz(b,1);
figure(7);
subplot。
1,1);
%低通FIR数字滤波器的复频响应
plot(w1*Fs/(2*pi),20木log10(abs(h1)));grid;
title(*FIR低通滤波器的幅频特性);
图3.8FIR低通滤波器的幅频特性
读入信号对信号傅里叶变换进行频谱分析,利用fftfilt函数滤波,对得到的信
号傅里叶变换进行频谱分析,与滤波前进行比较。
图3.9滤波前后信号的波形和频谱比较
分析滤波前后信号的变化,波形图变窄,频谱变化表明:
信号的低频率段被保留,高频率段被滤除。
分析滤波前后的声音变化,滤波后声音明显变低而沉闷,这说明滤波器设计基本符合指标要求。
3.4.2FIR高通滤波器设计
FIR高通滤波器的设计程序为:
ws=2*pi*fb/Fs;%求数字角频率
wp=2*pi*fs/Fs;
N=2*ceil(12*pi/(ws-wp));%确定FIR高通滤波器的窗口长度N
Wn=(fb+fs)/Fs;%求归一化截止频率
b=fir1(N,Wn,'high',blackman(N+1));%得到截止频率为wc且满足线性相位条件
的N阶FIR高通滤波器,窗函数为布莱克曼窗
figure(9);
subplot。
,1,1);
[hl,wl]=freqz(b,l);%低通FIR高通数字滤波器的复频响应
plot(wl/pi,20*log10(abs(h1)));
grid;
title(TIR高通滤波器的幅频特性);
FIR高通滤波器的幅频特性
捕T
<1>
W卿
1
00.10.20.30.40.50.60.70.80.91
图3.10FIR高通滤波器的幅频特性
读入信号对信号傅里叶变换进行频谱分析,利用fftfilt函数滤波,对得到的信号傅里叶变换进行频谱分析,与滤波前进行比较。
并在滤波前后用sound函数播放语音信号,观察滤波前后的变化。
图3.11滤波前后信号的波形和频谱比较
分析滤波前后信号的变化,波形图变窄,频谱变化表明:
信号的高频率段被保留,低频率段被滤除。
分析滤波前后的声音变化,滤波后声音明显变高而尖锐,这说明滤波器设计基本符合指标要求。
3.4.3FIR带通滤波器设计
FIR带通滤波器的设计程序为:
%Wn=[WlW2]是一个二元向量,firl返回通带
为wlfigure(ll);
subplot。
」」);
[hl,wl]=freqz(b,l);%低通FIR高通数字滤波器的复频响应
plot(w1*Fs/(2*pi),20木log10(abs(h1)));grid;出le(FIR带通滤波器的幅频特性);
FIR带通滤波器的幅频特性
图3.12FIR带通滤波器的幅频特性
图3.13滤波前后信号的波形和频谱比较
分析滤波前后信号的变化,波形图变窄。
频谱变化表明:
信号的低频率段和高频率段被滤除,中间频率段被保留;分析滤波前后的声音变化,滤波后声音一定程度上变的尖锐,与高通滤波器滤波后的声音相比较低。
这说明滤波器设计基本符合指标要求。
3.4.4FIR滤波器设计流程图
开始
读入数字滤波器技术指标
将指标转换成模拟滤波器的指标
选择合适的窗函数设计滤波器
将语音信号输入滤波器中
对信号进行FFT变换并显示相应结果
结束
图3.14FIR数字滤波器流程图
4MATLAB数学应用软件介绍
MATLAB是美国MathWorks公司出品的商业数学软件,用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境,主要包括MATLAB和Simulink两大部分。
MATLAB是矩阵实验室(MatrixLaboratory)的简称,和MathematicalM叩le并称为三大数学软件。
它在数学类科技应用软件中在数值计算方面首屈一指。
MATLAB可以进行矩阵运算、绘制函数和数据、实现算法、创建用户界面、连接其他编程语言的程序等,主要应用于工程计算、控制设计、信号处理与通讯、图像处理、信号检测、金融建模设计与分析等领域。
MATLAB的基本数据单位是矩阵,它的指令表达式与数学、工程中常用的形式十分相似,故用MATLAB来解算问题要比用C,FORTRAN等语言完相同的事情简捷得多,并且mathwork也吸收了像Maple等软件的优点,使MATLAB成为一个强大的数学软件。
在新的版本中也加入了对C,FORTRAN,C++,JAVA的支持。
可以直接调用,用户也可以将自己编写的实用程序导入到MATLAB函数库中方便自己以后调用。
使用MATLAB,您可以较使用传统的编程语言(如C、C和Fortran)更快地解决技术计算问题。
MATLAB的应用范围非常广,包括信号和图像处理、通讯、控制系统设计、测试和测量、财务建模和分析以及计算生物学等众多应用领域。
附加的工具箱(单独提供的专用MATLAB函数集)扩展了MATLAB环境,以解决这些应用领域内特定类型的问题。
MATLAB提供了很多用于记录和分享工作成果的功能。
可以将您的MATLAB代码与其他语言和应用程序集成,来分发您的MATLAB算法和应用。
MATLAB是一种用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境。
MATALB可以创建图形用户界面GUI(GraphicalUserInterface),它是用户和计算机之间交流的工具。
MATLAB将所有GUI支持的用户控件都集成在这个环境中并提供界面外观、属性和行为响应方式的设置方法,随着版本的提高,这种能力还会不断加强。
而且具有强大的绘图功能,可以轻松的获得更高质量的曲线图。
5图形用户界面设计
图形用户界面(GraphicalUserInterface,简称GUI,又称图形用户接口)是指采用图形方式显示的计算机操作用户界面。
与早期计算机使用的命令行界面相比,图形界面对于用户来说在视觉上更易于接受
GUI是一种结合计算机科学、美学、心理学、行为学,及各商业领域需求分析的人机系统工程,强调人一机一环境三者作为一个系统进行总体设计。
图形用户界面(GUI)是用户与计算机程序之间的交互方式,是用户与计算机
进行信息交流的方式。
计算机在屏幕显示图形和文本,若有扬声器还可产生声音。
用户通过输入设备,如:
键盘、鼠标、跟踪球、绘制板或麦克风,与计算机通讯。
用户界面设定了如何观看和如何感知计算机、操作系统或应用程序。
通常,多是根据悦目的结构和用户界面功能的有效性来选择计算机或程序。
图形用户界面或GUI是包含图形对象,如:
窗口、图标、菜单和文本的用户界面。
以某种方式选择或激活这些对象,通常引起动作或发生变化。
最常见的激活方法是用鼠标或其它点击设备去控制屏幕上的鼠标指针的运动。
按下鼠标按钮,标志着对象的选择或其它动作。
GUI界面的准则:
减少用户的认知负担
保持界面的一致性
满足不同目标用户的创意需求
用户界面友好性
图标识别平衡性
图标功能的一致性
建立界面与用户的互动交流
更为人性化的视觉优化
更具识别性的图标及其他元素
更具可操控性和扩充性的使用易用性
更具有企业品牌特色的视觉识别性
本课程设计所设计的图形用户界面图如下:
口4(M1«OQwHsp明p
OoiFt-九U川