基于MATLAB的数字滤波器设计

更新时间:2023-11-17 06:52:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

目 录

1 引言 .......................................................................................................................................... 1 2 设计任务 .................................................................................................................................. 2 2.1设计内容 ............................................................................................................................ 2 2.2设计要求 ............................................................................................................................ 2 3 语音信号的采集及时频分析 .................................................................................................. 3 3.1语音信号的采集 ................................................................................................................ 3 3.2语音信号的时频分析 ........................................................................................................ 3 4 基于MATLAB的数字滤波器的设计 ................................................................................... 5 4.1数字滤波器的设计 ............................................................................................................ 5 4.1.1数字滤波器的基本概念 ............................................................................................ 5 4.1.2 IIR滤波器设计思想.................................................................................................. 5 4.2 IIR数字滤波器设计 .......................................................................................................... 5 4.2.1 IIR低通滤波器设计.................................................................................................. 5 4.2.2 IIR带通滤波器设计.................................................................................................. 7 4.2.3 IIR带通滤波器设计.................................................................................................. 9 5 合成信号及其滤波 ................................................................................................................ 12 5.1合成信号 .......................................................................................................................... 12 5.2 合成信号滤波 .................................................................................................................. 13 6 设计系统界面 ........................................................................................................................ 15 6.1系统界面设计工具—GUI概述 ...................................................................................... 15 6.2界面设计及使用说明 ...................................................................................................... 15 7 心得体会 ................................................................................................................................ 18 参考文献 .................................................................................................................................... 19 附录 ............................................................................................................................................ 20

课程设计说明书

1 引言

数字信号处理是利用计算机或专用处理设备,以数值计算的方法对信号进行采集、抽样、变换、综合、估值与识别等加工处理,借以达到提取信息和便于应用的目的。它在语音、雷达、图像、系统控制、通信、航空航天、生物医学等众多领域都获得了极其广泛的应用。具有灵活、精确、抗干扰强、设备尺寸小、造价低、速度快等优点。

数字滤波器, 是数字信号处理中及其重要的一部分。随着信息时代和数字技术的发展,受到人们越来越多的重视。数字滤波器可以通过数值运算实现滤波,所以数字滤波器处理精度高、稳定、体积小、重量轻、灵活不存在阻抗匹配问题,可以实现模拟滤波器无法实现的特殊功能。数字滤波器种类很多,根据其实现的网络结构或者其冲激响应函数的时域特性,可分为两种,即有限冲激响应( FIR,Finite Impulse Response)滤波器和无限冲激响应( IIR,Infinite Impulse Response)滤波器。

IIR滤波器采用递归型结构,即结构上带有反馈环路。IIR滤波器运算结构通常由延时、乘以系数和相加等基本运算组成,可以组合成直接型、正准型、级联型、并联型四种结构形式,都具有反馈回路。同时,IIR数字滤波器在设计上可以借助成熟的模拟滤波器的成果,如巴特沃斯、契比雪夫和椭圆滤波器等,有现成的设计数据或图表可查,在设计一个IIR数字滤波器时,我们根据指标先写出模拟滤波器的公式,然后通过一定的变换,将模拟滤波器的公式转换成数字滤波器的公式。

MATALB 可以创建图形用户界面GUI (GraphicalUser Interface) ,它是用户和计算机之间交流的工具。MATLAB 将所有GUl 支持的用户控件都集成在这个环境中并提供界面外观、属性和行为响应方式的设置方法,随着版本的提高,这种能力还会不断加强。而且具有强大的绘图功能,可以轻松的获得更高质量的曲线图。

滤波器的设计可以通过软件或设计专用的硬件两种方式来实现。随着MATLAB软件及信号处理工具箱的不断完善,MATLAB很快成为应用学科等领域不可或缺的基础软件。它可以快速有效地实现数字滤波器的设计、分析和仿真,极大地减轻了工作量,有利于滤波器设计的最优化。

1

课程设计说明书

2 设计任务

2.1设计内容

设计题目为基于MATLAB的数字滤波器设计所设计的数字滤波器应完成以下功能: 1.设计低通、带通、高通数字滤波器;

2.可以对合成信号(含低频、中频、高频分量)、语音信号进行滤波; 3.通过GUI界面进行控制。

2.2设计要求

1.根据题目要求进行数字滤波器总体设计。 2.完成数字滤波器具体设计。

(1)输入信号的选定。(2)确定设计方法、设计指标。 3.滤波器程序的设计。

(1)完整源程序。(2)运行结果图。 4.书写设计说明书。

2

课程设计说明书

3 语音信号的采集及时频分析

3.1语音信号的采集

利用PC 机上的声卡和WINDOWS 操作系统可以进行数字信号的采集。将话筒输入计算机的语音输入插口上,启动录音机。按下录音按钮,接着对话筒说话“语音信号处理”,说完后停止录音,屏幕左侧将显示所录声音的长度。点击放音按钮,可以实现所录音的重现。以文件名“ppp”保存入F :\\ MATLAB \\ work 中。可以看到,文件存储器的后缀默认为. wav ,这是WINDOWS 操作系统规定的声音文件存的标准。

3.2语音信号的时频分析

利用MATLAB中的“wavread”命令来读入(采集)语音信号,将它赋值给某一向量。再对其进行采样,记住采样频率和采样点数。下面介绍Wavread 函数几种调用格式。

1.y=wavread(file)

功能说明:读取file所规定的wav文件,返回采样值放在向量y中。 2.[y,fs,nbits]=wavread(file)

功能说明:采样值放在向量y中,fs表示采样频率(hz),nbits表示采样位数。 3.y=wavread(file,N)

功能说明:读取钱N点的采样值放在向量y中。 4.y=wavread(file,[N1,N2])

功能说明:读取从N1到N2点的采样值放在向量y中。 接下来,对语音信号OriSound.wav进行采样。其程序如下:

>> [y,fs,nbits]=wavered (‘OriSound’); %把语音信号加载入Matlab 仿真软件平台中 然后,画出语音信号的时域波形,再对语音信号进行频谱分析。MATLAB提供了快速傅里叶变换算法FFT计算DFT的函数fft,其调用格式如下:

Xk=fft(xn,N)

参数xn为被变换的时域序列向量,N是DFT变换区间长度,当N大于xn的长度时,fft函数自动在xn后面补零;当N小于xn的长度时,fft函数计算xn的前N个元素,忽略其后面的元素。

在本次设计中,我们利用fft对语音信号进行快速傅里叶变换,就可以得到信号的频谱特性。其程序如下:

[y,fs,nbits]=wavread ('F:\\ppp.wav '); sound(y,fs,nbits); N= length (y) ; Y=fft(y,N); axes(handles.axes1);

3

课程设计说明书

plot(abs(Y)); title('原始信号频谱'); 程序结果如下图:

图 3.1 语言信号波形及频谱

4

课程设计说明书

6 设计系统界面

6.1系统界面设计工具—GUI概述

图形用户界面(graphical user interfaces ,GUI)则是由窗口、光标、按键、菜单、文字说明等对象(objects)构成的一个用户界面。用户通过一定的方法(如鼠标或键盘)选择、激活这些图形对象,使计算机产生某种动作或变化,比如实现计算、绘图等。在MATLAB中GUI是一中包含多种对象的图形窗口,并为GUI开发提供一个方便高效的集成开发环境GUIDE。GUIDE主要是一个界面设计工具集,MAYLAB将所有GUI支持度控件都集成在这个环境中,并提供界面外观、属性和行为响应方式的设置方法。GUIDE将设计好的GUI保存在一个FIG文件中,同时生成M文件框架。

FIG文件:包括GUI图形窗口及其所有后裔的完全描述,包括所有对象属性的属性值。它是一个二进制文件调用hsave课保存图形窗口时将生车该文件。M文件包括GUI设计、控件函数以及定义为子函数的用户控件回调函数,主要用于控制GUI展开时的各种特征。 GUI创建包括界面设计和控件编程两部分,主要步骤如下。第一步:通过设置GUIDE应用程序的选项来运行GUIDE;第二步:使用界面设计编辑器进行面设计;第三步:编写控件行为响应控制(即回调函数)代码。

6.2界面设计及使用说明

首先我们新建一个GUI文件:File/New/GUI 如下图所示:

图 6.1 GUI创建界面

选择Blank GUI(Default),其次,进入GUI开发环境以后添加两个编辑文本框,6个

15

课程设计说明书

静态文本框,和一个按钮,布置如下图所示;

图 6.2 GUI开发环境

布置好各控件以后,就可以来为这些控件编写程序来实现对语音或合成信号进行滤波的功能了。

最后,使用说明。单击相应的按钮,便跳出对应的界面,进行操作。

图 6.3 系统运行界面

16

课程设计说明书

IIR语音信号高通滤波人机界面如下图:

图 6.4 人机界面

17

课程设计说明书

7 心得体会

通过这次课设,我认识到了MATLAB功能非常的强大,使得我们在使用的时候用户直接调用这些库函数并赋予实际参数就能解决实际问题,具有极高的变成效率。我也熟悉了MATLAB的工作环境,可以很熟练的对MATLAB进行常规的操作,快速进行程序编辑和仿真。本次课设通过一个设计实例,利用MATLAB实现 IIR数字滤波器设计与滤波的三种方法,从仿真结果可以看出它们均可以达到技术指标要求,而且方法简单、快捷,大大减轻了工作量。滤波器的设计工作完成后,可以借助于MATLAB的export操作导出所设计滤波器的系统函数H(z)。由于MATLAB具有强大的接口功能,仿真后的结果可以很方便的移植到 DSP、CPLD。在实际应用中,只需按要求修改滤波器参数,并对程序作较少的改动,即可实现不同截止频率的FIR滤波器,实用性较强。

本次课程设计选题及进行过程中得到魏明哲、李茜老师等的悉心指导。对报告的书写格式及内容,老师多次帮助我分析思路,开拓视角。在我遇到困难的时候,老师给予我最大的支持和鼓励。指导老师严谨求实的治学态度,踏实坚韧的工作精神,值得我学习。在此,谨向老师致以诚挚的谢意。同时还要学感谢我的同学,尤其是我们同一课题的几个同学,我们花费课很多的时间和精力。相互之间帮忙协作,上网搜索相关资料,到图书馆查阅相关文献,遇到难题,共同商讨。解决不了的问题,我们就像老师和其他同学虚心请教。最终,我们一起解决了一个又一个难题,虽然,我们有过争吵,但是在真理面前,我们的行动是一致的。在一周的课程设计过程中, 学院的机房工作人员给我们提供的便利的条件,天气寒冷,实验室空调一直开放,我们觉得很温暖,在此,表达对工作人员的谢意。在遇到课题技术难题时,我和同组的同学到图书馆广泛查阅相关资料,图书馆也热情地老师帮助,在此,向他们表示致谢。当然,我也要感谢计算机工程学院,感谢他们给我提供这次实习的机会。我院采取把理论知识与实践相结合教学模式,让学生的知识源于课堂而走出课堂,真正做到了“为了学生的一切,一切为了学生”。

最后,再次感谢所有帮助过我的老师和同学!

18

课程设计说明书

参考文献

[1] 楼顺天,李博菡. 基于MATLAB的系统分析与设计—信号处理.西安电子科技大学出版社,1998 [2] 奥本海姆. 离散时间信号处理.科学出版社,2000

[3] 宗孔德,胡广书. 数字信号处理.清华大学出版社,1997 [4] 万永革. 数字信号处理的MATLAB实现.科学出版社,2007 [5] 程佩青. 数字信号处理教程.清华大学出版社出版,2001 [6] 高西全 ,丁玉美等. 数字信号处理.电子工业出版社,2009

19

课程设计说明书

[num2,den2]=lp2bp(b12,a12,sqrt(wp1*wp2),bw); [num12,den12]=bilinear(num2,den2,0.5); [h,w]=freqz(num12,den12); z12=filter(num12,den12,x);

m12=fft(z12); axes(handles.axes2); plot(abs(x),'g');

title('滤波前信号的频谱'); axes(handles.axes3); plot(abs(m12),'r'); title('滤波后信号的频谱'); axes(handles.axes4); plot(x);

title('滤波前信号的波形'); axes(handles.axes5); plot(z12);

title('滤波后的信号波形'); 合成信号高通滤波 f1=20; f2=200; f3=500; t=(1:100)/2000;

x1=sin(2*pi*t*f1); %绘制x(t)的图形 x2=sin(2*pi*t*f2); x3=sin(2*pi*t*f3);

x=sin(2*pi*t*f1)+sin(2*pi*t*f2)+sin(2*pi*t*f3); n=[1:100];t=n/2000

X=fft(x,512);w=(0:255)/256*1000;

x=sin(2*pi*t*f1)+sin(2*pi*t*f2)+sin(2*pi*t*f3); Ft=8000; Fp=4000; Fs=3500;

wp1=tan(pi*Fp/Ft); %高通到低通滤波器参数转换 ws1=tan(pi*Fs/Ft); wp=1;

25

课程设计说明书

ws=wp1*wp/ws1;

[n13,wn13]=cheb1ord(wp,ws,1,50,'s'); %求模拟的低通滤波器阶数和截止频率 [b13,a13]=cheby1(n13,1,wn13,'s'); %求S域的频率响应的参数 [num,den]=lp2hp(b13,a13,wn13); %将S域低通参数转为高通的 [num13,den13]=bilinear(num,den,0.5); %利用双线性变换实现S域到Z域转换 [h,w]=freqz(num13,den13); z13=filter(num13,den13,x); sound(z13);

m13=fft(z13); axes(handles.axes2); plot(abs(x),'g');

title('滤波前信号的频谱'); axes(handles.axes3); plot(abs(m13),'r'); title('滤波后信号的频谱'); axes(handles.axes4); plot(x);

title('滤波前信号的波形'); axes(handles.axes5); plot(z13);

title('滤波后的信号波形');

%求滤波后的信号 26

本文来源:https://www.bwwdw.com/article/u8fv.html

Top