文刀慧明 发表于 2006-6-27 20:37

MATLAB 在数字信号中的应用

<Palign=center><B>摘要:</B><FONT size=3>录制一段个人的语音信号,并对录制的信号进行采样;画出采样后语音信号的时域波形和频谱图;给定滤波器的性能指标,采用窗函数法和双线性变换设计滤波器,并画出滤波器的频率响应;然后用自己设计的滤波器对采集的信号进行滤波,画出滤波后信号的时域波形和频谱,并对滤波前后的信号进行对比,分析信号的变化;回放语音信号;最后,设计一个信号处理系统界面。</FONT></P>
<P ><p><FONT face="Times New Roman"> </FONT></p></P>
<P ><p><FONT face="Times New Roman"> </FONT></p></P>
<P ><p><FONT face="Times New Roman"> </FONT></p></P>
<P ><p><FONT face="Times New Roman"> </FONT></p></P>
<P ><p><FONT face="Times New Roman"> </FONT></p></P>
<P ><B>目录</B><B><FONT face="Times New Roman"> </FONT></B><B>:</B><B><p></p></B></P>
<P ><B><FONT face="Times New Roman">1.    </FONT></B><B>摘要</B><B><p></p></B></P>
<P ><B><FONT face="Times New Roman">1.1</FONT></B><B>题目</B><B><p></p></B></P>
<P ><B><FONT face="Times New Roman">1.2</FONT></B><B>摘要说明</B><B><p></p></B></P>
<P ><B><FONT face="Times New Roman">1.3</FONT></B><B>对</B><B><FONT face="Times New Roman">MATLAB</FONT></B><B>的认识</B><B><p></p></B></P>
<P ><B><FONT face="Times New Roman">2.    </FONT></B><B>正文</B><B><p></p></B></P>
<P ><FONT face="Times New Roman"><B></B><B>2.1</B></FONT><B>实验内容</B><B><FONT face="Times New Roman">                   <p></p></FONT></B></P>
<P ><B><FONT face="Times New Roman">2.1.1</FONT></B><B>语音信号的采集和滤波器性能指标</B><B><p></p></B></P>
<P ><B><FONT face="Times New Roman">2.1.2 </FONT></B><B>根据低通滤波器性能指标设计低通滤波器</B><B><p></p></B></P>
<P ><B><FONT face="Times New Roman">2.1.3 </FONT></B><B>根据高通滤波器性能指标设计高通滤波器</B><B><p></p></B></P>
<P ><B><FONT face="Times New Roman">2.1.4 </FONT></B><B>根据带通滤波器性能指标设计带通滤波器</B><B><p></p></B></P>
<P ><B><FONT face="Times New Roman">2.1.5</FONT></B><B>用滤波器对语音信号进行滤波并输出波形</B><B><p></p></B></P>
<P ><B><FONT face="Times New Roman">2.1.6</FONT></B><B>语音回放</B><B><p></p></B></P>
<P ><B><FONT face="Times New Roman">2.1.7</FONT></B><B>设计系统界面</B><B><p></p></B></P>
<P ><B><FONT face="Times New Roman">2.2</FONT></B><B>实习结论</B><B><p></p></B></P>
<P ><B><FONT face="Times New Roman">2.2.1</FONT></B><B>实习总结</B><B><p></p></B></P>
<P ><B><FONT face="Times New Roman">2.2.2</FONT></B><B>实习感想与收获</B><B><p></p></B></P>
<P ><B><FONT face="Times New Roman">3.    </FONT></B><B>谢辞</B><B><p></p></B></P>
<P ><B><FONT face="Times New Roman">4.    </FONT></B><B>参考文献</B><B><p></p></B></P>
<P ><B><p><FONT face="Times New Roman"> </FONT></p></B></P>
<P ><B><p><FONT face="Times New Roman"> </FONT></p></B></P>
<P >1.<FONT face="Times New Roman"> </FONT>绪论<p></p></P>
<P ><FONT size=3>本报告采用“录制采集语音信号;对录制的信号进行采样;绘制采样后语音信号的时域波形和频谱图;设计滤波器,并画出滤波器的频率响应;运用所设计的滤波器对采集的信号进行滤波,绘制滤波后信号的时域波形和频谱,设计一个信号处理系统界面。”的先后顺序的顺序设计思路编写的。<p></p></FONT></P>
<P >2.语音信号的采集。<p></p></P>
<P ><FONT size=3>利用<FONT face="Times New Roman">windows</FONT>自带的录音机,录制一段语音,时间在<FONT face="Times New Roman">1s</FONT>以内。然后在<FONT face="Times New Roman">matlab</FONT>平台下,利用函数<FONT face="Times New Roman">wavread</FONT>对语音信号进行采样。通过<FONT face="Times New Roman">wavread</FONT>函数的使用,理解采样频率,采样位数。其程序如下:</FONT></P>
<P ><FONT face="Times New Roman" size=3>=wavread('e:\wcl.wav',);</FONT></P>
<P ><FONT size=3><FONT face="Times New Roman">sound(y,fs,bits);<p></p></FONT></FONT></P>
<P >3.语音信号的频谱分析<p></p></P>
<P ><FONT size=3>利用<FONT face="Times New Roman">MATLAB</FONT>首先画出语音信号的时域波形;然后对语音进行快速傅立叶变换,得到信号的频谱特性,从而加强对频谱特性的理解。</FONT></P>
<P ><FONT size=3>其程序如下:</FONT></P>
<P ><FONT size=3><FONT face="Times New Roman">Y=fft(y,4096);<p></p></FONT></FONT></P>
<P ><FONT size=3><FONT face="Times New Roman">figure(1);<p></p></FONT></FONT></P>
<P ><FONT size=3><FONT face="Times New Roman">plot(y);title('</FONT>语音信号的时域波形<FONT face="Times New Roman">');<p></p></FONT></FONT></P>
<P ><FONT size=3><FONT face="Times New Roman">figure(2);<p></p></FONT></FONT></P>
<P ><FONT size=3><FONT face="Times New Roman">freqz(Y);title('</FONT>语音信号的频普特性<FONT face="Times New Roman">');<p></p></FONT></FONT></P>
<P ><FONT size=3>运行图形为:</FONT></P>
<P ><v:shapetype><v:stroke joinstyle="miter"></v:stroke><v:formulas><v:f eqn="if lineDrawn pixelLineWidth 0"></v:f><v:f eqn="sum @0 1 0"></v:f><v:f eqn="sum 0 0 @1"></v:f><v:f eqn="prod @2 1 2"></v:f><v:f eqn="prod @3 21600 pixelWidth"></v:f><v:f eqn="prod @3 21600 pixelHeight"></v:f><v:f eqn="sum @0 0 1"></v:f><v:f eqn="prod @6 1 2"></v:f><v:f eqn="prod @7 21600 pixelWidth"></v:f><v:f eqn="sum @8 21600 0"></v:f><v:f eqn="prod @7 21600 pixelHeight"></v:f><v:f eqn="sum @10 21600 0"></v:f></v:formulas><v:path connecttype="rect" gradientshapeok="t" extrusionok="f"></v:path><lock aspectratio="t" v:ext="edit"></lock></v:shapetype><v:shape><v:imagedata><FONT size=3></FONT></v:imagedata></v:shape><v:shape><v:imagedata><FONT size=3></FONT></v:imagedata></v:shape></P>
<P >4.设计数字滤波器和画出其频率响应<p></p></P>
<P ><FONT size=3>给定各滤波器的性能指标如下:</FONT></P>
<P ><FONT size=3>低通滤波器性能指标<FONT face="Times New Roman">   fb=1000Hz</FONT>,<FONT face="Times New Roman">fc</FONT>=<FONT face="Times New Roman">1200Hz</FONT>,<FONT face="Times New Roman"> As</FONT>=<FONT face="Times New Roman">100db</FONT>,<FONT face="Times New Roman">Ap</FONT>=<FONT face="Times New Roman">1db</FONT>。</FONT></P>
<P ><FONT size=3>高通滤波器性能指标<FONT face="Times New Roman">   fs</FONT>=<FONT face="Times New Roman">4800Hz</FONT>,<FONT face="Times New Roman">fb</FONT>=<FONT face="Times New Roman">5000Hz</FONT>,<FONT face="Times New Roman">As</FONT>=<FONT face="Times New Roman">100db</FONT>,<FONT face="Times New Roman">Ap</FONT>=<FONT face="Times New Roman">1db</FONT>。</FONT></P>
<P ><FONT size=3>带通滤波器性能指标<FONT face="Times New Roman">   fb1</FONT>=<FONT face="Times New Roman">1200Hz</FONT>,<FONT face="Times New Roman">fb2</FONT>=<FONT face="Times New Roman">3000Hz</FONT>,<FONT face="Times New Roman">fc1</FONT>=<FONT face="Times New Roman">1000Hz</FONT>,<FONT face="Times New Roman">fc2</FONT>=<FONT face="Times New Roman">3200Hz</FONT>,<FONT face="Times New Roman">As</FONT>=<FONT face="Times New Roman">100db</FONT>,<FONT face="Times New Roman">Ap</FONT>=<FONT face="Times New Roman">1db</FONT>。</FONT></P>
<P >4.1双线性变换法设计低通滤波器<p></p></P>
<P ><FONT face="Times New Roman" size=3>clear;close all;</FONT></P>
<P ><FONT face="Times New Roman" size=3>=wavread('e:\wcl.wav',);</FONT></P>
<P ><FONT face="Times New Roman" size=3>sound(y,fs,bits);</FONT></P>
<P ><FONT face="Times New Roman" size=3>Y=fft(y,4096);</FONT></P>
<P ><FONT face="Times New Roman" size=3>fb=1000;fc=1200;As=100;Ap=1;fs=22050;</FONT></P>
<P ><FONT face="Times New Roman" size=3>wc=2*fc/fs; wb=2*fb/fs;</FONT></P>
<P ><FONT face="Times New Roman" size=3>=ellipord(wc,wb,Ap,As);</FONT></P>
<P ><FONT face="Times New Roman" size=3>=ellip(n,Ap,As,wn);</FONT></P>
<P ><FONT face="Times New Roman" size=3>figure(1);</FONT></P>
<P ><FONT face="Times New Roman" size=3>freqz(b,a,512,fs);</FONT></P>
<P ><FONT face="Times New Roman" size=3>x=filter(b,a,y);</FONT></P>
<P ><FONT face="Times New Roman" size=3>X=fft(x,4096);</FONT></P>
<P ><FONT face="Times New Roman" size=3>figure(2);</FONT></P>
<P ><FONT size=3><FONT face="Times New Roman">subplot(2,2,1);plot(y);title('</FONT>滤波前信号波形<FONT face="Times New Roman">');</FONT></FONT></P>
<P ><FONT size=3><FONT face="Times New Roman">subplot(2,2,2);plot(Y);title('</FONT>滤波前信号频谱<FONT face="Times New Roman">');</FONT></FONT></P>
<P ><FONT size=3><FONT face="Times New Roman">Subplot(2, 2 ,3);plot(x);title('</FONT>滤波后信号波形<FONT face="Times New Roman">');</FONT></FONT></P>
<P ><FONT size=3><FONT face="Times New Roman">Subplot(2, 2 ,4);plot(abs(X));title('</FONT>滤波后信号频谱<FONT face="Times New Roman">');</FONT></FONT></P>
<P ><FONT face="Times New Roman" size=3>sound(x,fs,bits);</FONT></P>
<P ><FONT size=3>其运行图形如下图:</FONT></P>
<P ><v:shape><v:imagedata><FONT size=3></FONT></v:imagedata></v:shape></P>
<P >4.2用双线性变换法设计高通滤波器<p></p></P>
<P ><FONT face="Times New Roman" size=3>clear;close all</FONT></P>
<P ><FONT face="Times New Roman" size=3>=wavread('e:\wcl.wav',);</FONT></P>
<P ><FONT face="Times New Roman" size=3>sound(y,fs,bits);</FONT></P>
<P ><FONT face="Times New Roman" size=3>Y=fft(y,4096);</FONT></P>
<P ><FONT face="Times New Roman" size=3>fs=4800,fb=5000,As=100,Ap=1,fc=22050;</FONT></P>
<P ><FONT face="Times New Roman" size=3>ws=2*fs/fc;wb=2*fb/fc;</FONT></P>
<P ><FONT face="Times New Roman" size=3>=ellipord(ws,wb,Ap,As);</FONT></P>
<P ><FONT face="Times New Roman" size=3>=ellip(n,Ap,As,wn);</FONT></P>
<P ><FONT face="Times New Roman" size=3>figure(1);</FONT></P>
<P ><FONT face="Times New Roman" size=3>freqz(b,a,fc);</FONT></P>
<P ><FONT face="Times New Roman" size=3>x=filter(b,a,y);</FONT></P>
<P ><FONT face="Times New Roman" size=3>X=fft(x,4096);</FONT></P>
<P ><FONT face="Times New Roman" size=3>figure(2);</FONT></P>
<P ><FONT size=3><FONT face="Times New Roman">subplot(2,2,1);plot(y);title('</FONT>滤波前信号波形<FONT face="Times New Roman">');</FONT></FONT></P>
<P ><FONT size=3><FONT face="Times New Roman">subplot(2,2,2);plot(Y);title('</FONT>滤波前信号频谱<FONT face="Times New Roman">');</FONT></FONT></P>
<P ><FONT size=3><FONT face="Times New Roman">Subplot(2, 2 ,3);plot(x);title('</FONT>滤波后信号波形<FONT face="Times New Roman">');</FONT></FONT></P>
<P ><FONT size=3><FONT face="Times New Roman">Subplot(2, 2 ,4);plot(abs(X));title('</FONT>滤波后信号频谱<FONT face="Times New Roman">');</FONT></FONT></P>
<P ><FONT face="Times New Roman" size=3>sound(x,fs,bits);</FONT></P>
<P ><FONT size=3>其运行图形如下图:</FONT></P>
<P ><p><FONT face="Times New Roman" size=3> </FONT></p></P>
<P ><v:shape><v:imagedata><FONT face="Times New Roman" size=3></FONT></v:imagedata></v:shape><p></p></P>
<P >4.3 用双线性变换法设计带通滤波器设计<p></p></P>
<P ><FONT face="Times New Roman" size=3>clear;close all</FONT></P>
<P ><FONT face="Times New Roman" size=3>=wavread('e:\wcl.wav',);</FONT></P>
<P ><FONT face="Times New Roman" size=3>sound(y,fs,bits);</FONT></P>
<P ><FONT face="Times New Roman" size=3>Y=fft(y,4096);</FONT></P>
<P ><FONT face="Times New Roman" size=3>fb1=1200;fb2=3000;fc1=1000;fc2=3200;fs=22050;</FONT></P>
<P ><FONT face="Times New Roman" size=3>W1=2*fb1/fs;W2=2*fc1/fs;</FONT></P>
<P ><FONT face="Times New Roman" size=3>W3=2*fb2/fs;W4=2*fc2/fs;</FONT></P>
<P ><FONT face="Times New Roman" size=3>Wp=;</FONT></P>
<P ><FONT face="Times New Roman" size=3>Ws=;</FONT></P>
<P ><FONT face="Times New Roman" size=3>Rp=1;</FONT></P>
<P ><FONT face="Times New Roman" size=3>Rs=100;</FONT></P>
<P ><FONT size=3><FONT face="Times New Roman">=ellipord(Wp,Ws,Rp,Rs)             </FONT></FONT></P>
<P ><FONT size=3><FONT face="Times New Roman">=ellip(N,Rp,Rs,wc)   </FONT></FONT></P>
<P ><FONT size=3><FONT face="Times New Roman">=freqz(b,a);                     </FONT></FONT></P>
<P ><FONT face="Times New Roman" size=3>x=filter(b,a,y);</FONT></P>
<P ><FONT face="Times New Roman" size=3>X=fft(x,4096);</FONT></P>
<P ><FONT size=3><FONT face="Times New Roman">subplot(2,2,1);plot(y);title('</FONT>滤波前信号波形<FONT face="Times New Roman">');</FONT></FONT></P>
<P ><FONT size=3><FONT face="Times New Roman">subplot(2,2,2);plot(Y);title('</FONT>滤波前信号频谱<FONT face="Times New Roman">');</FONT></FONT></P>
<P ><FONT size=3><FONT face="Times New Roman">Subplot(2, 2 ,3);plot(x);title('</FONT>滤波后信号波形<FONT face="Times New Roman">');</FONT></FONT></P>
<P ><FONT size=3><FONT face="Times New Roman">Subplot(2, 2 ,4);plot(abs(X));title('</FONT>滤波后信号频谱<FONT face="Times New Roman">'); sound(x,fs,bits);</FONT></FONT></P>
<P ><FONT size=3>其运行图形如下图:</FONT></P>
<P ><p><FONT face="Times New Roman" size=3> </FONT></p></P>
<P ><p><FONT face="Times New Roman"> </FONT></p></P>
<P ><v:shape><v:imagedata><FONT face="Times New Roman"></FONT></v:imagedata></v:shape></P>
<P >5. 用滤波器对信号进行滤波。 <p></p></P>
<P ><FONT size=3>用自己设计的各滤波器分别对采集的信号进行滤波,在<FONT face="Times New Roman">matlab</FONT>中,<FONT face="Times New Roman">FIR</FONT>滤波器利用函数<FONT face="Times New Roman">fftfilt</FONT>对信号进行滤波,<FONT face="Times New Roman">IIR</FONT>滤波器利用函数<FONT face="Times New Roman">filter</FONT>对信号进行滤波。<p></p></FONT></P>
<P >6.<FONT face="Times New Roman"> </FONT>比较滤波前后语音信号的波形及频谱。<p></p></P>
<P ><FONT size=3>在一个窗口同时画出滤波前后的波形及频谱。</FONT></P>
<P ><FONT size=3>其程序如下:</FONT></P>
<P ><FONT size=3><FONT face="Times New Roman">x</FONT>=<FONT face="Times New Roman">filter</FONT>(<FONT face="Times New Roman">b</FONT>,<FONT face="Times New Roman">a</FONT>,<FONT face="Times New Roman">y</FONT>)<FONT face="Times New Roman">;</FONT></FONT></P>
<P ><FONT size=3><FONT face="Times New Roman">X</FONT>=<FONT face="Times New Roman">fft(x,4096);</FONT></FONT></P>
<P ><FONT size=3><FONT face="Times New Roman">subplot(2,2,1);plot(y);title('</FONT>滤波前信号波形<FONT face="Times New Roman">');</FONT></FONT></P>
<P ><FONT size=3><FONT face="Times New Roman">subplot(2,2,2);plot(Y);title('</FONT>滤波前信号频谱<FONT face="Times New Roman">');</FONT></FONT></P>
<P ><FONT size=3><FONT face="Times New Roman">Subplot(2 2 3);plot(x);title(‘</FONT>滤波后信号波形<FONT face="Times New Roman">’);</FONT></FONT></P>
<P ><FONT size=3><FONT face="Times New Roman">Subplot(2 2 4);plot(abs(X));title(‘</FONT>滤波后信号频谱<FONT face="Times New Roman">’); </FONT></FONT></P>
<P ><FONT size=3>其运行图形如下图:</FONT></P>
<P >7.<FONT face="Times New Roman"> </FONT>回放语音信号。<p></p></P>
<P ><FONT size=3>在<FONT face="Times New Roman">matlab</FONT>中,函数<FONT face="Times New Roman">sound</FONT>可以对声音进行回放。其调用格式:<FONT face="Times New Roman">sound</FONT>(<FONT face="Times New Roman">x</FONT>,<FONT face="Times New Roman">fs</FONT>,<FONT face="Times New Roman">bits</FONT>);可以感觉滤波前后的声音有变化。程序为:<FONT face="Times New Roman">sound(x,fs,bits);<p></p></FONT></FONT></P>
<P >8.设计系统界面<p></p></P>
<P ><FONT size=3>为了使编制的程序操作方便,设计处理系统的用户界面。在设计的系统界面上可以选择滤波器的类型,输入滤波器的参数,显示滤波器的频率响应。</FONT></P>
<P ><FONT size=3>主程序如(<FONT face="Times New Roman">main.m</FONT>)下:</FONT></P>
<P ><FONT size=3><FONT face="Times New Roman">alternation=menu('</FONT>请选择滤波器<FONT face="Times New Roman">','</FONT>低通滤波器<FONT face="Times New Roman">','</FONT>带通滤波器<FONT face="Times New Roman">','</FONT>高通滤波器<FONT face="Times New Roman">','</FONT>退出<FONT face="Times New Roman">');</FONT></FONT></P>
<P ><FONT face="Times New Roman" size=3>switch alternation</FONT></P>
<P ><FONT size=3><FONT face="Times New Roman">    case 1,low; main;</FONT></FONT></P>
<P ><FONT size=3><FONT face="Times New Roman">    case 2,band; main;</FONT></FONT></P>
<P ><FONT size=3><FONT face="Times New Roman">    case 3,high; main;</FONT></FONT></P>
<P ><FONT size=3><FONT face="Times New Roman">    case 4,break</FONT>;</FONT></P>
<P ><FONT face="Times New Roman" size=3>end</FONT></P>
<P ><FONT size=3>运行如右图:</FONT><v:shape><FONT size=3><FONT face="Times New Roman"> <v:imagedata></v:imagedata></FONT></FONT></v:shape><FONT face="Times New Roman" size=3>       </FONT></P>
<P >
<P ><FONT size=3></FONT></P><p><FONT face="Times New Roman" size=3> </FONT></p></P>

wschaoren 发表于 2006-7-16 19:06

不错啊,谢谢

babyinthesky 发表于 2006-7-18 09:18

嗯,不错

salvia 发表于 2006-8-2 22:20

非常好
谢谢了

smallkin 发表于 2006-8-3 13:25

太好了,楼主,能把你的这篇实习全文共享以下吗?
smallkin@126.com

小黄牛 发表于 2013-4-23 14:28

恩,不错
页: [1]
查看完整版本: MATLAB 在数字信号中的应用