版權(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 基于matlab的回聲信號產(chǎn)生器
- 基于matlab的 回聲信號產(chǎn)生器
- dsp課程設(shè)計——基于語音信號的回聲信號發(fā)生器設(shè)計
- eda課程設(shè)計--任意波形產(chǎn)生器報告
- dsp課程設(shè)計正余弦信號的產(chǎn)生
- dsp課程設(shè)計---dtmf信號的產(chǎn)生及檢測
- 高速寬帶調(diào)制信號產(chǎn)生器設(shè)計.pdf
- fskpsk信號產(chǎn)生器實驗實驗報告
- dsp課程設(shè)計——信號發(fā)生器(方波)
- dsp課程設(shè)計---正弦信號發(fā)生器的設(shè)計
- dsp課程設(shè)計--正弦信號發(fā)生器的設(shè)計
- dsp課程設(shè)計---正弦波信號發(fā)生器報告
- 數(shù)字信號處理(dsp)課程設(shè)計報告
- 基于fpga的2dpsk信號產(chǎn)生器設(shè)計
- 波形產(chǎn)生器及諧波濾波器設(shè)計與制作-通信工程課程設(shè)計
- dsp課程設(shè)計--正弦信號發(fā)生器的設(shè)計
- dsp課程設(shè)計--正弦信號發(fā)生器的設(shè)計
- dsp課程設(shè)計--多波形信號發(fā)生器
- dsp課程設(shè)計報告
- dsp課程設(shè)計報告--fir濾波器設(shè)計
評論
0/150
提交評論