目录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);plot(abs(Y));title('原始信号频谱');程序结果如下图:图 3.1 语言信号波形及频谱4 基于MATLAB的数字滤波器的设计4.1数字滤波器的设计4.1.1数字滤波器的基本概念滤波器从功能上分类可以分为经典滤波器和现代滤波器,经典滤波器主要用于在频率域的滤波选取,现代滤波器是通过复杂的统计学理论,用于在大量的同频率信号中选取需要的信号数据,数字滤波器从实现方法上可以分为无限冲击响应滤波器和有限冲击响应滤波器。
它们是用单位采样响应h(n)的特性来区分的,IIR滤波器的h(n)是无限长序列,而FIR滤波器的h(n)是有限长序列。
4.1.2 IIR滤波器设计思想IIR滤波器设计思想是:利用已有的模拟滤波器设计理论,首先根据设计指标设计一个合适的模拟滤波器,然后再通过脉冲响应不变法或双线性变换法,完成从模拟到数字的变换。
常用的模拟滤波器有巴特沃斯(Butterworth)滤波器、切比雪夫(Chebyshev) 滤波器、椭圆(Ellipse)滤波器、贝塞尔(Bessel)滤波器等,这些滤波器各有特点,供不同设计要求选用。
滤波器的模拟数字变换,通常是复变函数的映射变换,也必须满足一定的要求。
利用双线性变化法设计滤波器的变换原理:双线性变换法是使数字滤波器的频率响应与模拟滤波器的频率响应相似的一种变换方法。
为了克服脉冲响应不变法的多值映射这一缺点,首先把整个s平面压缩变换到某一中介的s1平面的一横带里,然后再通过标准变换关系将此横带变换到整个z平面上去,这样就使s平面与z平面是一一对应关系,消除了多值变换性,同时也就消除了频谱混叠现象。
利用完全设计法设计数字滤波器的步骤:1.将设计指标归一化处理。
2.根据归一化频率,确定最小阶数N 和频率参数Wn。
可供选用的阶数选择函数有:buttord,cheblord,cheb2ord,ellipord 等。
3.运用最小阶数N 设计模拟低通滤波器原型。
根据最小阶数直接设计模拟低通滤波器原型,用到的函数有:butter, chebyl,cheby2, ellip 和bessel。
如[B,A] = butter(N,Wn,'type') 设计'type'型巴特沃斯(Butterworth)滤波器filter。
N为滤波器阶数,Wc为截止频率,type 决定滤波器类型,type= high,设计高通IIR滤波器,ftype= stop,设计带阻IIR滤波器。
4.再用freqz 函数验证设计结果。
4.2 IIR数字滤波器设计4.2.1 IIR低通滤波器设计根据数字滤波器的设计原理,首先将数字域的指标转化为模拟域的指标设计模拟低通滤波器,然后应用双线性变换法将模拟滤波器转化为数字滤波器将指标转换成归一化模拟低通滤波器的指标,通过归一化的模拟低通滤波器阶数N和3dB截止频率的计算,将模拟域频率变换成模拟低滤波器H(s),并用双线性变换法将H(s)转换成数字低通滤波器H(z),由此得到低通数字滤波器。
IIR低通滤波器的设计程序为:Ft=8000;Fp=1000;Fs=1200;As=100 ;Ap=1;wp=2*pi*Fp/Ft;ws=2*pi*Fs/Ft;fp=2*Fp*tan(wp/2);fs=2*Fs*tan(ws/2);[n11,wn11]=buttord(wp,ws,1,50,'s');[b11,a11]=butter(n11,wn11,'s');[num11,den11]=bilinear(b11,a11,0.5);[h,w]=freqz(num11,den11);axes(handles.axes1);plot(w*8000*0.5/pi,abs(h));legend('用butter设计');图 4.1 IIR低通滤波器读入信号对信号傅里叶变换进行频谱分析,利用filter函数滤波,对得到的信号傅里叶变换进行频谱分析,与滤波前进行比较。
并在滤波前后用sound函数播放语音信号,观察滤波前后的变化。
图 4.2 滤波前后信号的波形和频谱比较分析滤波前后信号的变化,波形图变窄,频谱变化表明:信号的低频率段被保留,高频率段被滤除。
分析滤波前后的声音变化,滤波后声音明显变低而沉闷,这说明滤波器设计基本符合指标要求。
4.2.2 IIR带通滤波器设计IIR带通滤波器的设计程序为:Ft=8000;Fp1=1200;Fp2=3000;Fs1=1000;Fs2=3200;As=100;Ap=1;wp1=tan(pi*Fp1/Ft);wp2=tan(pi*Fp2/Ft);ws1=tan(pi*Fs1/Ft);ws2=tan(pi*Fs2/Ft);w=wp1*wp2/ws2;bw=wp2-wp1;wp=1;ws=(wp1*wp2-w.^2)/(bw*w);[n12,wn12]=buttord(wp,ws,1,50,'s');[b12,a12]=butter(n12,wn12,'s');[num2,den2]=lp2bp(b12,a12,sqrt(wp1*wp2),bw);[num12,den12]=bilinear(num2,den2,0.5);[h,w]=freqz(num12,den12);axes(handles.axes1);plot(w*8000*0.5/pi,abs(h));axis([0 4000 0 1.5]);legend('用butter设计');图 4.3 IIR带通滤波器读入信号对信号傅里叶变换进行频谱分析,利用filter函数滤波,对得到的信号傅里叶变换进行频谱分析,与滤波前进行比较。