基于MATLAB的数字滤波器设计(DOC)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
目录
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.2IIR数字滤波器设计 (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很快成为应用学科等领域不可或缺的基础软件。它可以快速有效地实现数字滤波器的设计、分析和仿真,极大地减轻了工作量,有利于滤波器设计的最优化。
2 设计任务
2.1设计内容
设计题目为基于MATLAB的数字滤波器设计所设计的数字滤波器应完成以下功能:
1.设计低通、带通、高通数字滤波器;
2.可以对合成信号(含低频、中频、高频分量)、语音信号进行滤波;
3.通过GUI界面进行控制。
2.2设计要求
1.根据题目要求进行数字滤波器总体设计。
2.完成数字滤波器具体设计。
(1)输入信号的选定。(2)确定设计方法、设计指标。
3.滤波器程序的设计。
(1)完整源程序。(2)运行结果图。
4.书写设计说明书。
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);