1、 目 录1引言12设计总体方案22.1设计要求22.2设计总体方案22.3设计内容22.4设计原理23语音信号的具体实现43.1 语音信号的采集43.2语音信号的时域分析43.3 语音信号加噪与频谱分析53.4 设计FIR和IIR数字滤波器63.5 用滤波器对加噪语音信号进行滤波103.6 比较滤波前后语音信号的波形及频谱104合成信号的具体实现144.1合成信号的产生原理144.2调试分析144.2.1混合信号分析144.2.2三种滤波器设计145 MATLAB GUI的简介175.1 MATLAB软件介绍175.2 MATLAB常用函数简介185.3设计系统界面185.3.1 系统界面设计
2、工具GUI概述185.3.2 界面设计及使用说明186心得体会21参考文献22附录231引言随着信息时代、数字世界的到来,数字信号处理已成为一门极其重要的学科和技术领域。数字信号处理是将信号以数字方式表示并处理的理论和技术,处理的内容包括对数字信号的滤波、变换、频谱分析、检测、估计、压缩、识别等一系列的加工处理。由于大规模集成电路以及数字计算机的飞速发展,加之从60年代末以来数字信号处理理论和技术的成熟和完善,用数字方法来处理信号,即数字信号处理,已逐渐取代模拟信号处理。数字信号处理技术的应用领域非常广泛,主要包括语音信号处理,图像处理,语音电话(VoIP),移动通信,数字通信网络,数码相机,
3、汽车电子,医疗,军事等领域。其中语音信号处理是数字信号处理中一个很重要的领域。语音信号是基于时间轴上的数字信号,这里我们主要讨论对语音信号进行频域上的分析。在信号分析中,频域往往包含了更多的信息。数字信号处理是利用计算机或专用处理设备,以数值计算的方法对信号进行采集、抽样、变换、综合、估值与识别等加工处理,借以达到提取信息和便于应用的目的。它在语音、雷达、图像、系统控制、通信、航空航天、生物医学等众多领域都获得了极其广泛的应用。具有灵活、精确、抗干扰强、设备尺寸小、造价低、速度快等优点。滤波器设计在数字信号处理中占有极其重要的地位,FIR数字滤波器和IIR滤波器是滤波器设计的重要组成部分。利用
4、MATLAB信号处理工具箱可以快速有效地设计各种数字滤波器。课题基于MATLAB有噪音语音信号处理的设计与实现,综合运用数字信号处理的理论知识对加噪声语音信号进行时域、频域分析和滤波。通过理论推导得出相应结论,再利用 MATLAB 作为编程工具进行计算机实现。在设计实现的过程中,使用窗函数法来设计FIR数字滤波器,用巴特沃斯、切比雪夫和双线性变法设计IIR数字滤波器,并利用MATLAB 作为辅助工具完成设计中的计算与图形的绘制。通过对对所设计滤波器的仿真和频率特性分析,可知利用MATLAB信号处理工具箱可以有效快捷地设计FIR和IIR数字滤波器,过程简单方便,结果的各项性能指标均达到指定要求。
5、数字滤波器是一种对数字信号进行处理的系统,数字滤波器完成数字信号滤波处理功能,其输入是一组数字量,其输出是经过变换的另一组数字量。它通过一定的运算关系或电路形式来改变输入信号所包含的频率成分的相对比例或滤出某些频率成分,数字滤波器具有稳定性高、精度高、灵活性大等优点。随着数字技术的发展,用数字技术实现滤波器的功能越来越受到人们的注意和广泛的应用。2设计总体方案2.1设计要求1.设计低通、带通、高通数字滤波器;2.可以对合成信号(含低频、中频、高频分量)、语音信号进行滤波;3.通过GUI界面进行控制。2.2设计总体方案掌握用双线性变换法设计IIR数字滤波器及用窗函数法设计FIR数字滤波器的具体设
6、计方法和原理,观察设计的数字滤波器的幅频特性,了解双线性变换法和窗函数法设计数字滤波器时的特点。2.3设计内容选择一个语音信号作为分析的对象,或录制一段各人自己的语音信号,对其进行频谱分析;利用MATLAB中的随机函数产生噪声加入到语音信号中,模仿语音信号被污染,并对其进行频谱分析;设计FIR和IIR数字滤波器, 并对被噪声污染的语音信号进行滤波, 分析滤波后信号的时域和频域特征,回放语音信号;最后,设计一个信号处理系统界面。在所设计的系统界面上可以选择滤波器的类型。2.4设计原理数字滤波器是指输入、输出均为数字信号,通过数值运算处理改变输入信号所含频率成分的相对比例,或者滤除某些频率成分的数
7、字器件或程序。利用模拟滤波器来设计IIR数字滤波器是最常见的方法,其设计过程是按照技术要求设计模拟滤波器,得到其系统函数Ha(s),然后经过一定的变换,得到满足要求的数字滤波器的H(z)。这种设计方法的优点是模拟滤波器的设计理论很成熟,有很多现成的公式、表格、图形和曲线可以直接使用,从而使IIR数字滤波器的设计变得很简单。常用的IIR滤波器设计方法主要有以下几种:1. 以模拟滤波器函数为基础的变换法:即先设计一满足指定条件的模拟滤波器H(s),再将该模拟滤波器转化为数字滤波器H(z)。2. 直接设计法:在z平面内,根据零、极点对系统特性的影响,调整零极点位置得H(z)。3. 最优化设计法(计算
8、机辅助设计):在某种最小化误差准则下,建立差分方程系数Ak、Bk对理想特性的逼近方程,使用迭代方法解方程组得到最佳逼近系统。由于此方法计算量大,需要借助于计算机进行设计。在此主要介绍由模拟滤波器转换为数字滤波器的设计方法。IIR滤波器的最大缺点是不容易实现线性相位,而在语音、图像、数据通信等系统普遍要求数字滤波器具有线性相位特性,FIR滤波器正是因为具有线性相位特性而获得广泛的应用。另外,H(z)永远稳定,这也是FIR滤波器的另一个突出优点。它的通频带在f1f2之间。它使信号中高于f1而低于f2的频率成分可以不受衰减地通过,而其它成分受到衰减。不同类型(高通、低通和带通)滤波器对应的Wp和Ws
9、值遵循以下规则:a高通滤波器:Wp和Ws为一元矢量且WpWs;b低通滤波器:Wp和Ws为一元矢量且WpWs;c带通滤波器:Wp和Ws为二元矢量且WpWs,如Wp=0.2,0.7,Ws=0.1,0.8;3语音信号的具体实现3.1 语音信号的采集利用PC 机上的声卡和WINDOWS 操作系统可以进行数字信号的采集。将话筒输入计算机的语音输入插口上,启动录音机。按下录音按钮,接着对话筒说话“语音信号处理”,说完后停止录音,屏幕左侧将显示所录声音的长度。点击放音按钮,可以实现所录音的重现。以文件名“speech”保存入g : MATLAB work 中。可以看到,文件存储器的后缀默认为. wav ,这
10、是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
11、)功能说明:读取从N1到N2点的采样值放在向量y中。对语音信号OriSound.wav进行采样。其程序如下: y,fs,nbits=wavered (I:1.wav); %把语音信号加载入Matlab 仿真软件平台中然后,画出语音信号的时域波形,再对语音信号进行频谱分析。MATLAB提供了快速傅里叶变换算法FFT计算DFT的函数fft,其调用格式如下:Xk=fft(y,N)参数y为被变换的时域序列向量,N是DFT变换区间长度,当N大于y的长度时,fft函数自动在y后面补零。,当N小于y的长度时,fft函数计算y的前N个元素,忽略其后面的元素。在本次设计中,我们利用fft对语音信号进行快速傅里叶
12、变换,就可以得到信号的频谱特性。其程序如下:ound(y,fs,nbits); %回放语音信号N= length (y) ; %求出语音信号的长度Y=fft(y,fs,nbits=wavread ( I:1.wav );s y,N); %傅里叶变换Axes(handles.axes1);plot(y);title(原始信号波形);plot(abs(Y);title(原始信号频谱);程序结果如下图3.1:图3.1 原始信号波形及频谱3.3 语音信号加噪与频谱分析MATLAB中产生高斯白噪声非常方便,有两个产生高斯白噪声的两个函数 。我们可以直接应用两个函数:一个是WGN,另一个是AWGN。WGN
13、用于产生高斯白噪声,AWGN则用于在某一信号中加入高斯白噪声。也可直接用randn函数产生高斯分布序列。在本次课程设计中,我们是利用MATLAB中的随机函数(rand或randn)产生噪声加入到语音信号中,模仿语音信号被污染,并对其频谱分析。Randn函数有两种基本调用格式:Randn(n)和Randn(m,n),前者产生nn服从标准高斯分布的随机数矩阵,后者产生mn的随机数矩阵。在这里,我们选用Randn(m,n)函数。语音信号添加噪声及其频谱分析的主要程序如下:y,fs,nbits=wavread (E:ppp.wav);sound(y,fs,nbits); %回放语音信号N= lengt
14、h (y) ; %求出语音信号的长度Y=fft(y,N); %傅里叶变换subplot(2,1,1);plot(y);title(原始信号波形);subplot(2,1,2);plot(abs(Y);title(原始信号频谱);程序结果如下图3.2所示:图3.2语音信号频谱分析3.4 设计FIR和IIR数字滤波器IIR滤波器和FIR滤波器的设计方法完全不同。IIR滤波器设计方法有间接法和直接法,间接法是借助于模拟滤波器的设计方法进行的。其设计步骤是:先设计过渡模拟滤波器得到系统函数H(s),然后将H(s)按某种方法转换成数字滤波器的系统函数H(z)。FIR滤波器比鞥采用间接法,常用的方法有窗函
15、数法、频率采样发和切比雪夫等波纹逼近法。对于线性相位滤波器,经常采用FIR滤波器。 对于数字高通、带通滤波器的设计,通用方法为双线性变换法。可以借助于模拟滤波器的频率转换设计一个所需类型的过渡模拟滤波器,(1)过双线性变换将其转换策划那个所需的数字滤波器。具体设计步骤如下:1.确定所需类型数字滤波器的技术指标。2.将所需类型数字滤波器的边界频率转换成相应的模拟滤波器的边界频率,转换公式为=2/T tan(0.5)3. 将相应类型的模拟滤波器技术指标转换成模拟低通滤波器技术指标。4.设计模拟低通滤波器。5.通过频率变换将模拟低通转换成相应类型的过渡模拟滤波器。6.采用双线性变换法将相应类型的过渡
16、模拟滤波器转换成所需类型的数字滤波器。脉冲响应不变法的主要缺点是会产生频谱混叠现象,使数字滤波器的频响偏离模拟滤波器的频响特性。为了克服之一缺点,可以采用双线性变换法。利用模拟滤波器设计IIR数字低通滤波器的步骤:1.确定数字低通滤波器的技术指标:通带边界频率、通带最大衰减,阻带截止频率、阻带最小衰减。2.将数字低通滤波器的技术指标转换成相应的模拟低通滤波器的技术指标。3.按照模拟低通滤波器的技术指标设计及过渡模拟低通滤波器。4.用双线性变换法,模拟滤波器系统函数转换成数字低通滤波器系统函数。(2)如前所述,IIR滤波器和FIR滤波器的设计方法有很大的区别。下面我们着重介绍用窗函数法设计FIR
17、滤波器的步骤。如下:1.根据对阻带衰减及过渡带的指标要求,选择串窗数类型(矩形窗、三角窗、汉宁窗、哈明窗、凯塞窗等),并估计窗口长度N。先按照阻带衰减选择窗函数类型。原则是在保证阻带衰减满足要求的情况下,尽量选择主瓣的窗函数。2.构造希望逼近的频率响应函数。3.计算h(n).。4.加窗得到设计结果。我们根据语音信号的特点给出有关滤波器的技术指标:低通滤波器的性能指标:fp=1000Hz,fs=1200Hz,As=100db ,Ap=1dB高通滤波器的性能指标:fp=4000Hz,fs=3500Hz,As=100dB,Ap=1dB;带通滤波器的性能指标:fp1=1200Hz,fp2=3000hZ
18、,fs1=1000Hz,fs2=3200Hz,As=100dB,Ap=1dB在Matlab中,可以利用函数fir1设计FIR滤波器,利用函数butter,cheby1和ellip设计IIR滤波器,利用Matlab中的函数freqz画出各步步器的频率响应。hn=fir1(M,wc,window),可以指定窗函数向量window。如果缺省window参数,则fir1默认为哈明窗。其中可选的窗函数有Rectangular Barlrtt Hamming Hann Blackman窗,其相应的都有实现函数。MATLAB信号处理工具箱函数buttp buttor butter是巴特沃斯滤波器设计函数,其
19、有5种调用格式,本课程设计中用到的是N,wc=butter(N,wc,Rp,As,s),该格式用于计算巴特沃斯模拟滤波器的阶数N和3dB截止频率wc。MATLAB信号处理工具箱函数cheblap,cheblord和cheeby1是切比雪夫I型滤波器设计函数。我们用到的是cheeby1函数,其调用格式如下:B,A=cheby1(N,Rp,wpo,ftypr)B,A=cheby1(N,Rp,wpo,ftypr,s) 函数butter,cheby1和ellip设计IIR滤波器时都是默认的双线性变换法,所以在设计滤波器时只需要代入相应的实现函数即可。下面我们将给出FIR和IIR数字滤波器的主要程序。%
20、=IIR低通滤波器=Ft=4000;Fp=1000;Fs=2000;wp=2*pi*Fp/Ft;ws=2*pi*Fs/Ft;fp=2*Fp*tan(wp/2);fs=2*Fs*tan(wp/2);n11,wn11=buttord(wp,ws,1,50,s); %求低通滤波器的阶数和截止频率b11,a11=butter(n11,wn11,s); %求S域的频率响应的参数 num11,den11=bilinear(b11,a11,0.5); %双线性变换实现S域到Z域的变换 h,w=freqz(num11,den11); %根据参数求出频率响应plot(w*8000*0.5/pi,abs(h);l
21、egend(用butter设计);利用上述程序用巴特沃兹设计的低通滤波器如下图3.3所示:图3.3 IIR低通滤波器%=IIR带通=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); %求S域的频率响应参数num2,d
22、en2=lp2bp(b12,a12,sqrt(wp1*wp2),bw);%将S域低通参数转为带通的num12,den12=bilinear(num2,den2,0.5);%双线性变换实现S域到Z域的转换h,w=freqz(num12,den12); %根据参数求出频率响应plot(w*8000*0.5/pi,abs(h);axis(0 4000 0 1.5);legend(用butter设计);利用上述程序用巴特沃兹设计的带通滤波器如下图3.4所示: 图3.4 IIR带通滤波器%=IIR高通=Ft=8000;Fp=4000;Fs=3500;wp1=tan(pi*Fp/Ft); %高通到低通滤波
23、器参数转换ws1=tan(pi*Fs/Ft);wp=1;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);plot(w*21000*0.5/pi,abs(h);title(IIR高通滤波器);legend
24、(用cheby1设计);利用上述程序用切比雪夫设计的高通滤波器如下图3.5所示:图3.5IIR高通滤波器3.5 用滤波器对加噪语音信号进行滤波用自己设计的各滤波器分别对加噪的语音信号进行滤波,在Matlab中,FIR滤波器利用函数fftfilt对信号进行滤波,IIR滤波器利用函数filter对信号进行滤波。函数fftfilt用的是重叠相加法实现线性卷积的计算。调用格式为:y=fftfilter(h,x,M)。其中,h是系统单位冲击响应向量;x是输入序列向量;y是系统的输出序列向量;M是有用户选择的输入序列的分段长度,缺省时,默认的输入向量的重长度M=512。函数filter的调用格式:yn=f
25、ilter(B,A.xn),它是按照直线型结构实现对xn的滤波。其中xn是输入信号向量,yn输出信号向量。3.6 比较滤波前后语音信号的波形及频谱%=IIR低通滤波器= y,fs,nbits=wavread (D:/1.wav);n = length (y) ; %求出语音信号的长度 s=y; S=fft(s); %傅里叶变换z11=filter(num11,den11,s);sound(z11);m11=fft(z11); %求滤波后的信号subplot(2,2,1);plot(abs(S),g);title(滤波前信号的频谱);grid;subplot(2,2,2);plot(abs(m1
26、1),r);title(滤波后信号的频谱);grid;subplot(2,2,3);plot(s);title(滤波前信号的波形);grid;subplot(2,2,4);上面设计出的三种滤波器均可满足设计指标:在f0Hz的阻带内最小衰减。比较三种滤波器的幅频特性可以看出巴特沃斯滤波器在阻带内有更好的衰减特性,故IIR低通滤波器选择巴特沃斯型滤波器。在GUI界面的显示波形如下图3.6所示:图3.6 IIR低通语音信号频谱波形图% =IIR带通滤波器=y,fs,nbits=wavread (D:/1.wav);n = length (y) ; %求出语音信号的长度 s=y; S=fft(s);
27、%傅里叶变换z12=filter(num12,den12,s);sound(z12);m12=fft(z12); %求滤波后的信号subplot(2,2,1);plot(abs(S),g);title(滤波前信号的频谱);subplot(2,2,2);plot(abs(m12),r);title(滤波后信号的频谱);subplot(2,2,3);plot(s);title(滤波前信号的波形);subplot(2,2,4);plot(z12);title(滤波后的信号波形);上面设计出的四种滤波器均可满足设计指标:在的通带内最大衰减,在的阻带内最小衰减,。比较四种滤波器的幅频特性可以看出巴特沃斯
28、滤波器在阻带内有更好的衰减特性,故IIR带通滤波器选择巴特沃斯型滤波器。下图3.7是IIR数字滤波器的语音信号的频谱波形图:图3.7 IIR带通语音信号频谱波形图% =IIR高通滤波器=y,fs,nbits=wavread (D:/1.wav);n = length (y) ; %求出语音信号的长度s=y; S=fft(s); %傅里叶变换z13=filter(num13,den13,s);sound(z13);m13=fft(z13); %求滤波后的信号subplot(2,2,1);plot(abs(S),g);title(滤波前信号的频谱);subplot(2,2,2);plot(abs(
29、m13),r);title(滤波后信号的频谱);subplot(2,2,3);plot(s); title(滤波前信号的波形);subplot(2,2,4);plot(z13);title(滤波后的信号波形);上面设计出的三种滤波器均可满足设计指标:在f4800的通带内最大衰减。比较三种滤波器的幅频特性可以看出巴特沃斯滤波器在阻带内有更好的衰减特性,故IIR高通滤波器选择巴特沃斯型滤波器。如下图3.8所示高通IIR语音信号频谱波形图:图3.8高通IIR语音信号频谱波形图4合成信号的具体实现4.1合成信号的产生原理抑制载波单频调幅信号的数学表达式为:如式2.1: 其中,称为载波,为载波频率,称为
30、单频调制信号,为调制正弦波信号频率,且满足。由(2.1)式可见,所谓抑制载波单频调制信号,就是两个正弦信号相乘,它有2个频率成分:和频+,差频-,这两个频率成分关于载波频率对称。所以,1路抑制载波单频调幅信号的频谱图是关于载波频率对称的两根谱线。显然,当调制频率和(或)载波频率不同时,可以得到包含不同频率成分的单频调幅信号,将几路不同频率成分的单频调幅信号相加后形成混合信号。4.2调试分析4.2.1混合信号分析利用MATLAB编写混合信号的函数并运行如下图4.1所示:从波形中可以看出,已经将三路不同成分的频率混合到一起,接下来的就是要设计三个滤波器将其滤波开来,得到相对应的频率成分。图4.1
31、混合信号时域和幅频特性曲线图4.2.2三种滤波器设计设定可以分离st中三路抑制载波单频调幅信号的三个滤波器设计低通滤波器、带通滤波器和高通滤波器的通带截止频率和阻带截止频率;假定要求滤波器的通带最大衰减为1dB,阻带最小衰减为100dB,编程调用MATLAB滤波器设计函数分别设计这三个数字滤波器,并绘图显示其幅频特性曲线。低通,高通,带通的滤波器幅频特性曲。如下4.2,4.3,4.4所示:图4.2 FIR合成信号低通滤波器幅频特性曲线图图4.3 FIR合成信号高通滤波器幅频特性曲线图图4.4 FIR合成信号带通通滤波器幅频特性曲线图从以上图形可以知道,利用参数去设计出三个相对应的滤波器对混合信
32、号进行滤除波形,在选取参数时要能正确的选择,才能对应的去分离相对应的信号,否则容易叠加信号,不符合设计要求。且FIR数字滤波器相对于IIR数字滤波器的最大优点是能够做到严格线性相位,所以在设计数字滤波器时可以根据设计参数和要求进行合适的选择设计方法,使得设计出来的结果最能符合设计要求。5 MATLAB GUI的简介MATLAB 是美国MathWorks公司出品的商业数学软件,用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境,主要包括MATLAB和Simulink两大部分。MATLAB是矩阵实验室(Matrix Laboratory)的简称,和Mathematica、
33、Mape并称为三大数学软件。它在数学类科技应用软件中在数值计算方面首屈一指。MATLAB可以进行矩阵运算、绘制函数和数据、实现算法、创建用户界面、连接其他编程语言的程序等,主要应用于工程计算、控制设计、信号处理与通讯、图像处理、信号检测、金融建模设计与分析等领域。MATLAB的基本数据单位是矩阵,它的指令表达式与数学、工程中常用的形式十分相似,故用MATLAB来解算问题要比用C,FORTRAN等语言完相同的事情简捷得多,并且mathwork也吸收了像Maple等软件的优点,使MATLAB成为一个强大的数学软件。在新的版本中也加入了对C,FORTRAN,C+ ,JAVA的支持。可以直接调用,用户
34、也可以将自己编写的实用程序导入到MATLAB函数库中方便自己以后调用。 MATALB 可以创建图形用户界面GUI ( GraphicalUser Interface) ,它是用户和计算机之间交流的工具。MATLAB 将所有GUl 支持的用户控件都集成在这个环境中并提供界面外观、属性和行为响应方式的设置方法,随着版本的提高,这种能力还会不断加强。而且具有强大的绘图功能,可以轻松的获得更高质量的曲线图。MATALB 可以创建图形用户界面GUI ( GraphicalUser Interface) ,它是用户和计算机之间交流的工具。MATLAB 将所有GUl 支持的用户控件都集成在这个环境中并提供界
35、面外观、属性和行为响应方式的设置方法,随着版本的提高,这种能力还会不断加强。而且具有强大的绘图功能,可以轻松的获得更高质量的曲线图。5.1 MATLAB软件介绍Matlab是由matrix和laboratory两个英文单词的前三个字母组合而成,是“Matrix Laboratory”的缩写,意为“矩阵实验室”,它是MathWorks公司于1984年推出的一套高性能的数值计算可视理等方面产生了大量的矩阵及其相应的计算问题。自己去编写大量的繁复的计算程序,不仅会消耗大量的时间和精力,减缓工作进程,而且往往质量不高美国Mathwork软件公司推出的Matlab软件就是为了给人们提供一个方便的数值计算
36、平台而设计的。Matlab是一个交互式的系统,它的基本运算单元是不需指定维数的矩阵,按照IEEE的数值计算标准(能正确处理无穷数Inf(Infinity)、无定义数NaN(not-a-number)及其运算)进行计算。系统提供了大量的矩阵及其它运算函数,可以方便地进行一些很复杂的计算,而且运算效率极高。Matlab命令和数学中的符号、公式非常接近,可读性强,容易掌握,还可利用它所提供的编程语言进行编程完成特定的工作。除基本部分外,Matlab还根据各专门领域中的特殊需要提供了许多可选的工具箱,如应用于自动控制领域的Control System工具箱和神经网络中Neural Network工具箱
37、等。 5.2 MATLAB常用函数简介(1)wavread函数:y,fs,bits=wavread(Blip)用于读取语音,采样值放在向量y中,fs表示采样频率(Hz),bits表示采样位数。sound(x,fs,bits); 用于对声音的回放。向量y则就代表了一个信号(也即一个复杂的“函数表达式”)也就是说可以像处理一个信号表达式一样处理这个声音信号。(2)FFT函数:FFT用于序列快速傅立叶变换。其调用格式为:y=fft(x)。其中,x是序列,y是序列的FFT,x可以为一向量或矩阵:若x为一向量,y是x的FFT,且和x相同长度。若x为一矩阵,则y是对矩阵的每一列向量进行FFT。(3)Fir
38、1函数:fir1函数是基于窗函数的FIR滤波器设计标准频率响应形状。其调用格式为b=fir1(N,we,ftype,window)。ftype和window可以默认。5.3设计系统界面5.3.1 系统界面设计工具GUI概述图形用户界面(graphical user interfaces ,GUI)则是由窗口、光标、按键、菜单、文字说明等对象(objects)构成的一个用户界面。用户通过一定的方法(如鼠标或键盘)选择、激活这些图形对象,使计算机产生某种动作或变化,比如实现计算、绘图等。在MATLAB中GUI是一中包含多种对象的图形窗口,并为GUI开发提供一个方便高效的集成开发环境GUIDE。GU
39、IDE主要是一个界面设计工具集,MAYLAB将所有GUI支持度控件都集成在这个环境中,并提供界面外观、属性和行为响应方式的设置方法。GUIDE将设计好的GUI保存在一个FIG文件中,同时生成M文件框架。 FIG文件:包括GUI图形窗口及其所有后裔的完全描述,包括所有对象属性的属性值。它是一个二进制文件调用hsave课保存图形窗口时将生车该文件。M文件包括GUI设计、控件函数以及定义为子函数的用户控件回调函数,主要用于控制GUI展开时的各种特征。 GUI创建包括界面设计和控件编程两部分,主要步骤如下。第一步:通过设置GUIDE应用程序的选项来运行GUIDE;第二步:使用界面设计编辑器进行面设计;
40、第三步:编写控件行为响应控制(即回调函数)代码。5.3.2 界面设计及使用说明 MATALB 可以创建图形用户界面GUI ( GraphicalUser Interface) ,它是用户和计算机之间交流的工具。MATLAB 将所有GUl 支持的用户控件都集成在这个环境中并提供界面外观、属性和行为响应方式的设置方法,随着版本的提高,这种能力还会不断加强。而且具有强大的绘图功能,可以轻松的获得更高质量的曲线图。首先我们新建一个GUI文件:File/New/GUI 如下图5.1所示:图5.1进入GUI界面框图选择Blank GUI(Default)。其次,进入GUI开发环境以后添加两个编辑文本框,6
41、个静态文本框,和一个按钮,布置如下图5.2所示:图5.2 GUI界面开发环境布置好各控件以后,我们就可以来为这些控件编写程序来实现两数相加的功能了。最后,使用说明。单击相应的按钮,便跳出对应的界面,如按下按钮“低通滤波器”,就得到如图5.3所示结果图5.3系统运行界面6心得体会经过为期两周的课程设计实践,我完全自主地完成了既定的任务,实现了课程设计的要求,这使我对DSP课程有了更深一步的认识和了解,要想学好它重在实践,要通过不断的实际操作才能更好地学习和运用知识,并且基本掌握了运用MATLAB软件进行滤波器的设计和GUI界面的设计。通过课程设计这一实践环节,加深了我对本学期所学知识的理解,也提
42、高了我运用所学知识分析问题和解决实际问题的能力。在此过程中我也发现自己好多不足之处,首先是自己对所学的基础知识掌握不深,还有对理论知识的运用还有欠缺,通过这次课程设计实践,使我在这几个方面都有所提高。由于时间原因,这次课程设计最大的遗憾是没能实现对语音信号进行实时录入,然后进行采样分析,接下来我会努力尝试实现这项功能。在这个过程中,我也曾经因为实践经验的缺乏失落过,也曾经因设计成功而热情高涨。生活就是这样,汗水预示着结果也见证着收获。劳动是人类生存生活永恒不变的话题。虽然这只是一次的极简单的课程制作(基于MATLAB的语音信号分析及滤波),可是平心而论,也耗费了我们不少的心血,这就让我不得不佩
43、服专门搞设计开发的技术前辈,才意识到老一辈对我们社会的付出,为了人们的生活更美好,他们为我们社会所付出多少心血啊! 还有,通过这两周的实践学习,我不仅认识和体验了实际运用中数字滤波器设计过程和语音信号的处理过程,更从中深刻认识到了“世上无难事,只要肯攀登”的道理。虽然自己在此过程中曾熬夜编写程序、设计GUI界面和写课程设计说明书,但是当最后自己用亲手编写的程序完成了既定的任务时,当看着程序一步步实现了自己的设计思想时,当别人向我请教GUI的设计时,心中喜悦和自豪之情真是难于言表,我想这种成功的喜悦是自己努力付出的结果。我想,凭着这种不懈的精神奋斗,还有什么困难能拦得住自己前进的步伐呢?通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。在设计的过程中遇到问题,可以说得是困难重重,这毕竟第一次做的,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所