MATLAB語言實現(xiàn)對模擬信號的處理_第1頁
MATLAB語言實現(xiàn)對模擬信號的處理_第2頁
MATLAB語言實現(xiàn)對模擬信號的處理_第3頁
MATLAB語言實現(xiàn)對模擬信號的處理_第4頁
MATLAB語言實現(xiàn)對模擬信號的處理_第5頁
已閱讀5頁,還剩27頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、*大學課程設計題目要求: 1.錄制一段自己的語音信號,并對錄制的信號進行采樣; 2.畫出采樣后的語音信號的時域波形和頻譜圖; 3.給定濾波器的性能指標,采用窗函數(shù)法和雙線性變換法設計濾波器, 并劃出濾波器的頻域響應; 4.用該濾波器對采集的信號進行濾波,畫出濾波后信號的時域波形和頻譜, 并對濾波前后的信號進行對比,分析信號的變化; 5.回放語音信號; 6.設計一個信號處理系統(tǒng)界面。 報告要求:根據(jù)自己錄制的語音信號選擇合適的濾波器,并按照題目要求完成報告;程序1:用matlab對原始語音信號進行分析,畫出它的時域波形和頻譜fs=22050; %語音信號采樣頻率為22050x1=wavread(

2、c:teng.wav); %讀取語音信號的數(shù)據(jù),賦給變量x1sound(x1,22050); %播放語音信號y1=fft(x1,1024); %對信號做1024點fft變換f=fs*(0:511)/1024;figure(1)plot(x1) %做原始語音信號的時域圖形title(原始語音信號);xlabel(time n);ylabel(fuzhi n);figure(2)freqz(x1) %繪制原始語音信號的頻率響應圖title(頻率響應圖)figure(3)subplot(2,1,1);plot(abs(y1(1:512) %做原始語音信號的fft頻譜圖title(原始語音信號fft頻

3、譜)subplot(2,1,2);plot(f,abs(y1(1:512);title(原始語音信號頻譜)xlabel(hz);ylabel(fuzhi);程序2:給原始的語音信號加上一個高頻余弦噪聲,頻率為5khz。畫出加噪后的語音信號時域和頻譜圖,與原始信號對比,可以很明顯的看出區(qū)別。fs=22050; x1=wavread(c:teng.wav);f=fs*(0:511)/1024;t=0:1/22050:(size(x1)-1)/22050;%將所加噪聲信號的點數(shù)調整到與原始信號相同au=0.03;d=au*cos(2*pi*5000*t);%噪聲為5khz的余弦信號x2=x1+d;s

4、ound(x2,22050);%播放加噪聲后的語音信號y2=fft(x2,1024);figure(1)plot(t,x2)title(加噪后的信號);xlabel(time n);ylabel(fuzhi n);figure(2)subplot(2,1,1);plot(f,abs(y1(1:512);title(原始語音信號頻譜);xlabel(hz);ylabel(fuzhi);subplot(2,1,2);plot(f,abs(y2(1:512);title(加噪后的信號頻譜);xlabel(hz);ylabel(fuzhi);程序3:雙線性變換法設計butterworth濾波器fs=2

5、2050;x1=wavread(h:課程設計2shuzi.wav);t=0:1/22050:(size(x1)-1)/22050;au=0.03;d=au*cos(2*pi*5000*t);x2=x1+d;wp=0.25*pi;ws=0.3*pi;rp=1;rs=15;fs=22050;ts=1/fs;wp1=2/ts*tan(wp/2); %將模擬指標轉換成數(shù)字指標ws1=2/ts*tan(ws/2); n,wn=buttord(wp1,ws1,rp,rs,s);%選擇濾波器的最小階數(shù)z,p,k=buttap(n); %創(chuàng)建butterworth模擬濾波器bap,aap=zp2tf(z,p,

6、k);b,a=lp2lp(bap,aap,wn); bz,az=bilinear(b,a,fs); %用雙線性變換法實現(xiàn)模擬濾波器到數(shù)字濾波器的轉換h,w=freqz(bz,az); %繪制頻率響應曲線figure(1)plot(w*fs/(2*pi),abs(h)gridxlabel(頻率hz)ylabel(頻率響應幅度)title(butterworth)f1=filter(bz,az,x2);figure(2)subplot(2,1,1)plot(t,x2) %畫出濾波前的時域圖title(濾波前的時域波形);subplot(2,1,2)plot(t,f1); %畫出濾波后的時域圖tit

7、le(濾波后的時域波形);sound(f1,22050); %播放濾波后的信號f0=fft(f1,1024);f=fs*(0:511)/1024;figure(3)y2=fft(x2,1024);subplot(2,1,1);plot(f,abs(y2(1:512); %畫出濾波前的頻譜圖title(濾波前的頻譜)xlabel(hz);ylabel(fuzhi);subplot(2,1,2)f1=plot(f,abs(f0(1:512); %畫出濾波后的頻譜圖title(濾波后的頻譜)xlabel(hz);ylabel(fuzhi);程序4:窗函數(shù)法設計濾波器:fs=22050;x1=wavr

8、ead(h:課程設計2shuzi.wav);t=0:1/22050:(size(x1)-1)/22050;au=0.03;d=au*cos(2*pi*5000*t);x2=x1+d;wp=0.25*pi;ws=0.3*pi;wdelta=ws-wp;n=ceil(6.6*pi/wdelta); %取整wn=(0.2+0.3)*pi/2;b=fir1(n,wn/pi,hamming(n+1); %選擇窗函數(shù),并歸一化截止頻率figure(1)freqz(b,1,512)f2=filter(bz,az,x2)figure(2)subplot(2,1,1)plot(t,x2)title(濾波前的時域

9、波形);subplot(2,1,2)plot(t,f2);title(濾波后的時域波形);sound(f2,22050); %播放濾波后的語音信號f0=fft(f2,1024);f=fs*(0:511)/1024;figure(3)y2=fft(x2,1024);subplot(2,1,1);plot(f,abs(y2(1:512);title(濾波前的頻譜)xlabel(hz);ylabel(fuzhi);subplot(2,1,2)f2=plot(f,abs(f0(1:512);title(濾波后的頻譜)xlabel(hz);ylabel(fuzhi);目錄一、 緒論2二、 正文31 設計

10、思路32 流程圖 12三、小結13五、參考文獻14六、謝辭14七、附錄14 緒論本次課程設計是利用matlab對信號進行采樣、分析以及根據(jù)信號的特點設計出合適的數(shù)字濾波器對信號進行濾波。matlab名字是由matrix和laboratory兩個詞的前三個字母組合而成的。它是mathworks公司于982年推出的一套高性能的數(shù)值計算和可視化數(shù)學軟件。它一般用于數(shù)值分析、矩陣運算、數(shù)字信號處理、建模和系統(tǒng)控制和優(yōu)化等應用程序,并集應用程序和圖形于一便于使用的集成環(huán)境中。由于matlab不需定義數(shù)組的維數(shù),并給出矩陣函數(shù)、特殊矩陣專門的庫函數(shù),使之在求解諸如信號處理、建模、系統(tǒng)識別、控制、優(yōu)化等領域

11、的問題時,顯得大為簡捷、高效、方便,這是其它高級語言所不能比擬的。matlab中包括了被稱作工具箱(toolbox)的各類應用問題的求解工具。工具箱實際上是對matlab進行擴展應用的一系列matlab函數(shù)(稱為m文件),它可用來求解各類學科的問題,包括信號處理、圖象處理、控制系統(tǒng)辨識、神經網(wǎng)絡等。其主要內容涉及了從波形產生到濾波器設計和參量建模以及信號譜分析的范圍,核心領域為濾波器設計和頻譜分析。工具箱除去提供了用于信號處理的命令函數(shù)外,還提供了一組基于cpu開發(fā)的借口工具。隨著matlab版本的不斷升級,其所含的工具箱的功能也越來越豐富,因此,應用范圍也越來越廣泛,成為涉及數(shù)值分析的各類工

12、程師不可不用的工具。 matlab5.3中包括了圖形界面編輯gui,改變了以前單一的“在指令窗通過文本形的指令進行各種操作”的狀況。這可讓使用者也可以象vb vc vj delphi等那樣進行一般的可視化的程序編輯。在命令窗口(matlab command window)鍵入simulink,就出現(xiàn)(simulink) 窗口。以往十分困難的系統(tǒng)仿真問題,用simulink只需拖動鼠標即可輕而易舉地解決問題,這也是近來受到重視原因所在。本次課程設計主要涉及的內容是,離散時間信號與系統(tǒng)的時域、頻域表示,以及信號通過系統(tǒng)的時域、頻域分析及其變換域分析。matlab數(shù)據(jù)庫中提供了與之相對應的函數(shù),如f

13、ilter、fftfilt、 freqz 。課設過程中最重要的部分是濾波器的設計,數(shù)字濾波器設計和頻譜分析是數(shù)字信號處理的兩個主要應用。數(shù)字濾波器設計包括了無限沖擊響應(iir)和有限沖擊響應(fir)濾波器設計,在這一方面,matlab的這一工具庫提供了極為豐富的設計工具。頻譜分析又可進一步分為線性頻譜分析和非線性頻譜分析。其中,線性頻譜分析的理論基礎為傅立葉變換,因此所使用的matlab函數(shù)主要為fft,ifft,此外,工具箱中還給出了各種窗函數(shù)。對于非線性頻譜分析,matlab也提供了多種成熟算法的相應函數(shù)。一 設計思路本次課設題目是用matlab語言實現(xiàn)對模擬信號的處理。根據(jù)課程設計的

14、任務和要求,設計思路如下:首先利用電腦windows自帶的錄音機錄制一段幾秒鐘自己的語音信號,如圖:錄制的語音信號音頻格式pcm,平均數(shù)據(jù)速率 8.00kb/秒,采樣速率 8.00kb/秒,音頻采樣大小為8位,頻道為單聲道,從音頻參數(shù)可以得出對錄制的信號采樣的頻率為8000kz,本人錄制的語音信號命名為 teng.wav錄制號后將teng.wav文件放在c盤,其路徑為c:teng.wav.然后利用matlab語句wavread進行采樣:y,fs,n=wavread(c:teng.wav); %將采樣后的語音信號賦給變量y再對采樣后的語音信號y做2048點的fft變換,利用如下語句:y=fft(

15、y,2048) 根據(jù)設計要求畫出語音信號時域圖plot(y),以及頻譜圖plot(abs(y)。如圖用sound(y,fs,n)語句播放語音。分析采樣后語音信號的頻譜圖,任意選取一段噪聲信號,本人選擇了幅值為0.5,1.8k的余弦噪聲信號,為了使噪聲信號能加入道語音信號中,則所加噪聲信號的點數(shù)調整到與原始信號相同,否則不能相加,f=fs*(0:511)/2048;t=0:1/8000:(size(y)-1)/8000; %將所加噪聲信號的點數(shù)調整到與原始信號相同則噪聲信號表達式為d=au*cos(2*pi*1800*t); 畫出噪聲時域波形plot(t,d)和頻譜plot(f,abs(y2(1

16、:512),如下圖:只有噪聲信號與語音信號的點數(shù)相同才可以將噪聲加入語音信號中x2=y+d; %將噪聲加入到語音信號中畫出加入噪聲后的語音信號時域圖plot(t,x2)然后畫出加入噪聲后語音信號頻譜圖并與原語音信號頻譜圖比較:根據(jù)加入噪聲以后的語音信號的頻譜圖,選定濾波器的類型。通常分fir濾波器和iir濾波器,再根據(jù)分析結果得出濾波器的性能指標。根據(jù)本次課程設計的要求采用雙線性變換法和窗函數(shù)法來設計濾波器。雙線性變換法是先設計一個模擬iir濾波器,然后映射成一個等效的數(shù)字濾波器。雙線性變換法有巴特沃思濾波器和切貝雪夫濾波器。窗函數(shù)法有矩形窗,三角窗,漢寧窗,海明窗,布拉克曼窗。本人采用了巴特

17、沃思濾波器和海明窗來進行濾波器的設計。下面就巴特沃思濾波器和海明窗設計濾波器詳細介紹:(一)巴特沃思濾波器屬于iir濾波器,需要用到的有關語句如下:(1) n,wn=buttord(wp,ws,rp,rs)(2) n,wn=buttord(wp,ws,rp,rs,s)格式(1)對應數(shù)字濾波器,式中wp,ws分別使通帶和阻帶的截至頻率,實際上它們是歸一化頻率,其值在01之間,1對應抽樣頻率的一半。對低通和高通濾波器,wp,ws都是標量,對帶通和帶阻濾波器,wp,ws都是12的向量。rp,rs分別是通帶和阻帶的衰減,單位為db。n是求出的相應低通濾波器的階次,wn是求出的3db頻率,它和wp稍有不

18、同。格式(2)對應模擬濾波器,式中各個變量含義和格式(1)相同,但wp,ws及wn的單位為rad/s,因此,它們實際上是頻率。(3) z,p,k=buttap(n)此語句是用來設計模擬低通原型濾波器g(p),n是欲設計的低通原型濾波器的階次,z,p和k分別是設計出的g(p)的極點、零點及增益。(4) b,a=lp2lp(b,a,wo) 或 b,a=lp2hp(b,a,wo)(5) b,a=lp2bp(b,a,wo,bw)或b,a=lp2bs(b,a,wo,bw)上式功能是將模擬低通原型濾波器g(p)分別轉換為實際的低通、高通、帶通及帶阻濾波器。式中b,a分別是模擬低通原型濾波器g(p)的分子、

19、分母多項式的系數(shù)向量,b,a分別是轉換后的h(s)的分子、分母多項式的系;在(4)中,wo是低通或高通濾波器的截至頻率;在(5)中,wo是帶通或帶阻濾波器的中心頻率,bw是其帶寬。本次課程的設計的巴特沃思濾波器是低通濾波器,故用到式子b,a=lp2lp(b,a,wo).(6) bz,az=bilinear(b,a,fs)上式語句是實現(xiàn)雙線性變換,即由模擬濾波器h(s)得到數(shù)字濾波器h(z).式中b,a 分別是h(s)的分子、分母多項式的系數(shù)向量,bz,az分別是h(z)的分子、分母多項式的系數(shù)向量,fs是抽樣頻率。在這里fs=8000.根據(jù)含有噪聲的語音信號頻譜圖分析,本人設置wp=0.25*

20、pi;ws=0.3*pi;rp=1;rs=15進行設計巴特沃思低通濾波器。(二)海明窗濾波器屬于fir型濾波器; 海明(hamming)窗(又稱為改進的升余弦窗)窗函數(shù): (n)= rn(n)其頻率響應的幅度函數(shù)為w()=0.54wr()+0.23 0.54wr()+0.23 ,(當n1)主瓣寬度為42/n=8/n,過渡帶寬3.32/n。(7) b=fir1(n,f,m)上式中f是頻率向量,其值在01之間,m是與f相對應的所希望的幅頻響應,不指定窗函數(shù)類型時,則自動選擇海明窗。本次課程設計用到類似語句為:n=ceil(6.6*pi/wdelta); %濾波器長度wn=(0.2+0.3)*pi/

21、2;b=fir1(n,wn/pi,hamming(n+1); %選擇窗函數(shù),并歸一化截止頻率根據(jù)含有噪聲的語音信號頻譜圖分析,選取wp=0.25*pi; ws=0.3*pi;濾波器設計好后,畫出兩種濾波器的頻率響應圖:巴特沃思濾波器海明窗濾波器然后用已設計出來的濾波器對采集的語音信號進行濾波,畫出濾波后信號的時域波形和頻譜,并對濾波前后的信號進行對比。經過巴特沃思濾波器濾波的時域波形圖和頻譜圖分別如下:經過海明窗濾波器濾波濾波前后時域波形圖及頻譜圖分別如下:分析信號的變化,根據(jù)兩種濾波器濾波前后頻譜圖可發(fā)現(xiàn),在1200hz后的信號基本被濾除掉了,回放語音信號:sound(x2,8000); %

22、播放含有噪聲的語音信號sound(f1,8000); %播放經過巴特沃思濾波器濾波后的語音信號sound(f2,8000); %播放經過海明窗濾波器濾波后的語音信號濾波后的語音效果有明顯的沉悶的感覺,其原因是濾除噪聲的同時也濾除了一部分的語音信號,但總體上其濾波后的語音與原語音信號相差無幾,也徹底的把噪聲濾除掉了。最后用 matlab 設計一信號處理系統(tǒng)界面。首先在matlab工作區(qū)鍵入guide,回車,出現(xiàn)一窗口,選擇blank gui(default)。如界面圖1界面圖1點擊ok確定后彈出一運行窗口,如界面圖2界面圖2菜單設置:選擇名為menu editor的圖標后,出現(xiàn)另一窗口,添加新的

23、菜單,在label框中鍵入菜單名,子菜單還需在callback中鍵入連接的文件名,如界面圖3界面圖3界面圖4二 流程圖錄音噪聲播放原音導入語音文件 時域波形和頻譜信號時域波形和頻譜信號窗函數(shù)法雙線性變化法海明窗濾波器加入噪聲的語音信號信號巴特沃思濾波器時域波形和頻譜信號頻率響應頻率響應濾波語音重放濾波濾波前后時域及頻譜圖比較濾波前后時域及頻譜圖比較三 小結本次課程設計是以數(shù)字信號處理為理論基礎,利用matlab對信號進行分析,處理語音信號以及設計濾波器。課程設計題目是matlab語言實現(xiàn)對模擬信號的處理課程設計,需要對語音信號進行采樣、分析并濾波。從這次課程設計中,我認識到了書上的理論知識很好

24、的和實際結合到了一起,首先要采集一段語音信號,因為原始的語音信號是模擬的,所以要對原始的語音信號進行采樣,是通過函數(shù)wavread()來實現(xiàn)的,使我很好的掌握了這個函數(shù)的用法。數(shù)字濾波器設計包括了無限沖擊響應(iir)和有限沖擊響應(fir)濾波器設計,在本次課設中,iir濾波器本人設計了一種:巴特沃思低通濾波器,fir濾波器本人設計了海明窗低通濾波器。它們的性能指標是根據(jù)含有噪聲的語音信號頻譜圖的特點設計的。在平時的理論學習中我們學習了數(shù)字濾波器的基本結構,無限長單位沖激響應數(shù)字濾波器的設計方法和有限長單位沖激響應數(shù)字濾波器的設計方法,著重學習了利用模擬濾波器設計iir數(shù)字濾波器,從理論知識

25、可知利用模擬濾波器設計數(shù)字濾波器就是要把s平面映射到z平面,使模擬系統(tǒng)函數(shù)h(s)變換成所需的數(shù)字濾波器的系統(tǒng)函數(shù)h(z),一般是利用沖激響應不變法、階躍響應不變法、雙線性變換法來實現(xiàn)模擬濾波器到數(shù)字濾波器的映射。在純理論的學習中,我們學生對濾波器的設計還不了解。通過這次課設,使我對濾波器的設計有了更深層次的的認識。在整個程序中,多次使用了matlab的繪圖功能,畫出了低通濾波器的頻率響應圖,濾波前后的語音信號的時域圖和頻譜圖,使我感受到了其強大的繪圖功能,使得可以很直觀的看出信號的種種特性,從而可以更加容易的判斷出對信號的處理是否達到了預期的目的??偟膩碚f,這次課程設計幫助我鞏固了平常所學習

26、的理論知識,使我對所學的理論知識有了一個更深層次的理解和掌握,同時加強了我對matlab的運用能力,從而能夠借助軟件來更好的分析,處理信號和設計濾波器。在整個課程設計過程中,編寫程序與調試程序中出現(xiàn)了一系列的問題經過日夜認真琢磨分析后,最終改正了錯誤,把課程設計順利完成,下面就主要碰到的問題分析:錄音為雙聲道,未轉換為單聲道,以至于將噪聲怎么也加不進語音信號中,后經老師提點,又經過認真分析發(fā)現(xiàn)原來錄音為雙聲道,而噪聲卻是單聲道,所以最后將錄制的聲音信號轉換為單聲道。最后終于把這個問題解決了。參考文獻1、數(shù)字信號處理教程 程佩青 清華大學出版社2、數(shù)字信號處理及matlab實現(xiàn) 余成波 楊菁 楊

27、如民 清華大學出版社謝辭本次數(shù)字信號處理課程設計能順利的完成,首先得要感謝李偉平老師的指導,同時也要感謝在課程設計中給予我?guī)椭耐瑢W們,是大家大量查閱資料,共享資料,然后有一個很好的交流。在本次課程設計中,認識到一個團隊的力量是無窮的,每個人貢獻一點點微薄之力,合在一起就是一股強大的力量。同時我認識到數(shù)字信號處理的理論知識是非常重要的,是本次課程設計的基石,所以在此要特別謝謝余慧娟老師在平時教學過程中對我們嚴格要求,使我們有一個比較扎實的理論基礎,同時能熟練運用matlab語言也是本次課程設計的關鍵所在,也為這次順利完成課設提供了保證。附錄附錄一:主程序(1). 原始信號的采樣將錄制的語音信號

28、與所有的程序放置在同一個文件夾,在程序中通過wavread()函數(shù)來讀取這段原始信號,并繪出采樣后其時域波形圖和頻譜圖。程序如下:y,fs,n=wavread(c:teng.wav); %將采樣后的語音信號賦給變量yy=fft(y,2048) %對采樣后的語音信號做2048點fft變換 figure(1);subplot(211);plot(y); %采樣后語音信號的波形 title(原始信號波形);xlabel(時間n);ylabel(幅值n);subplot(212);plot(abs(y); %采樣后語音信號的頻譜 title(原始信號頻譜);xlabel(hz);ylabel(幅值n)

29、;圖1.原始信號時域波形及頻譜(2). 噪聲y,fs,n=wavread(c:teng.wav); f=fs*(0:511)/2048;t=0:1/8000:(size(y)-1)/8000; %將所加噪聲信號的點數(shù)調整到與原始信號相同au=0.5; %噪聲幅值d=au*cos(2*pi*1800*t); %噪聲為1khz的余弦信號y2=fft(d,2048); %對噪聲信號做2048點fft變換 figure(2)subplot(2,1,1);plot(t,d)title(噪聲信號時域圖);xlabel(時間n);ylabel(幅值n);subplot(2,1,2);plot(f,abs(y

30、2(1:512);title(噪聲信號頻譜);xlabel(hz);ylabel(幅值n);圖2.噪聲信號頻譜(3).將噪聲信號加入原始信號中 y,fs,n=wavread(c:teng.wav); %將采樣后的語音信號賦給變量yf=fs*(0:511)/2048;t=0:1/8000:(size(y)-1)/8000; %將所加噪聲信號的點數(shù)調整到與原始信號相同au=0.5; %噪聲幅值d=au*cos(2*pi*1800*t); %噪聲為1.8khz的余弦信號x2=y+d; %將噪聲加入到語音信號中y1=fft(y,2048); %對信號做2048點fft變換y2=fft(x2,2048)

31、; %對加入噪聲以后的語音信號做2048點fft變換 figure(1)plot(t,x2)title(加噪后的信號);xlabel(時間n);ylabel(幅值n);figure(2)subplot(2,1,1);plot(f,abs(y1(1:512);title(原始語音信號頻譜);xlabel(hz);ylabel(幅值n);subplot(2,1,2);plot(f,abs(y2(1:512);title(加噪后的信號頻譜);xlabel(hz);ylabel(幅值n);圖3.加噪聲后的信號圖圖4.原始語音信號頻譜圖及加入噪聲后的信號頻譜圖(4). 濾波器的類型雙線性變換法設計巴特沃

32、思低通濾波器y,fs,n=wavread(c:teng.wav); %將采樣后的語音信號賦給變量yf=fs*(0:511)/2048;t=0:1/8000:(size(y)-1)/8000; %將所加噪聲信號的點數(shù)調整到與原始信號相同au=0.5; %噪聲幅值d=au*cos(2*pi*1800*t); %噪聲為1.8khz的余弦信號x2=y+d; %將噪聲加入到語音信號中wp=0.25*pi;ws=0.3*pi;rp=1;rs=15;fs=8000;ts=1/fs;wp1=2/ts*tan(wp/2); %將模擬指標轉換成數(shù)字指標ws1=2/ts*tan(ws/2); n,wn=buttor

33、d(wp1,ws1,rp,rs,s);%選擇濾波器的最小階數(shù)z,p,k=buttap(n); %創(chuàng)建butterworth模擬濾波器bap,aap=zp2tf(z,p,k);b,a=lp2lp(bap,aap,wn); bz,az=bilinear(b,a,fs); %用雙線性變換法實現(xiàn)模擬濾波器到數(shù)字濾波器的轉換h,w=freqz(bz,az); %繪制頻率響應曲線figure(1)plot(w*fs/(2*pi),abs(h)gridxlabel(頻率hz)ylabel(頻率響應幅度)title(butterworth)f1=filter(bz,az,x2);figure(2)subplo

34、t(2,1,1)plot(t,x2) %畫出濾波前的時域圖title(濾波前的時域波形);subplot(2,1,2)plot(t,f1); %畫出濾波后的時域圖title(濾波后的時域波形);f0=fft(f1,2048);f=fs*(0:511)/2048;figure(3)y2=fft(x2,2048);subplot(2,1,1);plot(f,abs(y2(1:512); %畫出濾波前的頻譜圖title(濾波前的頻譜)xlabel(hz);ylabel(幅值);subplot(2,1,2)f1=plot(f,abs(f0(1:512); %畫出濾波后的頻譜圖title(濾波后的頻譜)

35、xlabel(hz);ylabel(幅值); 圖5巴特沃斯低通濾波器 圖6濾波前后時域波形圖 圖7濾波前后頻譜圖窗函數(shù)法設計濾波器:y,fs,n=wavread(c:teng.wav); %將采樣后的語音信號賦給變量yf=fs*(0:511)/2048;t=0:1/8000:(size(y)-1)/8000; %將所加噪聲信號的點數(shù)調整到與原始信號相同au=0.5; %噪聲幅值d=au*cos(2*pi*1800*t); %噪聲為1.8khz的余弦信號x2=y+d; %將噪聲加入到語音信號中wp=0.25*pi;ws=0.3*pi;wdelta=ws-wp;n=ceil(6.6*pi/wdel

36、ta); %濾波器長度wn=(0.2+0.3)*pi/2;b=fir1(n,wn/pi,hamming(n+1); %選擇海明窗函數(shù),并歸一化截止頻率figure(1)freqz(b,1,512)f2=filter(bz,az,x2)figure(2)subplot(2,1,1)plot(t,x2)title(濾波前的時域波形);subplot(2,1,2)plot(t,f2);title(濾波后的時域波形);f0=fft(f2,2048);f=fs*(0:511)/2048;figure(3)y2=fft(x2,2048);subplot(2,1,1);plot(f,abs(y2(1:512

37、);title(濾波前的頻譜)xlabel(hz);ylabel(幅值);subplot(2,1,2)f2=plot(f,abs(f0(1:512);title(濾波后的頻譜)xlabel(hz);ylabel(幅值);圖8海明窗濾波器圖9濾波前后時域波形圖圖10濾波前后頻譜圖(5). 用sound函數(shù)播放語音信號程序如下:y,fs,n=wavread(c:teng.wav); %將采樣后的語音信號賦給變量ysound(y,fs,n); %播放語音信號sound(d,8000) %播放噪聲信號sound(x2,8000); %播發(fā)加入噪聲以后的語音信號sound(f1,8000); %播放經過

38、巴特沃思濾波器濾波后的信號sound(f2,8000); %播放經過海明窗濾波器濾波后的語音信號附錄二:界面設計的程序function varargout = dsp(varargin)% dsp m-file for dsp.fig% dsp, by itself, creates a new dsp or raises the existing% singleton*.% h = dsp returns the handle to a new dsp or the handle to% the existing singleton*.% dsp(callback,hobject,event

39、data,handles,.) calls the local% function named callback in dsp.m with the given input arguments.% dsp(property,value,.) creates a new dsp or raises the% existing singleton*. starting from the left, property value pairs are% applied to the gui before dsp_openingfunction gets called. an% unrecognized

40、 property name or invalid value makes property application% stop. all inputs are passed to dsp_openingfcn via varargin.% *see gui options on guides tools menu. choose gui allows only one% instance to run (singleton).% see also: guide, guidata, guihandles% edit the above text to modify the response t

41、o help dsp% last modified by guide v2.5 10-jan-2008 15:24:46% begin initialization code - do not editgui_singleton = 1;gui_state = struct(gui_name, mfilename, . gui_singleton, gui_singleton, . gui_openingfcn, dsp_openingfcn, . gui_outputfcn, dsp_outputfcn, . gui_layoutfcn, , . gui_callback, );if nar

42、gin & isstr(varargin1) gui_state.gui_callback = str2func(varargin1);endif nargout varargout1:nargout = gui_mainfcn(gui_state, varargin:);else gui_mainfcn(gui_state, varargin:);end% end initialization code - do not edit% - executes just before dsp is made visible.function dsp_openingfcn(hobject, eventdata, handles, varargin)% this function has no output args, see outputfcn.% hobject handle to figure% eventdata reserved - to be defined in a future version of matlab% handles st

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論