信號(hào)處理課設(shè),電子琴信號(hào)發(fā)生器的設(shè)計(jì))_第1頁
信號(hào)處理課設(shè),電子琴信號(hào)發(fā)生器的設(shè)計(jì))_第2頁
信號(hào)處理課設(shè),電子琴信號(hào)發(fā)生器的設(shè)計(jì))_第3頁
信號(hào)處理課設(shè),電子琴信號(hào)發(fā)生器的設(shè)計(jì))_第4頁
信號(hào)處理課設(shè),電子琴信號(hào)發(fā)生器的設(shè)計(jì))_第5頁
已閱讀5頁,還剩19頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、 摘 要這次課設(shè)我們做的是電子琴信號(hào)發(fā)生器,電子琴信號(hào)發(fā)生器是利用MATLAB的GUI工具,設(shè)計(jì)出虛擬數(shù)字信號(hào)發(fā)生器。每個(gè)音節(jié)均對(duì)應(yīng)一個(gè)特定頻率的信號(hào),通過調(diào)用數(shù)字信號(hào)發(fā)生器產(chǎn)生一系列指定的頻率的聲音,實(shí)現(xiàn)虛擬電子琴的功能。這次主要做了GUI電子琴界面,產(chǎn)生正弦波、余弦波、方波、三角波、鋸齒波、白噪聲的虛擬數(shù)字信號(hào)發(fā)生器,頻譜分析。關(guān)鍵詞:數(shù)字信號(hào)發(fā)生器;簡(jiǎn)易電子琴;MALTAB軟件 目 錄前 言1一 設(shè)計(jì)原理21.1 GUI界面搭建21.2數(shù)字信號(hào)發(fā)生器設(shè)計(jì)原理21.3 離散傅立葉變換(DFT)31.4快速傅立葉變換(FFT)31.5電子琴原理4二 詳細(xì)設(shè)計(jì)52.1 GUI界面設(shè)計(jì)52.2

2、正弦信號(hào)的實(shí)現(xiàn)52.3方波信號(hào)的實(shí)現(xiàn)62.4三角波信號(hào)的實(shí)現(xiàn)62.5鋸齒波信號(hào)的實(shí)現(xiàn)62.6白噪聲信號(hào)的實(shí)現(xiàn)62.7 MATLAB編程7三 仿真結(jié)果9總 結(jié)13參考文獻(xiàn)14附 錄15致 謝22 前 言 隨著信息時(shí)代和數(shù)字世界的到來,數(shù)字信號(hào)處理己成為當(dāng)今一門極其重要的學(xué)科和技術(shù)領(lǐng)域,數(shù)字信號(hào)處理在通信、語音、圖像、自動(dòng)控制、醫(yī)療和家用電器等眾多領(lǐng)域得到了廣泛的應(yīng)用,數(shù)字信號(hào)處理主要用的是MATLAB軟件。 MATLAB是矩陣實(shí)驗(yàn)室(Matrix Laboratory)的簡(jiǎn)稱,是美國MathWorks公司出品的商業(yè)數(shù)學(xué)軟件??梢赃M(jìn)行矩陣運(yùn)算、繪制函數(shù)和數(shù)據(jù)、實(shí)現(xiàn)算法、創(chuàng)建用戶界面、連接其他編程語

3、言的程序等,主要應(yīng)用于工程計(jì)算、控制設(shè)計(jì)、信號(hào)處理與通訊、圖像處理、信號(hào)檢測(cè)、金融建模設(shè)計(jì)與分析等領(lǐng)域。圖形用戶界面(Graphical User Interface,簡(jiǎn)稱GUI,又稱圖形用戶接口)是指采用圖形方式顯示的計(jì)算機(jī)操作用戶界面。與早期計(jì)算機(jī)使用的命令行界面相比,圖形界面對(duì)于用戶來說在視覺上更易于接受。MATLAB自帶了強(qiáng)大的GUI工具1。在本文中,將利用MATLAB的GUI工具,設(shè)計(jì)出數(shù)字信號(hào)發(fā)生器和數(shù)字電子琴。 本文設(shè)計(jì)了一種可以產(chǎn)生正弦波、余弦波、方波、三角波、鋸齒波、白噪聲的虛擬數(shù)字信號(hào)發(fā)生器。在音樂世界中,每個(gè)音階均對(duì)應(yīng)一個(gè)特定頻率的信號(hào),通過調(diào)用數(shù)字信號(hào)發(fā)生器產(chǎn)生一系列指

4、定的頻率的聲音,可以實(shí)現(xiàn)虛擬的電子琴的功能。界面中包含1、2、3、4、5、6、7共 7 個(gè)基礎(chǔ)琴鍵,鼠標(biāo)按下時(shí)即發(fā)聲,松開時(shí)發(fā)聲停止。同時(shí)能夠產(chǎn)生正弦波、余弦波、方波、三角波等常見的波形的數(shù)字信號(hào),然后將數(shù)字信號(hào)寫入聲卡的緩沖區(qū),由聲卡播放出相應(yīng)的聲音2。已知音樂的七個(gè)音階的主頻率分別是131Hz、147Hz、165Hz、175Hz、196Hz、220Hz和247Hz。 設(shè)計(jì)虛擬數(shù)字信號(hào)發(fā)生器和數(shù)字電子琴,可以加深對(duì)信號(hào)處理概念的理解,且成本低,易于實(shí)現(xiàn),容易修改,并可以進(jìn)行仿真。該設(shè)計(jì)的進(jìn)行可以為我們以后的學(xué)習(xí)工作奠定一定的基礎(chǔ)。一 設(shè)計(jì)原理1.1 GUI界面搭建 圖形用戶界面(Graphi

5、cal User Interface,簡(jiǎn)稱 GUI,又稱圖形用戶接口)是指采用圖形方式顯示的計(jì)算機(jī)操作用戶界面。與早期計(jì)算機(jī)使用的命令行界面相比,圖形界面對(duì)于用戶來說在視覺上更易于接受3。 MATLAB環(huán)境下的圖形用戶界面(GUI)是由窗口、光標(biāo)、按鍵、菜單、文字說明等對(duì)象(Objects)構(gòu)成的一個(gè)用戶界面。用戶通過一定的方法(如鼠標(biāo)或鍵盤)選擇、激活這些圖形對(duì)象,使計(jì)算機(jī)產(chǎn)生某種動(dòng)作或變化,比如實(shí)現(xiàn)計(jì)算、繪圖等。MATLAB的用戶,在指令窗中運(yùn)行demo 打開那圖形界面后,只要用鼠標(biāo)進(jìn)行選擇和點(diǎn)擊, 就可產(chǎn)生豐富的內(nèi)容。 1.2數(shù)字信號(hào)發(fā)生器設(shè)計(jì)原理把一般的正弦波、方波、三角波、鋸齒波等波

6、形進(jìn)行采樣,實(shí)現(xiàn)離散化,離散時(shí)間的間隔是均勻的,以表示。的值由信號(hào)的采樣頻率fs決定。為保證采樣后信號(hào)能真實(shí)地保留原始模擬信號(hào)信息,信號(hào)采樣頻率必須至少為原信號(hào)中最高頻率成分的2倍。時(shí)域抽樣定理給出了連續(xù)信號(hào)抽樣過程中信號(hào)不失真的約束條件:對(duì)于基帶信號(hào),信號(hào)抽樣頻率 大于等于2倍的信號(hào)最高頻率 ,即 。時(shí)域抽樣是把連續(xù)信號(hào) 變成適于數(shù)字系統(tǒng)處理的離散信號(hào) 。對(duì)連續(xù)信號(hào) 以間隔T抽樣,則可得到的離散序列為 。 圖1-1 連續(xù)信號(hào)抽樣的離散序列若 ,則信號(hào) 與 的頻譜之間存在: (1-1) 其中: 的頻譜為 , 的頻譜為 。可見,信號(hào)時(shí)域抽樣導(dǎo)致信號(hào)頻譜的周期化。 (rad/s)為抽樣角頻率, 為

7、抽樣頻率。數(shù)字角頻率與模擬角頻率的關(guān)系為:=T。 最后將采樣后生成的正弦信號(hào)、方波信號(hào)、三角波信號(hào)、鋸齒波信號(hào)、白噪聲信號(hào)調(diào)用用sound(y)函數(shù)運(yùn)行,發(fā)出聲音,就可以制作數(shù)字信號(hào)發(fā)生器。1.3 離散傅立葉變換(DFT)有限長序列的離散傅立葉變換(DFT)為(1-2) 逆變換為(1-3) 1.4快速傅立葉變換(FFT)頻譜分析用傅立葉變換將波形x(t)變換為頻譜X(f),從另一角度來了解信號(hào)特征。常見傅里葉變換有DFT和FFT4。DFT是FFT的基礎(chǔ), FFT是DFT的快速算法,在MATLAB中可以利用函數(shù)FFT來計(jì)算序列的離散傅里葉變換DFT。FFT是時(shí)域和頻域轉(zhuǎn)換的基本運(yùn)算。在各種信號(hào)序

8、列中,有限長序列占重要地位。對(duì)有限長序列可以利用離散傅立葉變換(DFT)進(jìn)行分析。DFT不但可以很好的反映序列的頻譜特性,而且易于用快速算法(FFT)在計(jì)算機(jī)上進(jìn)行分析。有限長序列的DFT是其Z變換在單位圓上的等距離采樣,或者說是序列傅立葉的等距離采樣,因此可以用于序列的譜分析。FFT是DFT的一種快速算法,它是對(duì)變換式進(jìn)行一次次分解,使其成為若干小數(shù)據(jù)點(diǎn)的組合,從而減少運(yùn)算量。FFT函數(shù)調(diào)用方式:1. Y=FFT(X)2.YFFT(X,N)3.YFFT(X,dim)或YFFT(X,N,dim)函數(shù)IFFT的參數(shù)應(yīng)用與函數(shù)FFT完全相同。1.5電子琴原理 圖1-2電子琴琴鍵及對(duì)應(yīng)頻率電子琴的每

9、個(gè)音階均對(duì)應(yīng)一個(gè)特定頻率的信號(hào),通過調(diào)用數(shù)字信號(hào)發(fā)生器產(chǎn)生一系列指定的頻率的聲音,從而達(dá)到虛擬的電子琴的功能。界面中包含1、2、7共 7 個(gè)基礎(chǔ)琴鍵,鼠標(biāo)按下時(shí)即發(fā)聲,松開時(shí)發(fā)聲停止。 同時(shí)能夠產(chǎn)生正弦波、方波、三角波等常見的波形的數(shù)字信號(hào),然后將數(shù)字信號(hào)寫入聲卡的緩沖區(qū),最后由聲卡播放出相應(yīng)的聲音。具體琴鍵的固定頻率見圖1-2所示。二 詳細(xì)設(shè)計(jì)2.1 GUI界面設(shè)計(jì) 圖2-1 虛擬電子琴界面首先打開MATLAB,在命令窗口中輸入guide命令進(jìn)入GUI圖形設(shè)計(jì)界面。再新建一個(gè)空白的圖形界面文件,添加如下的控件并設(shè)計(jì)它們的布局。u 添加2個(gè)axes控件,用于顯示時(shí)域波形圖和頻域頻譜圖;u 添加

10、6個(gè)static text控件,用于窗口及其他控件的說明使用;u 添加4個(gè)panel控件,將一組相關(guān)的控件框在一起;u 添加3個(gè)edit控件,用于輸入和顯示幅值、頻率等參數(shù)值;u 添加3個(gè)slider控件,用于滑動(dòng)改變幅值、頻率等參數(shù)值。u 添加24個(gè)push button控件,其中14個(gè)用于白鍵,10個(gè)用于黑鍵。u 添加6個(gè)radio button控件,用于波形的選擇。 雙擊各個(gè)控件,打開其屬性編輯窗,即可修改其名稱、顏色、大小、初始值及位置等屬性。最終編輯好的界面如圖2-1所示。2.2 正弦信號(hào)的實(shí)現(xiàn) 正弦波信號(hào)的數(shù)學(xué)表達(dá)式如下式(2-1)所示 (2-1) 其中:為幅值;為頻率;為相位。

11、在MATLAB中,將時(shí)間變量離散化并構(gòu)造成一個(gè)一維數(shù)組,如下式(2-2)所示, (2-2)其中:為采樣頻率。相應(yīng)的正弦波信號(hào)的數(shù)字信號(hào)表達(dá)式如下式(2-3)所示, (2-3) 幅值、頻率、相位參數(shù)可以由用戶界面上的滑動(dòng)條或編輯框輸入。在分別得到與的離散值后,用plot作圖函數(shù)即可獲得波形顯示。2.3方波信號(hào)的實(shí)現(xiàn) 在MATLAB中,可以用函數(shù)直接生成一個(gè)方波信號(hào),其函數(shù)原型為,該函數(shù)可生成一個(gè)周期為,峰值為,占空比為的方波,的默認(rèn)值為50%。利用該函數(shù),可得到幅值、頻率、相位可調(diào)的方波信號(hào)函數(shù)如下式(2-4)所示, (2-4) 2.4三角波信號(hào)的實(shí)現(xiàn)在MATLAB中,可以用函數(shù)直接生成一個(gè)三角

12、波信號(hào),其函數(shù)原型為,該函數(shù)可生成一個(gè)周期為,峰值為,最大值出現(xiàn)在位置的三角波。利用該函數(shù),可得到幅值、頻率、相位可調(diào)的三角波信號(hào)函數(shù)如下式(2-5)所示, (2-5)2.5鋸齒波信號(hào)的實(shí)現(xiàn) 將上述3.4節(jié)中函數(shù)中的參數(shù)值設(shè)為1,即可得到鋸齒波。利用該函數(shù)得到的幅值、頻率、相位可調(diào)的鋸齒波信號(hào)函數(shù)如下式(2-6)所示, (2-6)2.6白噪聲信號(hào)的實(shí)現(xiàn) 白噪聲是指功率譜密度在整個(gè)頻域內(nèi)均勻分布的噪聲。白噪聲的實(shí)現(xiàn)可借助于MATLAB中的函數(shù),它的功能是產(chǎn)生一個(gè)均值為0,標(biāo)準(zhǔn)差為1的隨機(jī)數(shù)列或矩陣,該函數(shù)有多種調(diào)用形式,下式(2-7)即可得到一個(gè)均值為0,標(biāo)準(zhǔn)差為的維的隨機(jī)矩陣。 (2-7) 其

13、中,為幅值;。2.7 MATLAB編程 圖2-2 設(shè)計(jì)流程搭建好GUI界面后,點(diǎn)擊“保存”按鈕,系統(tǒng)將自動(dòng)生成M文件與Fig文件各一個(gè),并且M文件內(nèi)部已經(jīng)按照GUI界面中組件的類別,分別自動(dòng)生成了相應(yīng)的模塊調(diào)用函數(shù)。根據(jù)需需要,我們對(duì)生成的各個(gè)函數(shù)進(jìn)行補(bǔ)充,完成函數(shù)功能的實(shí)現(xiàn)及各個(gè)函數(shù)的調(diào)用關(guān)系。本次課設(shè)主要對(duì)控件的回調(diào)函數(shù)(callback)下寫入相應(yīng)的程序5,該程序相當(dāng)于一個(gè)將前后面板連接起來的紐帶,在數(shù)字信號(hào)生成中作用很大。當(dāng)界面控件及布局創(chuàng)建完成以后,點(diǎn)擊運(yùn)行即可自動(dòng)生成包含各控件回調(diào)函數(shù)在內(nèi)的m文件。MATLAB對(duì)于輸入框、按鈕及滑動(dòng)條等控件的響應(yīng)都是通過自動(dòng)調(diào)用相應(yīng)的回調(diào)函數(shù)來實(shí)現(xiàn)

14、的。具體編程程序見附錄?;卣{(diào)函數(shù)即在一定的操作下自動(dòng)執(zhí)行的指令代碼。信號(hào)發(fā)生器相關(guān)的控制控件有幅值、頻率和相位的輸入控件:滑動(dòng)條和編輯框;顯示對(duì)應(yīng)波形的按鈕以及放大和縮小顯示圖形的按鈕。下面以正弦波信號(hào)發(fā)生器為例,依次介紹各類功能控件回調(diào)函數(shù)的編寫。 (1)以幅值輸入為例6,說明將滑動(dòng)條和編輯框關(guān)聯(lián)起來,都作為波形的參數(shù)輸入的方法。實(shí)現(xiàn)的代碼及說明如下:% - Executes on slider movement.function slider_amplitude_Callback(hObject, eventdata, handles)w=get(hObject,'value

15、9;);set(handles.edit_amplitude,'string',num2str(w);上面代碼為幅值對(duì)應(yīng)的滑動(dòng)條的回調(diào)函數(shù),第一句獲取滑動(dòng)條的值,第二句將獲取到的值轉(zhuǎn)換輸出到編輯框中function edit_amplitude_Callback(hObject, eventdata, handles)v=get(hObject,'string');set(handles.slider_amplitude,'value',str2double(v); 上面代碼為幅值對(duì)應(yīng)的編輯框的回調(diào)函數(shù),第一句獲取編輯框的值,第二句將獲取到的值轉(zhuǎn)

16、換輸出給滑動(dòng)條。(2)以正弦波的顯示為例7,說明生成并顯示正弦波的方法。實(shí)現(xiàn)的代碼如下:function pushbutton_sine_Callback(hObject, eventdata, handles)a=str2double(get(handles.edit_amplitude,'String');f=str2double(get(handles.edit_frequency,'String');q=str2double(get(handles.edit_phase,'String');Ts=4.0/f; % 設(shè)定默認(rèn)顯示周期if f

17、<2000 % 設(shè)定采樣率 fs=44100;else fs=30*f;endt=0:1/fs:1.0; % 設(shè)定采樣時(shí)間y=a*sin(2*pi*(f*t+q/360);plot(t,y);xlabel('Time: s','fontweight','bold');ylabel('Voltage: V','fontweight','bold');wavplay(y,fs,'async'); % 播放生成的信號(hào)grid on;axis(0,Ts,-(a+1),(a+1);上面代

18、碼為正弦波生成和顯示對(duì)應(yīng)按鈕的回調(diào)函數(shù)。首先利用get函數(shù)獲取編輯框中的參數(shù)值,然后設(shè)置采樣率,并將時(shí)間和對(duì)應(yīng)正弦函數(shù)值離散化,最后用plot函數(shù)輸出到坐標(biāo)系中。三 仿真結(jié)果 正弦波此時(shí)的幅值為2V,頻率為660Hz的正弦波的時(shí)域波形波形及頻域波形如圖3-1所示。幅值、頻率和相位都可通過滑動(dòng)條改變。 圖3-1正弦波的時(shí)域圖及頻域圖 幅值為1V,頻率為400Hz的方波的時(shí)域波形及頻域波形如圖3-2所示。 圖3-2方波的時(shí)域圖及頻域圖 幅值為1V,頻率為300Hz的三角波的時(shí)域波形波形及頻域波形如圖3-3所示。 圖3-3三角波的時(shí)域圖及頻域圖 幅值為2V,頻率為660Hz的鋸齒波的時(shí)域波形波形及頻

19、域波形如圖3-4所示。圖3-4鋸齒波的時(shí)域圖及頻域圖 幅值為1V,頻率為660Hz的白噪聲波的時(shí)域波形波形及頻域波形如圖3-5所示。圖3-5白噪聲的時(shí)域圖及頻域圖 以正弦波為例,第一個(gè)白色琴鍵的時(shí)域波形圖及頻域波形圖如圖3-6所示。第一個(gè)白色鍵的固定頻率為659.25Hz,其余白鍵都類似,不再具體分析。圖3-6白鍵的時(shí)域圖及頻域圖 以正弦波為例,第一個(gè)黑鍵的時(shí)域波形及頻域波形如圖3-7所示,第一個(gè)黑鍵的固定頻率為622.25Hz,其余黑鍵都類似,這里不予以再多余分析。 圖3-7黑鍵的時(shí)域圖及頻域圖總 結(jié)電子琴信號(hào)發(fā)生器是利用MATLAB的GUI工具,GUI是指采用圖形方式顯示的計(jì)算機(jī)操作用戶界

20、面,設(shè)計(jì)出虛擬數(shù)字信號(hào)發(fā)生器。數(shù)字信號(hào)發(fā)生器是一種基于軟硬件結(jié)合實(shí)現(xiàn)的函數(shù)波形產(chǎn)生儀器。在工程實(shí)踐中需要檢測(cè)和分析的各種復(fù)雜信號(hào)均可分解成各種簡(jiǎn)單信號(hào)之和,而這些簡(jiǎn)單信號(hào)皆可由數(shù)字信號(hào)發(fā)生器模擬產(chǎn)生,因此它在工程分析和實(shí)驗(yàn)教學(xué)中有著廣泛的應(yīng)用。MATLAB是一個(gè)數(shù)據(jù)分析和處理功能十分強(qiáng)大的工程實(shí)用軟件,它的數(shù)據(jù)采集工具箱為實(shí)現(xiàn)數(shù)據(jù)的輸入和輸出提供了十分方便的函數(shù)和命令,在數(shù)字信號(hào)處理方面方便實(shí)用。在此基礎(chǔ)上實(shí)現(xiàn)簡(jiǎn)易的數(shù)字電子琴。每個(gè)音節(jié)均對(duì)應(yīng)一個(gè)特定頻率的信號(hào),通過調(diào)用數(shù)字信號(hào)發(fā)生器產(chǎn)生一系列指定的頻率的聲音,實(shí)現(xiàn)虛擬電子琴的功能。這次主要做了GUI電子琴界面,產(chǎn)生正弦波、余弦波、方波、三角波

21、、鋸齒波、白噪聲的虛擬數(shù)字信號(hào)發(fā)生器以及用FFT變換進(jìn)行頻譜分析8。通過本次設(shè)計(jì)的數(shù)字信號(hào)發(fā)生器加深對(duì)數(shù)字信號(hào)處理課程的理解,具有一定的借鑒應(yīng)用價(jià)值。,不僅可以掌握所學(xué)的有關(guān)知識(shí),還可以鍛煉綜合運(yùn)用知識(shí)的能力。設(shè)計(jì)過程中老師主要鍛煉我們的自主能力,我們查閱資料的同時(shí),當(dāng)遇到不解的時(shí)候,老師的不吝指導(dǎo),我的課程設(shè)計(jì)才得以在規(guī)定的時(shí)間內(nèi)高效完成。通過這次課程設(shè)計(jì),我學(xué)會(huì)很多,也收獲了很多,深入的理解了數(shù)字信號(hào)發(fā)生器的原理及實(shí)現(xiàn)方法,對(duì)課本上的知識(shí)有了深入理解,同時(shí)對(duì)MATLAB軟件有了更進(jìn)一步掌握,對(duì)GUI界面有了深入的了解,加強(qiáng)了我的自主能力、動(dòng)手能力和獨(dú)立思考、團(tuán)結(jié)協(xié)作的能力。參考文獻(xiàn)1 丁玉

22、美. 數(shù)字信號(hào)處理M. 西安電子科技大學(xué)出版社,2003,3.2 張志涌等.精通MatlabM.北京:北京航空航天大學(xué)出版社,2003.3 車子萍.基于Matlab的虛擬信號(hào)發(fā)生器設(shè)計(jì)J.電腦學(xué)習(xí),2010,1.4 萬永革. 編著. 數(shù)字信號(hào)處理的MATLAB實(shí)現(xiàn)M. 科學(xué)出版社, 2007.5 劉波, 文忠, 曾涯. 編著. MATLAB信號(hào)處理M. 電子工業(yè)出版社, 2006.6 劉敏. MATLAB 通信仿真與應(yīng)用M. 北京:國防工業(yè)出版社.7 MATLAB信號(hào)處理相關(guān)書籍、網(wǎng)絡(luò)資源. 8 李益華. MATLAB輔助現(xiàn)代工程數(shù)字信號(hào)處理(第2版). 西安:西安電子科技大學(xué)出版社,2010

23、附 錄*產(chǎn)生正弦波*function radiobutton1_Callback(hObject, eventdata, handles)% hObject handle to radiobutton1 (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)A=str2num(get(handles.a1,'String');f=str2num(get(handl

24、es.a2,'String');d=str2num(get(handles.a3,'String'); Fs=8000; t=(0:2000)/Fs; %設(shè)定采樣時(shí)間 pit=2*pi*t; y=A*sin(f*pit+d); %產(chǎn)生正弦波 axes (handles.axes1); plot(t,y); % 畫出正弦波時(shí)域波形 title('時(shí)域圖 '); xlabel('t'); ylabel('y'); axis(0,.01,-2,2) axes (handles.axes2); f=fft(y,1024);

25、 %做快速傅里葉變換 f1=fftshift(f); w1=513:1024;w=4000*(w1-512)/512; F=abs(f1(513:1024); plot(w,F); %畫出正弦波頻域波形 title('頻域圖'); xlabel('w'); ylabel('F(w)'); sound(y); %播放聲音*產(chǎn)生余弦波*function radiobutton2_Callback(hObject, eventdata, handles)% hObject handle to radiobutton2 (see GCBO)% event

26、data reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)A=str2num(get(handles.a1,'String');f=str2num(get(handles.a2,'String');d=str2num(get(handles.a3,'String'); Fs=8000; t=(0:2000)/Fs; %設(shè)定采樣時(shí)間 pit=2*pi*t; y=A*cos

27、(f*pit+d); %產(chǎn)生余弦波 axes (handles.axes1); plot(t,y); % 畫出正弦波時(shí)域波形 title('時(shí)域圖 '); xlabel('t'); ylabel('y'); axis(0,.01,-2,2) axes (handles.axes2); f=fft(y,1024); %做快速傅里葉變換 f1=fftshift(f); w1=513:1024;w=4000*(w1-512)/512; F=abs(f1(513:1024); plot(w,F); %畫出余弦波頻域波形 title('頻域圖

28、9;); xlabel('w'); ylabel('F(w)'); sound(y); %播放聲音*產(chǎn)生方波*function radiobutton3_Callback(hObject, eventdata, handles)% hObject handle to radiobutton3 (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)A

29、=str2num(get(handles.a1,'String');f=str2num(get(handles.a2,'String');d=str2num(get(handles.a3,'String'); Fs=8000; t=(0:2000)/Fs; %設(shè)定采樣時(shí)間 pit=2*pi*t; y=A*square(f*pit+d); %產(chǎn)生方波 axes (handles.axes1); plot(t,y); % 畫出方波時(shí)域波形 title('時(shí)域圖'); xlabel('t'); ylabel('y

30、'); axis(0,.01,-2,2) axes (handles.axes2); f=fft(y,1024); %做快速傅里葉變換 f1=fftshift(f); w1=513:1024;w=4000*(w1-512)/512; F=abs(f1(513:1024); plot(w,F); %畫出方波頻域波形 title('頻域圖'); xlabel('w'); ylabel('F(w)'); sound(y); %播放聲音*產(chǎn)生三角波*function radiobutton4_Callback(hObject, eventdata

31、, handles)% hObject handle to radiobutton4 (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)A=str2num(get(handles.a1,'String');f=str2num(get(handles.a2,'String');d=str2num(get(handles.a3,'Strin

32、g'); Fs=8000; t=(0:2000)/Fs; %設(shè)定采樣時(shí)間 pit=2*pi*t; y=A*sawtooth(f*pit+d,0.5); %產(chǎn)生三角波 axes (handles.axes1); plot(t,y); % 畫出三角波時(shí)域波形 title('時(shí)域圖'); xlabel('t'); ylabel('y'); axis(0,.01,-2,2) axes (handles.axes2); f=fft(y,1024); %做快速傅里葉變換 f1=fftshift(f); w1=513:1024;w=4000*(w1-5

33、12)/512; F=abs(f1(513:1024); plot(w,F); %畫出三角波頻域波形 title('頻域圖'); xlabel('w'); ylabel('F(w)'); sound(y); %播放聲音*產(chǎn)生三角波*function radiobutton5_Callback(hObject, eventdata, handles)% hObject handle to radiobutton5 (see GCBO)% eventdata reserved - to be defined in a future version o

34、f MATLAB% handles structure with handles and user data (see GUIDATA)A=str2num(get(handles.a1,'String');f=str2num(get(handles.a2,'String');d=str2num(get(handles.a3,'String'); Fs=8000; t=(0:2000)/Fs; %設(shè)定采樣時(shí)間 pit=2*pi*t; y=A*sawtooth(f*pit+d,1); %產(chǎn)生鋸齒波 axes (handles.axes1); plot

35、(t,y); % 畫出鋸齒波時(shí)域波形 title('時(shí)域圖'); xlabel('t'); ylabel('y'); axis(0,.01,-2,2) axes (handles.axes2); f=fft(y,1024); %做快速傅里葉變換 f1=fftshift(f); w1=513:1024;w=4000*(w1-512)/512; F=abs(f1(513:1024); plot(w,F); %畫出鋸齒波頻域波形 title('頻域圖'); xlabel('w'); ylabel('F(w)

36、9;); sound(y); %播放聲音*產(chǎn)生鋸齒波*function radiobutton6_Callback(hObject, eventdata, handles)% hObject handle to radiobutton6 (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)A=str2num(get(handles.a1,'String');f=

37、str2num(get(handles.a2,'String');d=str2num(get(handles.a3,'String'); Fs=8000; t=(0:2000)/Fs; %設(shè)定采樣時(shí)間 pit=2*pi*t; y=A*randn(size(t); %產(chǎn)生鋸齒波 axes (handles.axes1); plot(t,y); % 畫出鋸齒波時(shí)域波形 title('時(shí)域圖'); xlabel('t'); ylabel('y'); axis(0,.01,-2,2) axes (handles.axes2

38、); f=fft(y,1024); %做快速傅里葉變換 f1=fftshift(f); w1=513:1024;w=4000*(w1-512)/512; F=abs(f1(513:1024); plot(w,F); %畫出鋸齒波頻域波形 title('頻域圖'); xlabel('w'); ylabel('F(w)'); sound(y); %播放聲音*第一個(gè)白琴鍵*function pushbutton40_Callback(hObject, eventdata, handles)% hObject handle to pushbutton40

39、 (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)A=str2num(get(handles.a1,'String');d=str2num(get(handles.a3,'String');f=659.25; Fs=8000; t=(0:2000)/Fs; %設(shè)定采樣時(shí)間 pit=2*pi*t; y=A*sin(f*pit+d); %產(chǎn)生正弦

40、波 axes (handles.axes1); plot(t,y); % 畫出正弦波時(shí)域波形 title('時(shí)域圖 '); xlabel('t'); ylabel('y'); axis(0,.01,-2,2) axes (handles.axes2); f=fft(y,1024); %做快速傅里葉變換 f1=fftshift(f); w1=513:1024;w=4000*(w1-512)/512; F=abs(f1(513:1024); plot(w,F); %畫出正弦波頻域波形 title('頻域圖'); xlabel('

41、;w'); ylabel('F(w)'); sound(y); %播放聲音*第2個(gè)白琴鍵*function pushbutton41_Callback(hObject, eventdata, handles)% hObject handle to pushbutton40 (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)A=str2num(get(handles.a1,'String');d=str2num(get(handles.a3,'String');f=587.33; Fs=8000; t=(0:2000)/Fs; %設(shè)定采樣時(shí)間 pit=2*pi*t; y=A*sin(f*pit+d); %產(chǎn)生正弦波 axes (handles.axes1);

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論