2023年全國碩士研究生考試考研英語一試題真題(含答案詳解+作文范文)_第1頁
已閱讀1頁,還剩28頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、<p><b>  電子信息工程學(xué)院</b></p><p><b>  DSP課程設(shè)計報告</b></p><p>  題 目:  設(shè)計回聲信號產(chǎn)生器   </p><p>  專業(yè)班級:           </p><p>  學(xué)  號:

2、 </p><p>  姓  名:    </p><p>  指導(dǎo)教師:            </p><p>  二〇一一 年 六 月 二十三 日</p><p><b>  摘要 </b></p><p>  數(shù)字信號處理(Digit

3、al Signal Processing)技術(shù),從20世紀60年代以來,隨著計算機科學(xué)和信息科學(xué)發(fā)展,數(shù)字處理技術(shù)應(yīng)運而生并得以快速發(fā)展。</p><p>  回聲的定義為當聲投射到距離聲源有一段距離的大面積上時,聲能的一部分被吸收,而另一部分聲能要反射回來,如果聽者聽到由聲源直接發(fā)來的聲和由反射回來的聲的時間間隔超過十分之一秒,它就能分辨出兩個聲音這種反射回來的聲叫“回聲”。</p><p&

4、gt;  MATLAB語言具備高效、可及推理能力強等特點,是目前工程界流行最廣泛的科學(xué)計算語言。MATLAB強大的運算和圖形顯示功能,可使信號與系統(tǒng)上機實驗效率大大提高。特別是它的頻譜分析和濾波器分析與設(shè)計功能很強,使數(shù)字信號處理工作變得十分簡單,直觀。本實驗就是運用MATLAB設(shè)計回聲信號產(chǎn)生器并對回聲信號進行頻譜分析。</p><p>  圖形用戶界面GUI (Graphics User Interface)

5、 是由各種圖形對象,如圖形窗口、圖軸、菜單、按鈕、文本框等構(gòu)建的用戶界面,是人機交流信息的工具和方法。GUI 設(shè)計即可以基本的MATLAB 程序設(shè)計為主,也可以鼠標為主利用GUIDE 工具進行設(shè)計。</p><p>  關(guān)鍵詞 MATLAB語言 濾波器 回波產(chǎn)生 回波消除 頻譜分析 GUI界面</p><p><b>  目 錄</b></p&g

6、t;<p><b>  一 設(shè)計目的1</b></p><p><b>  二 設(shè)計要求1</b></p><p>  三 設(shè)計原理及方案1</p><p><b>  3.1設(shè)計原理1</b></p><p>  3.2設(shè)計方案及函數(shù)調(diào)用3</p

7、><p><b>  四 軟件流程5</b></p><p>  4.1設(shè)計的總體方案圖5</p><p>  4.2程序流程圖6</p><p><b>  五 調(diào)試分析7</b></p><p>  5.1原始信號分析7</p><p>  

8、5.2使用疊加法獲得帶回聲的語音信號8</p><p>  5.3使用濾波器法獲得帶回聲的語音信號10</p><p>  六 圖形界面GUI設(shè)計17</p><p>  6.1啟動MATLAB的圖形界面開發(fā)環(huán)境17</p><p>  6.2界面設(shè)計18</p><p>  6.3保存運行19</p

9、><p>  6.4函數(shù)中添加程序(見附錄)19</p><p>  6.5程序測試結(jié)果19</p><p><b>  七 設(shè)計總結(jié)20</b></p><p><b>  八 參考文獻20</b></p><p><b>  九 附錄21</b>

10、;</p><p><b>  一、設(shè)計目的</b></p><p>  綜合運用數(shù)字信號處理的理論知識進行回聲信號產(chǎn)生器設(shè)計,對回聲信號進行頻譜分析,通過理論推導(dǎo)得出相應(yīng)結(jié)論,再利用MATLAB作為編程工具進行計算機實現(xiàn)。</p><p>  鞏固所學(xué)的數(shù)字信號處理理論知識, 理解信號的采集、處理、衰減、延時過程;</p>&l

11、t;p>  綜合運用專業(yè)及基礎(chǔ)知識,解決實際工程技術(shù)問題的能力;</p><p>  學(xué)習(xí)資料的收集與整理,學(xué)會撰寫課程設(shè)計報告。</p><p><b>  二、設(shè)計要求</b></p><p>  選擇一個語音信號作為原聲信號,或錄制一段自己的語音信號,對其進行頻譜分析; 然后在時域用數(shù)字信號處理方法將信號加入延時和混響, 產(chǎn)生回聲信

12、號,并與原始信號頻譜進行比較;最后設(shè)計一個GUI界面。</p><p>  掌握傅里葉變換的計算機實現(xiàn)方法,利用傅里葉變換對原聲音信號、回聲信號進行頻譜分析;</p><p>  利用簡單的衰減延遲疊加法、FIR濾波器法、IIR濾波器設(shè)計一次、三次、六次、無限次回聲信號產(chǎn)生器;</p><p>  學(xué)會MATLAB的使用,掌握MATLAB的程序設(shè)計方法;</p

13、><p>  學(xué)會GUI界面設(shè)計。</p><p><b>  三、設(shè)計原理及方案</b></p><p><b>  3.1 設(shè)計原理</b></p><p>  回聲往往是原始聲音衰減后的多個延遲迭加而組成, 因此回聲可以用信號處理中的延遲單元來生成。</p><p>  

14、假設(shè)x(n)表示原始直接聲音信號,y(n)表示迭加后的聲音信號, 則直接聲音和它的延遲了R個周期的單個回聲可以用如下差分方程表示:</p><p>  y(n)=x(n)+ α·x(n-R) (1)</p><p>  其中α<1, 表示回聲的衰減系數(shù), 上述差分方程也可以用系統(tǒng)函數(shù)表示為:</p><p>  H(z)=1+α&#

15、183;z-R (2)</p><p>  式(2),即FIR 濾波器, 實際上是一個梳狀濾波器,其結(jié)構(gòu)流圖, 如圖1所示。</p><p>  圖1 FIR 濾波器結(jié)構(gòu)</p><p>  公式(1)僅僅實現(xiàn)了一重回聲, 然而在很多應(yīng)用場合下, 需要多重回聲特效, 因此就不能簡單地采用式(1)描述的FIR 濾波器了, 應(yīng)該用IIR 濾波器來實現(xiàn)

16、。</p><p>  為了生成均勻間隔的多重回聲, 則每一級回聲應(yīng)該比上一級依次衰減和延遲R 個周期, 因此IIR 濾波器地系統(tǒng)函數(shù)為:</p><p><b> ?。?)</b></p><p>  如果回聲次數(shù)很多, 則αN→0, 多重回聲可以用一個更簡潔的IIR 濾波器實現(xiàn), 系統(tǒng)函數(shù)變?yōu)?</p><p>&l

17、t;b> ?。?)</b></p><p>  其結(jié)構(gòu)流圖如圖2 所示。</p><p>  圖2 IIR濾波器結(jié)構(gòu)</p><p>  3.2 方案及函數(shù)調(diào)用</p><p><b>  1、語音信號的獲取</b></p><p>  [x,fs,bits]=wavread(

18、‘ding.wav’,[N1 N2]); 用于讀取語音,采樣值放在向量y中,fs表示采樣頻率(HZ),bits表示采樣位數(shù)。[N1 N2]表示讀取從N1點到N2點的值(若只有一個N的點則表示讀取前N點的采樣值)。</p><p><b>  2、聲音的回放</b></p><p>  Sound(y,fs,bits);用于對聲音的回放。向量y則就代表了一個信號(也即一

19、個復(fù)雜的“函數(shù)表達式”)也就是說可以像處理一個信號表達式一樣處理這個聲音信號。</p><p>  3、函數(shù)FFT用于序列快速傅里葉變換。</p><p> ?。?)函數(shù)的一種調(diào)用格式為:y=fft(x)</p><p>  其中,x是序列,y是序列的FFT,x可以為一向量或矩陣,若x為一向量,y是x的FFT。且和x相同長度。若x為一矩陣,則y是對矩陣的每一列向量進

20、行FFT。如果x長度是2的冪次方,函數(shù)fft執(zhí)行高速基-2FFT算法;否則fft執(zhí)行一種混合基離散傅里葉變換算法,計算速度較慢。</p><p> ?。?)函數(shù)FFT的另一種調(diào)用格式為:y=fft(x,N)</p><p>  其中,x,y意義同前,N為正整數(shù)。函數(shù)執(zhí)行N點的FFT。若x為向量且長度小于N,則函數(shù)將x補零至長度N。若向量x的長度大于N,則函數(shù)截短x使之長度為N。若x為矩陣,

21、按相同方法對x進行處理。</p><p>  經(jīng)函數(shù)fft求得的序列y一般是復(fù)序列,通常要求其幅值和相位。MATLAB提供求復(fù)數(shù)的幅值和相位函數(shù):abs,angle,這些函數(shù)一般和FFT同時使用。</p><p>  函數(shù)abs(x)用于計算復(fù)向量x的幅值,函數(shù)angle(x)用于計算復(fù)向量的相角,介于x和y之間,以弧度表示。</p><p><b>  

22、4、函數(shù)zeros</b></p><p> ?。?)函數(shù)的一種調(diào)用格式為:B = zeros(n) </p><p>  返回一個n*n的矩陣,其元素都為零,如果參數(shù)n不是一個標量就會報錯。</p><p> ?。?)函數(shù)的另一種調(diào)用格式為:B = zeros(m,n) 或 B = 

23、zeros([m n])</p><p>  返回一個m*n的零矩陣。</p><p>  (3)函數(shù)的另一種調(diào)用格式為:B = zeros(m,n,p,…)或 B = zeros([m n p …])</p><p>  返回一個m*n*p*…的零矩陣。注意:參數(shù)m,n,p都是非負整數(shù)

24、,負整數(shù)都會看成零。 www.iLoveMatlab.cn </p><p>  5、函數(shù)filter</p><p>  函數(shù)filter的調(diào)用格式為:y=filter(b,a,x)</p><p>  該格式采用數(shù)字濾波器對數(shù)據(jù)進行濾波,既可以用于IIR濾波器,也可以用于FIR濾波器。其中向量b和a分別表示系統(tǒng)函數(shù)的分子、分母多項式的系數(shù),若a=1,此時表示FI

25、R濾波器,否則就是IIR濾波器。該函數(shù)是利用給出的向量b和a,對x中的數(shù)據(jù)進行濾波,結(jié)果放入向量y。</p><p><b>  四、軟件流程</b></p><p>  4、1設(shè)計的總體方案圖</p><p><b>  4、2程序流程圖</b></p><p><b>  五、調(diào)試分析

26、</b></p><p>  5.1 原始信號分析</p><p>  讀入語音信號,顯示其時域波形,并對進行傅里葉變換,然后分析其幅值和相位。</p><p><b>  %原始信號</b></p><p>  [x,fs,bits]=wavread(‘ding.wav’,[1 40000]); %讀取語

27、音信號 </p><p>  n1=0:2000;</p><p><b>  figure(1)</b></p><p>  subplot(2,1,1);plot(x); %原始信號時域波形</p><p>  title(‘原始信號時域波形’); </p><p> 

28、 X=fft(x); %對原始信號做FFT變換 </p><p>  subplot(2,1,2);plot(n1(1:1000),X(1:1000)); %原始信號頻譜圖</p><p>  title(‘原始信號頻譜圖 ‘);</p><p><b>  figure(2)</b></p><p&

29、gt;  subplot(2,1,1);plot(abs(X));%經(jīng)傅里葉變換之后的信號的幅值</p><p>  title(‘幅值’);</p><p>  subplot(2,1,2);plot(angle(X));%經(jīng)傅里葉變換之后的信號的相位</p><p>  title(‘相位’);</p><p>  sound(5*x,f

30、s,bits); %原始語音信號,乘以5是為了加強信號</p><p>  使用疊加法獲得帶回聲的語音信號</p><p>  根據(jù)回聲信號最基本的原理,通過對原信號的延時及衰減,并將其與原信號疊加,即得到帶回聲的信號。以下為帶三次回聲的語音信號。</p><p><b>  %三次回聲</b></p><p> 

31、 [x,fs]=wavread(‘ding.wav’);</p><p>  x1=x(1:40000); %產(chǎn)生40000行1列矩陣</p><p>  x2=x(1:40000); </p><p>  x3=x(1:40000);</p><p>  x4=x(1:40000);</p><p>  x1=[x

32、1’,zeros(1,18000)]; %x1’為x1的轉(zhuǎn)置,zero是(1,18000)產(chǎn)生1行18000列全零矩陣并加到x1’的后面</p><p>  x2=[zeros(1,6000),0.7*x2’,zeros(1,12000)];</p><p>  x3=[zeros(1,12000),0.4*x3’,zeros(1,6000)];</p><p>

33、  x4=[zeros(1,18000),0.2*x4’];</p><p>  yy1=x1+x2+x3+x4;</p><p><b>  figure(3)</b></p><p>  subplot(2,1,1);plot(yy1); %三次回聲時域波形</p><p>  title(‘

34、三次回聲濾波器時域波形’); </p><p>  YY1=fft(yy1); %三次回聲信號做FFT變換 </p><p>  subplot(2,1,2);plot(n1(1:1000),YY1(1:1000)); %三次回聲頻譜圖</p><p>  title(‘三次回聲濾波器頻譜圖 ‘);</p><p>&

35、lt;b>  figure(4)</b></p><p>  subplot(2,1,1);plot(abs(YY1));%經(jīng)傅里葉變換之后的信號的幅值</p><p>  title(‘幅值’);</p><p>  subplot(2,1,2);plot(angle(YY1));%經(jīng)傅里葉變換之后的信號的相位</p><p&

36、gt;  title(‘相位');</p><p>  sound(5*yy1,fs); %經(jīng)三次回聲后語音信號,乘以5是為了加強信號</p><p>  5.3 使用濾波器法獲得帶回聲的語音信號</p><p>  使用filter函數(shù)對語音信號進行濾波(延時及衰減處理),得到一個帶回聲的語音信號。</p><p> ?。?)

37、用FIR濾波器產(chǎn)生一次回聲</p><p><b>  %單回聲濾波器 </b></p><p>  [x,fs,bits]=wavread('ding.wav',[1 40000]); %讀取語音信號 </p><p>  n1=0:2000; </p><p>  yy1=filter([1,zero

38、s(1,12000),0.7],1,[x',zeros(1,30000)]); %FIR濾波器進行濾波</p><p><b>  figure(1)</b></p><p>  subplot(2,1,1);plot(yy1); %單回聲濾波器時域波形</p><p>  title('單回聲濾波器時域

39、波形'); </p><p>  YY1=fft(yy1); %對單回聲信號做2001點的FFT變換 </p><p>  subplot(2,1,2);plot(n1(1:1000),YY1(1:1000)); %單回聲濾波器頻譜圖</p><p>  title('單回聲濾波器頻譜圖 ');</p>

40、<p><b>  figure(2)</b></p><p>  subplot(2,1,1);plot(abs(YY1));%經(jīng)傅里葉變換之后的信號的幅值</p><p>  title('幅值');</p><p>  subplot(2,1,2);plot(angle(YY1));%經(jīng)傅里葉變換之后的信號的相位

41、</p><p>  title('相位');</p><p>  sound(5*yy1,fs,bits); %經(jīng)單次回聲濾波器后的語音信號,乘以5是為了加強信號</p><p> ?。?)用IIR濾波器產(chǎn)生多次回聲</p><p>  yy2=filter(1,[1,zeros(1,80000/(N+1)),0.7],[x

42、',zeros(1,40000)])</p><p>  通過改變N的大小可以設(shè)置回聲的次數(shù),以下為設(shè)置的N=3和N=6時的程序及圖形。</p><p><b>  %三次回聲濾波器</b></p><p>  [x,fs,bits]=wavread('ding.wav',[1 40000]); %讀取語音信號 <

43、/p><p>  n1=0:2000;N=3; </p><p>  yy2=filter(1,[1,zeros(1,80000/(N+1)),0.7],[x',zeros(1,40000)]); </p><p>  %IIR濾波器進行濾波</p><p><b>  figure(3)</b></p>

44、<p>  subplot(2,1,1);plot(yy2); %三次回聲濾波器時域波形</p><p>  title('三次回聲濾波器時域波形'); </p><p>  YY2=fft(yy2); %對三次回聲信號做FFT變換 </p><p>  subplot(2,1,2);plot

45、(n1(1:1000),YY2(1:1000)); %三次回聲濾波器頻譜圖</p><p>  title('三次回聲濾波器頻譜圖 ');</p><p><b>  figure(4)</b></p><p>  subplot(2,1,1);plot(abs(YY2));%經(jīng)傅里葉變換之后的信號的幅值</p>

46、<p>  title('幅值');</p><p>  subplot(2,1,2);plot(angle(YY2));%經(jīng)傅里葉變換之后的信號的相位</p><p>  title('相位');</p><p>  sound(5*yy2,fs,bits); %經(jīng)三次回聲濾波器后的語音信號,乘以5是為了加強信號</

47、p><p><b>  %六次回聲濾波器</b></p><p>  [x,fs,bits]=wavread('ding.wav',[1 40000]); %讀取語音信號 </p><p>  n1=0:2000;N=6; </p><p>  yy3=filter(1,[1,zeros(1,80000/(N

48、+1)),0.7],[x',zeros(1,40000)]); %IIR濾波器進行濾波</p><p><b>  figure(5)</b></p><p>  subplot(2,1,1);plot(yy3); %六次回聲濾波器時域波形</p><p>  title('六次回聲濾波器時域波形'

49、;); </p><p>  YY3=fft(yy3); %對六次回聲信號做FFT變換 </p><p>  subplot(2,1,2);plot(n1(1:1000),YY3(1:1000)); %六次回聲濾波器頻譜圖</p><p>  title('六次回聲濾波器頻譜圖 ');</p><p>

50、<b>  figure(6)</b></p><p>  subplot(2,1,1);plot(abs(YY3));%經(jīng)傅里葉變換之后的信號的幅值</p><p>  title('幅值');</p><p>  subplot(2,1,2);plot(angle(YY3));%經(jīng)傅里葉變換之后的信號的相位</p>

51、;<p>  title('相位');</p><p>  sound(5*yy3,fs,bits); %經(jīng)六次回聲濾波器后的語音信號,乘以5是為了加強信號</p><p> ?。?)IIR濾波器產(chǎn)生無限次回聲</p><p><b>  %無限回聲濾波器 </b></p><p>  [x

52、,fs,bits]=wavread('ding.wav',[1 40000]); %讀取語音信號 </p><p>  n1=0:2000; </p><p>  a=0.7; %a取小于等于1</p><p>  Bz=[1,a]; %分子的系數(shù)</p>&l

53、t;p>  Az=1; %分母的系數(shù)</p><p>  yy4=filter(Bz,Az,x); %IIR濾波器進行濾波</p><p>  figure(11)</p><p>  subplot(2,1,1);plot(yy4); %無限回聲濾波器時域波形</p>

54、<p>  title('無限個回聲濾波器時域波形'); </p><p>  YY4=fft(yy4); %經(jīng)無限回聲濾波器后的信號做FFT變換 </p><p>  subplot(2,1,2);plot(n1(1:1000),YY4(1:1000)); %無限回聲濾波器頻譜圖</p><p>  title(

55、9;無限個回聲濾波器頻譜圖 ');</p><p>  figure(12)</p><p>  subplot(2,1,1);plot(abs(YY4));</p><p>  title('幅值');</p><p>  subplot(2,1,2);plot(angle(YY4));</p><

56、;p>  title('相位');</p><p>  sound(5*yy4,fs,bits); %回放經(jīng)無限回聲濾波器后的語音信號</p><p>  六、圖形界面GUI設(shè)計</p><p>  6.1 啟動MATLAB的圖形界面開發(fā)環(huán)境</p><p>  方法有二:A.在MATLAB的命令窗

57、口輸入“guide”命令;B.進入MATLAB的圖形界面開發(fā)環(huán)境(GUIDE);</p><p><b>  如下圖:</b></p><p><b>  6.2 界面設(shè)計</b></p><p><b>  (1)布局</b></p><p>  在界面區(qū)放置一個軸(Axe

58、s)控件和兩個按鈕(Push Button)控件:</p><p><b> ?。?)屬性設(shè)置</b></p><p>  雙擊任何一個控件都可以打開該控件屬性編輯器進行屬性值的設(shè)置或修改。</p><p>  1)圖形屬性設(shè)置。主要設(shè)置圖形個標簽(Tag)和標題(Name),把圖形的“Tag”設(shè)置為“DaqScope”,把“Name”設(shè)置為“

59、DaqScope1”</p><p>  2)“采集和顯示”按鈕屬性設(shè)置。主要是設(shè)置其中3項:字體大?。‵ontSize)、顯示字符(String)和標簽(Tag)</p><p>  3)“頻譜顯示”按鈕屬性設(shè)置。</p><p>  4)“采樣頻率”按鈕屬性設(shè)置。</p><p><b>  6.3 保存運行</b>

60、;</p><p>  單擊工具欄的“按鈕”,檢查界面布局是否滿意。輸入名稱“DaqScope”單擊保存。MATLAB會自動生成與界面相關(guān)的M-文件(DaqScope.m)并在M-文件編輯器中打開它。</p><p>  6.4 函數(shù)中添加程序(見附錄)</p><p>  6.5 程序測試結(jié)果</p><p><b>  七、設(shè)計

61、總結(jié)</b></p><p>  兩周的DSP實踐課程學(xué)習(xí),使我們學(xué)到了很多,進一步加深對專業(yè)知識的興趣與愛好,也使我們明白了理論聯(lián)系實際的重要性,對GUI界面設(shè)計產(chǎn)生了濃厚的興趣。</p><p>  在實踐過程中,我們主要遇到的問題如下:</p><p> ?。?、只使用了簡單的衰減延時疊加實現(xiàn)了回聲信號;</p><p>&l

62、t;b>  2、回聲次數(shù)有限;</b></p><p><b> ?。?、理論基礎(chǔ)不足;</b></p><p> ?。?、不懂如何實現(xiàn)GUI界面設(shè)計</p><p>  因此,在后期的設(shè)計中,我們主要圍繞這幾個難題,通過查閱大量資料,對前期理論知識的進一步學(xué)習(xí),上網(wǎng)學(xué)習(xí)GUI視頻教程,向老師請教等多種途徑,最終一一攻克難關(guān),按時

63、完成了本次設(shè)計。</p><p>  盡管該課程設(shè)計或多或少會存在錯誤與不足的地方,但是在設(shè)計的過程中我們學(xué)到了許多的新的知識,加深了對DSP、數(shù)字信號處理等課程的理解,同時也鞏固和強化了理論知識的理解和消化;由于水平和時間有限,能完成本次課程設(shè)計實屬不易,但是對于知識的追求是永無止境的,我們亦將會發(fā)揚本次課程設(shè)計中的這種團隊合作精神來更好地學(xué)習(xí)后續(xù)課程,希望等到學(xué)有所成時,能做出更好、更高水準的作品!</

64、p><p><b>  八、參考文獻</b></p><p>  [1]高西全,丁玉美 編著 數(shù)字信號處理.西安電子科技大學(xué)出版社,2008</p><p>  [2]萬永革 編著,數(shù)字信號處理的MATLAB實現(xiàn),科學(xué)出版社,2007</p><p>  [3]李勇,徐震 編著 MATLAB輔助現(xiàn)代工程數(shù)字信號處理,西安電子

65、科技大學(xué)出版社,2002</p><p>  [4]張葛祥,李娜. 編著MATLAB仿真技術(shù)與應(yīng)用 清華大學(xué)出版社,2003</p><p>  [5]董長虹主編. 編著 MATLAB信號處理與應(yīng)用 國防工業(yè)出版社,2005</p><p><b>  九、附錄</b></p><p>  GUI界面設(shè)計程序代碼<

66、/p><p>  function varargout = gui11(varargin)</p><p>  %GUI11 M-file for gui11.fig</p><p>  % GUI11, by itself, creates a new GUI11 or raises the existing</p><p>  %

67、 singleton*.</p><p><b>  %</b></p><p>  % H = GUI11 returns the handle to a new GUI11 or the handle to</p><p>  % the existing singleton*.</p><p

68、><b>  %</b></p><p>  % GUI11('Property','Value',...) creates a new GUI11 using the</p><p>  % given property value pairs. Unrecognized properties are pas

69、sed via</p><p>  % varargin to gui11_OpeningFcn. This calling syntax produces a</p><p>  % warning when there is an existing singleton*.</p><p><b>  %</b><

70、/p><p>  % GUI11('CALLBACK') and GUI11('CALLBACK',hObject,...) call the</p><p>  % local function named CALLBACK in GUI11.M with the given input</p><p>  %

71、 arguments.</p><p><b>  %</b></p><p>  % *See GUI Options on GUIDE's Tools menu. Choose "GUI allows only one</p><p>  % instance to run (singleton)

72、".</p><p><b>  %</b></p><p>  % See also: GUIDE, GUIDATA, GUIHANDLES</p><p>  % Edit the above text to modify the response to help gui11</p><p>  % Las

73、t Modified by GUIDE v2.5 17-Jun-2011 01:52:54</p><p>  % Begin initialization code - DO NOT EDIT</p><p>  gui_Singleton = 1;</p><p>  gui_State = struct('gui_Name', mf

74、ilename, ...</p><p>  'gui_Singleton', gui_Singleton, ...</p><p>  'gui_OpeningFcn', @gui11_OpeningFcn, ...</p><p>  'gui_OutputFcn', @gui11_OutputFcn, ...

75、</p><p>  'gui_LayoutFcn', [], ...</p><p>  'gui_Callback', []);</p><p>  if nargin && ischar(varargin{1})</p><p>  gui_State.gui_Callback =

76、str2func(varargin{1});</p><p><b>  end</b></p><p>  if nargout</p><p>  [varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});</p><p><b>  else

77、</b></p><p>  gui_mainfcn(gui_State, varargin{:});</p><p><b>  end</b></p><p>  % End initialization code - DO NOT EDIT</p><p>  % Choose default comm

78、and line output for gui11</p><p>  handles.output = hObject;</p><p>  % Update handles structure</p><p>  guidata(hObject, handles);</p><p>  % UIWAIT makes gui11 wait

79、for user response (see UIRESUME)</p><p>  % uiwait(handles.figure1);</p><p>  % --- Outputs from this function are returned to the command line.</p><p>  function varargout = gui11_

80、OutputFcn(hObject, eventdata, handles)</p><p>  % varargout cell array for returning output args (see VARARGOUT);</p><p>  % hObject handle to figure</p><p>  % eventdata reser

81、ved - to be defined in a future version of MATLAB</p><p>  % handles structure with handles and user data (see GUIDATA)</p><p>  % Get default command line output from handles structure</p

82、><p>  varargout{1} = handles.output;</p><p>  % --- Executes on button press in pushbutton1.</p><p>  function pushbutton1_Callback(hObject, eventdata, handles)</p><p>&l

83、t;b>  %單回聲濾波器 </b></p><p>  [x,fs,bits]=wavread('ding.wav',[1 40000]); %讀取語音信號 </p><p>  %x=x(:,1); %只取單聲道</p><p>  n1=0:2000; </p>&

84、lt;p>  yy1=filter([1,zeros(1,12000),0.7],1,[x',zeros(1,30000)]); %FIR濾波器進行濾波</p><p>  %figure(1);subplot(2,1,1);plot(yy1); %單回聲濾波器時域波形</p><p>  YY1=fft(yy1); %對單回聲信號

85、做2001點的FFT變換 </p><p>  %subplot(2,1,2);plot(n1(1:1000),YY1(1:1000)); %單回聲濾波器頻譜圖</p><p>  axes(handles.aaa);%選擇你的一個axes,自然,用它的tag來選中它</p><p>  plot(yy1); %這時,所畫的圖就到它上面了</p>

86、<p>  axes(handles.bbb);%選擇你的一個axes,自然,用它的tag來選中它</p><p>  plot(n1(1:1000),YY1(1:1000)); %這時,所畫的圖就到它上面了</p><p>  sound(5*yy1,fs,bits); %經(jīng)單次回聲濾波器后的語音信號,乘以5是為了加強信號</p><p> 

87、 % --- Executes on button press in pushbutton2.</p><p>  function pushbutton2_Callback(hObject, eventdata, handles)</p><p><b>  %三回聲</b></p><p>  [x,fs,bits]=wavread(

88、9;ding.wav',[1 40000]); %讀取語音信號 </p><p>  n1=0:2000; n=3;</p><p>  yy3=filter(1,[1,zeros(1,80000/(n+1)),0.7],[x',zeros(1,40000)]); %IIR濾波器進行濾波</p><p>  %figure(1);subplot(2,

89、1,1);plot(yy3); %無限回聲濾波器時域波形</p><p>  YY3=fft(yy3); %對無限次回聲信號做FFT變換 </p><p>  sound(5*yy3,fs,bits); %經(jīng)無限回聲濾波器后的語音信號,乘以5是為了加強信號</p><p>  axes(handles.ccc);%選擇

90、你的一個axes,自然,用它的tag來選中它</p><p>  plot(yy3); %這時,所畫的圖就到它上面了</p><p>  axes(handles.ddd);%選擇你的一個axes,自然,用它的tag來選中它</p><p>  plot(n1(1:1000),YY3(1:1000)); %這時,所畫的圖就到它上面了</p>&

91、lt;p>  % --- Executes on button press in pushbutton3.</p><p>  function pushbutton3_Callback(hObject, eventdata, handles)</p><p><b>  %無限回聲濾波器 </b></p><p>  [x,fs,bit

92、s]=wavread('ding.wav',[1 40000]); %讀取語音信號 </p><p>  x=x(:,1); %只取單聲道</p><p>  n1=0:2000; </p><p>  a=0.5; %a取小于等于1</p&g

93、t;<p>  Bz=[1,a]; %分子的系數(shù)</p><p><b>  %分母的系數(shù)</b></p><p>  yy1=filter(Bz,1,x); %IIR濾波器進行濾波</p><p>  %figure(5);subplot(2,1,1);plot(yy1);

94、 %無限回聲濾波器時域波形</p><p>  %title('無限個回聲濾波器時域波形'); </p><p>  YY1=fft(yy1,2001); %經(jīng)無限回聲濾波器后的信號做2001點的FFT變換 </p><p>  %subplot(2,1,2);plot(n1(1:1000),YY1(1:10

95、00)); %無限回聲濾波器頻譜圖</p><p>  %title('無限個回聲濾波器頻譜圖 '); </p><p>  sound(5*yy1,fs,bits); %回放經(jīng)無限回聲濾波器后的語音信號</p><p>  pause(2); %延時2秒</p&g

96、t;<p>  axes(handles.ggg);%選擇你的一個axes,自然,用它的tag來選中它</p><p>  plot(yy1); %這時,所畫的圖就到它上面了</p><p>  axes(handles.hhh);%選擇你的一個axes,自然,用它的tag來選中它</p><p>  plot(n1(1:1000),YY1(1:1

97、000)); %這時,所畫的圖就到它上面了</p><p>  % --- Executes on button press in pushbutton11.</p><p>  function pushbutton11_Callback(hObject, eventdata, handles)</p><p><b>  %六回聲</b>

98、;</p><p>  [x,fs,bits]=wavread('ding.wav',[1 40000]); %讀取語音信號 </p><p>  n1=0:2000; n=7;</p><p>  yy6=filter(1,[1,zeros(1,80000/n),0.7],[x',zeros(1,40000)]); %IIR濾波器進行濾波&

99、lt;/p><p>  %figure(1);subplot(2,1,1);plot(yy3); %無限回聲濾波器時域波形</p><p>  YY6=fft(yy6); %對無限次回聲信號做FFT變換 </p><p>  sound(5*yy6,fs,bits); %經(jīng)無限回聲濾波器后的語音信號,乘以5是為了加強信號&

100、lt;/p><p>  axes(handles.eee);%選擇你的一個axes,自然,用它的tag來選中它</p><p>  plot(yy6); %這時,所畫的圖就到它上面了</p><p>  axes(handles.fff);%選擇你的一個axes,自然,用它的tag來選中它</p><p>  plot(n1(1:1000),

101、YY6(1:1000)); %這時,所畫的圖就到它上面了</p><p>  function pushbutton12_Callback(hObject, eventdata, handles)</p><p><b>  %單回聲濾波器 </b></p><p>  [x,fs,bits]=wavread('ding.wav&#

102、39;,[1 40000]); %讀取語音信號 </p><p>  %x=x(:,1); %只取單聲道</p><p>  n1=0:2000;</p><p>  yy1=filter([1,zeros(1,12000),0.7],1,[x',zeros(1,30000)]); %FIR濾波器進行濾波<

103、;/p><p>  YY1=fft(yy1); %對單回聲信號做2001點的FFT變換 </p><p>  figure(1);subplot(2,1,1);plot(abs(YY1));%經(jīng)傅里葉變換之后的信號的幅值</p><p>  title('幅值');</p><p>  subplot(2,1,

104、2);plot(angle(YY1));%經(jīng)傅里葉變換之后的信號的相位</p><p>  title('相位');</p><p>  sound(5*yy1,fs,bits); %經(jīng)單次回聲濾波器后的語音信號,乘以5是為了加強信號</p><p>  % --- Executes on button press in pushbutton16

105、.</p><p>  function pushbutton16_Callback(hObject, eventdata, handles)</p><p><b>  %三回聲</b></p><p>  [x,fs,bits]=wavread('ding.wav',[1 40000]); %讀取語音信號 </p>

106、;<p>  n1=0:2000; n=4;</p><p>  yy3=filter(1,[1,zeros(1,80000/n),0.7],[x',zeros(1,40000)]); %IIR濾波器進行濾波</p><p>  %figure(1);subplot(2,1,1);plot(yy3); %三回聲濾波器時域波形</p>

107、<p>  %title('無限回聲濾波器時域波形'); </p><p>  YY3=fft(yy3); %對無限次回聲信號做FFT變換 </p><p>  %subplot(2,1,2);plot(n1(1:1000),YY3(1:1000)); %無限回聲濾波器頻譜圖</p><p>  %title(&

108、#39;無限回聲濾波器頻譜圖 ');</p><p><b>  figure(2)</b></p><p>  subplot(2,1,1);plot(abs(YY3));%經(jīng)傅里葉變換之后的信號的幅值</p><p>  title('幅值');</p><p>  subplot(2,1,2

109、);plot(angle(YY3));%經(jīng)傅里葉變換之后的信號的相位</p><p>  title('相位');</p><p>  sound(5*yy3,fs,bits); %經(jīng)無限回聲濾波器后的語音信號,乘以5是為了加強信號</p><p>  % --- Executes on button press in pushbutton17.

110、</p><p>  function pushbutton17_Callback(hObject, eventdata, handles)</p><p><b>  %六回聲</b></p><p>  [x,fs,bits]=wavread('ding.wav',[1 40000]); %讀取語音信號 </p>

111、<p>  n1=0:2000; n= 7;</p><p>  yy3=filter(1,[1,zeros(1,80000/n),0.7],[x',zeros(1,40000)]); %IIR濾波器進行濾波</p><p>  %figure(1);subplot(2,1,1);plot(yy3); %三回聲濾波器時域波形</p>

112、<p>  %title('無限回聲濾波器時域波形'); </p><p>  YY3=fft(yy3); %對無限次回聲信號做FFT變換 </p><p>  %subplot(2,1,2);plot(n1(1:1000),YY3(1:1000)); %無限回聲濾波器頻譜圖</p><p>  %title(&

113、#39;無限回聲濾波器頻譜圖 ');</p><p><b>  figure(3)</b></p><p>  subplot(2,1,1);plot(abs(YY3));%經(jīng)傅里葉變換之后的信號的幅值</p><p>  title('幅值');</p><p>  subplot(2,1,2

114、);plot(angle(YY3));%經(jīng)傅里葉變換之后的信號的相位</p><p>  title('相位');</p><p>  sound(5*yy3,fs,bits); %經(jīng)無限回聲濾波器后的語音信號,乘以5是為了加強信號</p><p>  % --- Executes on button press in pushbutton18.

115、</p><p>  function pushbutton18_Callback(hObject, eventdata, handles)</p><p><b>  %無限回聲濾波器 </b></p><p>  [x,fs,bits]=wavread('ding.wav',[1 40000]); %讀取語音信號 </

116、p><p>  x=x(:,1); %只取單聲道</p><p>  n1=0:2000; </p><p>  a=0.5; %a取小于等于1</p><p>  Bz=[1,a]; %分子的系數(shù)</p>&

117、lt;p>  Az=1; %分母的系數(shù)</p><p>  yy1=filter(Bz,Az,x); %IIR濾波器進行濾波</p><p>  %figure(5);subplot(2,1,1);plot(yy1); %無限回聲濾波器時域波形</p><p>  %title('

118、;無限個回聲濾波器時域波形'); </p><p>  YY1=fft(yy1); %經(jīng)無限回聲濾波器后的信號做FFT變換 </p><p>  figure(4);subplot(2,1,1);plot(abs(YY1));%經(jīng)傅里葉變換之后的信號的幅值</p><p>  title('幅值');</p>

溫馨提示

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

評論

0/150

提交評論