




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、 摘 要這次課設(shè)我們做的是電子琴信號發(fā)生器,電子琴信號發(fā)生器是利用MATLAB的GUI工具,設(shè)計(jì)出虛擬數(shù)字信號發(fā)生器。每個音節(jié)均對應(yīng)一個特定頻率的信號,通過調(diào)用數(shù)字信號發(fā)生器產(chǎn)生一系列指定的頻率的聲音,實(shí)現(xiàn)虛擬電子琴的功能。這次主要做了GUI電子琴界面,產(chǎn)生正弦波、余弦波、方波、三角波、鋸齒波、白噪聲的虛擬數(shù)字信號發(fā)生器,頻譜分析。關(guān)鍵詞:數(shù)字信號發(fā)生器;簡易電子琴;MALTAB軟件 目 錄前 言1一 設(shè)計(jì)原理21.1 GUI界面搭建21.2數(shù)字信號發(fā)生器設(shè)計(jì)原理21.3 離散傅立葉變換(DFT)31.4快速傅立葉變換(FFT)31.5電子琴原理4二 詳細(xì)設(shè)計(jì)52.1 GUI界面設(shè)計(jì)52.2
2、正弦信號的實(shí)現(xiàn)52.3方波信號的實(shí)現(xiàn)62.4三角波信號的實(shí)現(xiàn)62.5鋸齒波信號的實(shí)現(xiàn)62.6白噪聲信號的實(shí)現(xiàn)62.7 MATLAB編程7三 仿真結(jié)果9總 結(jié)13參考文獻(xiàn)14附 錄15致 謝22 前 言 隨著信息時(shí)代和數(shù)字世界的到來,數(shù)字信號處理己成為當(dāng)今一門極其重要的學(xué)科和技術(shù)領(lǐng)域,數(shù)字信號處理在通信、語音、圖像、自動控制、醫(yī)療和家用電器等眾多領(lǐng)域得到了廣泛的應(yīng)用,數(shù)字信號處理主要用的是MATLAB軟件。 MATLAB是矩陣實(shí)驗(yàn)室(Matrix Laboratory)的簡稱,是美國MathWorks公司出品的商業(yè)數(shù)學(xué)軟件。可以進(jìn)行矩陣運(yùn)算、繪制函數(shù)和數(shù)據(jù)、實(shí)現(xiàn)算法、創(chuàng)建用戶界面、連接其他編程語
3、言的程序等,主要應(yīng)用于工程計(jì)算、控制設(shè)計(jì)、信號處理與通訊、圖像處理、信號檢測、金融建模設(shè)計(jì)與分析等領(lǐng)域。圖形用戶界面(Graphical User Interface,簡稱GUI,又稱圖形用戶接口)是指采用圖形方式顯示的計(jì)算機(jī)操作用戶界面。與早期計(jì)算機(jī)使用的命令行界面相比,圖形界面對于用戶來說在視覺上更易于接受。MATLAB自帶了強(qiáng)大的GUI工具1。在本文中,將利用MATLAB的GUI工具,設(shè)計(jì)出數(shù)字信號發(fā)生器和數(shù)字電子琴。 本文設(shè)計(jì)了一種可以產(chǎn)生正弦波、余弦波、方波、三角波、鋸齒波、白噪聲的虛擬數(shù)字信號發(fā)生器。在音樂世界中,每個音階均對應(yīng)一個特定頻率的信號,通過調(diào)用數(shù)字信號發(fā)生器產(chǎn)生一系列指
4、定的頻率的聲音,可以實(shí)現(xiàn)虛擬的電子琴的功能。界面中包含1、2、3、4、5、6、7共 7 個基礎(chǔ)琴鍵,鼠標(biāo)按下時(shí)即發(fā)聲,松開時(shí)發(fā)聲停止。同時(shí)能夠產(chǎn)生正弦波、余弦波、方波、三角波等常見的波形的數(shù)字信號,然后將數(shù)字信號寫入聲卡的緩沖區(qū),由聲卡播放出相應(yīng)的聲音2。已知音樂的七個音階的主頻率分別是131Hz、147Hz、165Hz、175Hz、196Hz、220Hz和247Hz。 設(shè)計(jì)虛擬數(shù)字信號發(fā)生器和數(shù)字電子琴,可以加深對信號處理概念的理解,且成本低,易于實(shí)現(xiàn),容易修改,并可以進(jìn)行仿真。該設(shè)計(jì)的進(jìn)行可以為我們以后的學(xué)習(xí)工作奠定一定的基礎(chǔ)。一 設(shè)計(jì)原理1.1 GUI界面搭建 圖形用戶界面(Graphi
5、cal User Interface,簡稱 GUI,又稱圖形用戶接口)是指采用圖形方式顯示的計(jì)算機(jī)操作用戶界面。與早期計(jì)算機(jī)使用的命令行界面相比,圖形界面對于用戶來說在視覺上更易于接受3。 MATLAB環(huán)境下的圖形用戶界面(GUI)是由窗口、光標(biāo)、按鍵、菜單、文字說明等對象(Objects)構(gòu)成的一個用戶界面。用戶通過一定的方法(如鼠標(biāo)或鍵盤)選擇、激活這些圖形對象,使計(jì)算機(jī)產(chǎn)生某種動作或變化,比如實(shí)現(xiàn)計(jì)算、繪圖等。MATLAB的用戶,在指令窗中運(yùn)行demo 打開那圖形界面后,只要用鼠標(biāo)進(jìn)行選擇和點(diǎn)擊, 就可產(chǎn)生豐富的內(nèi)容。 1.2數(shù)字信號發(fā)生器設(shè)計(jì)原理把一般的正弦波、方波、三角波、鋸齒波等波
6、形進(jìn)行采樣,實(shí)現(xiàn)離散化,離散時(shí)間的間隔是均勻的,以表示。的值由信號的采樣頻率fs決定。為保證采樣后信號能真實(shí)地保留原始模擬信號信息,信號采樣頻率必須至少為原信號中最高頻率成分的2倍。時(shí)域抽樣定理給出了連續(xù)信號抽樣過程中信號不失真的約束條件:對于基帶信號,信號抽樣頻率 大于等于2倍的信號最高頻率 ,即 。時(shí)域抽樣是把連續(xù)信號 變成適于數(shù)字系統(tǒng)處理的離散信號 。對連續(xù)信號 以間隔T抽樣,則可得到的離散序列為 。 圖1-1 連續(xù)信號抽樣的離散序列若 ,則信號 與 的頻譜之間存在: (1-1) 其中: 的頻譜為 , 的頻譜為 。可見,信號時(shí)域抽樣導(dǎo)致信號頻譜的周期化。 (rad/s)為抽樣角頻率, 為
7、抽樣頻率。數(shù)字角頻率與模擬角頻率的關(guān)系為:=T。 最后將采樣后生成的正弦信號、方波信號、三角波信號、鋸齒波信號、白噪聲信號調(diào)用用sound(y)函數(shù)運(yùn)行,發(fā)出聲音,就可以制作數(shù)字信號發(fā)生器。1.3 離散傅立葉變換(DFT)有限長序列的離散傅立葉變換(DFT)為(1-2) 逆變換為(1-3) 1.4快速傅立葉變換(FFT)頻譜分析用傅立葉變換將波形x(t)變換為頻譜X(f),從另一角度來了解信號特征。常見傅里葉變換有DFT和FFT4。DFT是FFT的基礎(chǔ), FFT是DFT的快速算法,在MATLAB中可以利用函數(shù)FFT來計(jì)算序列的離散傅里葉變換DFT。FFT是時(shí)域和頻域轉(zhuǎn)換的基本運(yùn)算。在各種信號序
8、列中,有限長序列占重要地位。對有限長序列可以利用離散傅立葉變換(DFT)進(jìn)行分析。DFT不但可以很好的反映序列的頻譜特性,而且易于用快速算法(FFT)在計(jì)算機(jī)上進(jìn)行分析。有限長序列的DFT是其Z變換在單位圓上的等距離采樣,或者說是序列傅立葉的等距離采樣,因此可以用于序列的譜分析。FFT是DFT的一種快速算法,它是對變換式進(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電子琴琴鍵及對應(yīng)頻率電子琴的每
9、個音階均對應(yīng)一個特定頻率的信號,通過調(diào)用數(shù)字信號發(fā)生器產(chǎn)生一系列指定的頻率的聲音,從而達(dá)到虛擬的電子琴的功能。界面中包含1、2、7共 7 個基礎(chǔ)琴鍵,鼠標(biāo)按下時(shí)即發(fā)聲,松開時(shí)發(fā)聲停止。 同時(shí)能夠產(chǎn)生正弦波、方波、三角波等常見的波形的數(shù)字信號,然后將數(shù)字信號寫入聲卡的緩沖區(qū),最后由聲卡播放出相應(yīng)的聲音。具體琴鍵的固定頻率見圖1-2所示。二 詳細(xì)設(shè)計(jì)2.1 GUI界面設(shè)計(jì) 圖2-1 虛擬電子琴界面首先打開MATLAB,在命令窗口中輸入guide命令進(jìn)入GUI圖形設(shè)計(jì)界面。再新建一個空白的圖形界面文件,添加如下的控件并設(shè)計(jì)它們的布局。u 添加2個axes控件,用于顯示時(shí)域波形圖和頻域頻譜圖;u 添加
10、6個static text控件,用于窗口及其他控件的說明使用;u 添加4個panel控件,將一組相關(guān)的控件框在一起;u 添加3個edit控件,用于輸入和顯示幅值、頻率等參數(shù)值;u 添加3個slider控件,用于滑動改變幅值、頻率等參數(shù)值。u 添加24個push button控件,其中14個用于白鍵,10個用于黑鍵。u 添加6個radio button控件,用于波形的選擇。 雙擊各個控件,打開其屬性編輯窗,即可修改其名稱、顏色、大小、初始值及位置等屬性。最終編輯好的界面如圖2-1所示。2.2 正弦信號的實(shí)現(xiàn) 正弦波信號的數(shù)學(xué)表達(dá)式如下式(2-1)所示 (2-1) 其中:為幅值;為頻率;為相位。
11、在MATLAB中,將時(shí)間變量離散化并構(gòu)造成一個一維數(shù)組,如下式(2-2)所示, (2-2)其中:為采樣頻率。相應(yīng)的正弦波信號的數(shù)字信號表達(dá)式如下式(2-3)所示, (2-3) 幅值、頻率、相位參數(shù)可以由用戶界面上的滑動條或編輯框輸入。在分別得到與的離散值后,用plot作圖函數(shù)即可獲得波形顯示。2.3方波信號的實(shí)現(xiàn) 在MATLAB中,可以用函數(shù)直接生成一個方波信號,其函數(shù)原型為,該函數(shù)可生成一個周期為,峰值為,占空比為的方波,的默認(rèn)值為50%。利用該函數(shù),可得到幅值、頻率、相位可調(diào)的方波信號函數(shù)如下式(2-4)所示, (2-4) 2.4三角波信號的實(shí)現(xiàn)在MATLAB中,可以用函數(shù)直接生成一個三角
12、波信號,其函數(shù)原型為,該函數(shù)可生成一個周期為,峰值為,最大值出現(xiàn)在位置的三角波。利用該函數(shù),可得到幅值、頻率、相位可調(diào)的三角波信號函數(shù)如下式(2-5)所示, (2-5)2.5鋸齒波信號的實(shí)現(xiàn) 將上述3.4節(jié)中函數(shù)中的參數(shù)值設(shè)為1,即可得到鋸齒波。利用該函數(shù)得到的幅值、頻率、相位可調(diào)的鋸齒波信號函數(shù)如下式(2-6)所示, (2-6)2.6白噪聲信號的實(shí)現(xiàn) 白噪聲是指功率譜密度在整個頻域內(nèi)均勻分布的噪聲。白噪聲的實(shí)現(xiàn)可借助于MATLAB中的函數(shù),它的功能是產(chǎn)生一個均值為0,標(biāo)準(zhǔn)差為1的隨機(jī)數(shù)列或矩陣,該函數(shù)有多種調(diào)用形式,下式(2-7)即可得到一個均值為0,標(biāo)準(zhǔn)差為的維的隨機(jī)矩陣。 (2-7) 其
13、中,為幅值;。2.7 MATLAB編程 圖2-2 設(shè)計(jì)流程搭建好GUI界面后,點(diǎn)擊“保存”按鈕,系統(tǒng)將自動生成M文件與Fig文件各一個,并且M文件內(nèi)部已經(jīng)按照GUI界面中組件的類別,分別自動生成了相應(yīng)的模塊調(diào)用函數(shù)。根據(jù)需需要,我們對生成的各個函數(shù)進(jìn)行補(bǔ)充,完成函數(shù)功能的實(shí)現(xiàn)及各個函數(shù)的調(diào)用關(guān)系。本次課設(shè)主要對控件的回調(diào)函數(shù)(callback)下寫入相應(yīng)的程序5,該程序相當(dāng)于一個將前后面板連接起來的紐帶,在數(shù)字信號生成中作用很大。當(dāng)界面控件及布局創(chuàng)建完成以后,點(diǎn)擊運(yùn)行即可自動生成包含各控件回調(diào)函數(shù)在內(nèi)的m文件。MATLAB對于輸入框、按鈕及滑動條等控件的響應(yīng)都是通過自動調(diào)用相應(yīng)的回調(diào)函數(shù)來實(shí)現(xiàn)
14、的。具體編程程序見附錄?;卣{(diào)函數(shù)即在一定的操作下自動執(zhí)行的指令代碼。信號發(fā)生器相關(guān)的控制控件有幅值、頻率和相位的輸入控件:滑動條和編輯框;顯示對應(yīng)波形的按鈕以及放大和縮小顯示圖形的按鈕。下面以正弦波信號發(fā)生器為例,依次介紹各類功能控件回調(diào)函數(shù)的編寫。 (1)以幅值輸入為例6,說明將滑動條和編輯框關(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);上面代碼為幅值對應(yīng)的滑動條的回調(diào)函數(shù),第一句獲取滑動條的值,第二句將獲取到的值轉(zhuǎn)換輸出到編輯框中function edit_amplitude_Callback(hObject, eventdata, handles)v=get(hObject,'string');set(handles.slider_amplitude,'value',str2double(v); 上面代碼為幅值對應(yīng)的編輯框的回調(diào)函數(shù),第一句獲取編輯框的值,第二句將獲取到的值轉(zhuǎn)
16、換輸出給滑動條。(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'); % 播放生成的信號grid on;axis(0,Ts,-(a+1),(a+1);上面代
18、碼為正弦波生成和顯示對應(yīng)按鈕的回調(diào)函數(shù)。首先利用get函數(shù)獲取編輯框中的參數(shù)值,然后設(shè)置采樣率,并將時(shí)間和對應(yīng)正弦函數(shù)值離散化,最后用plot函數(shù)輸出到坐標(biāo)系中。三 仿真結(jié)果 正弦波此時(shí)的幅值為2V,頻率為660Hz的正弦波的時(shí)域波形波形及頻域波形如圖3-1所示。幅值、頻率和相位都可通過滑動條改變。 圖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í)域圖及頻域圖 以正弦波為例,第一個白色琴鍵的時(shí)域波形圖及頻域波形圖如圖3-6所示。第一個白色鍵的固定頻率為659.25Hz,其余白鍵都類似,不再具體分析。圖3-6白鍵的時(shí)域圖及頻域圖 以正弦波為例,第一個黑鍵的時(shí)域波形及頻域波形如圖3-7所示,第一個黑鍵的固定頻率為622.25Hz,其余黑鍵都類似,這里不予以再多余分析。 圖3-7黑鍵的時(shí)域圖及頻域圖總 結(jié)電子琴信號發(fā)生器是利用MATLAB的GUI工具,GUI是指采用圖形方式顯示的計(jì)算機(jī)操作用戶界
20、面,設(shè)計(jì)出虛擬數(shù)字信號發(fā)生器。數(shù)字信號發(fā)生器是一種基于軟硬件結(jié)合實(shí)現(xiàn)的函數(shù)波形產(chǎn)生儀器。在工程實(shí)踐中需要檢測和分析的各種復(fù)雜信號均可分解成各種簡單信號之和,而這些簡單信號皆可由數(shù)字信號發(fā)生器模擬產(chǎn)生,因此它在工程分析和實(shí)驗(yàn)教學(xué)中有著廣泛的應(yīng)用。MATLAB是一個數(shù)據(jù)分析和處理功能十分強(qiáng)大的工程實(shí)用軟件,它的數(shù)據(jù)采集工具箱為實(shí)現(xiàn)數(shù)據(jù)的輸入和輸出提供了十分方便的函數(shù)和命令,在數(shù)字信號處理方面方便實(shí)用。在此基礎(chǔ)上實(shí)現(xiàn)簡易的數(shù)字電子琴。每個音節(jié)均對應(yīng)一個特定頻率的信號,通過調(diào)用數(shù)字信號發(fā)生器產(chǎn)生一系列指定的頻率的聲音,實(shí)現(xiàn)虛擬電子琴的功能。這次主要做了GUI電子琴界面,產(chǎn)生正弦波、余弦波、方波、三角波
21、、鋸齒波、白噪聲的虛擬數(shù)字信號發(fā)生器以及用FFT變換進(jìn)行頻譜分析8。通過本次設(shè)計(jì)的數(shù)字信號發(fā)生器加深對數(shù)字信號處理課程的理解,具有一定的借鑒應(yīng)用價(jià)值。,不僅可以掌握所學(xué)的有關(guān)知識,還可以鍛煉綜合運(yùn)用知識的能力。設(shè)計(jì)過程中老師主要鍛煉我們的自主能力,我們查閱資料的同時(shí),當(dāng)遇到不解的時(shí)候,老師的不吝指導(dǎo),我的課程設(shè)計(jì)才得以在規(guī)定的時(shí)間內(nèi)高效完成。通過這次課程設(shè)計(jì),我學(xué)會很多,也收獲了很多,深入的理解了數(shù)字信號發(fā)生器的原理及實(shí)現(xiàn)方法,對課本上的知識有了深入理解,同時(shí)對MATLAB軟件有了更進(jìn)一步掌握,對GUI界面有了深入的了解,加強(qiáng)了我的自主能力、動手能力和獨(dú)立思考、團(tuán)結(jié)協(xié)作的能力。參考文獻(xiàn)1 丁玉
22、美. 數(shù)字信號處理M. 西安電子科技大學(xué)出版社,2003,3.2 張志涌等.精通MatlabM.北京:北京航空航天大學(xué)出版社,2003.3 車子萍.基于Matlab的虛擬信號發(fā)生器設(shè)計(jì)J.電腦學(xué)習(xí),2010,1.4 萬永革. 編著. 數(shù)字信號處理的MATLAB實(shí)現(xiàn)M. 科學(xué)出版社, 2007.5 劉波, 文忠, 曾涯. 編著. MATLAB信號處理M. 電子工業(yè)出版社, 2006.6 劉敏. MATLAB 通信仿真與應(yīng)用M. 北京:國防工業(yè)出版社.7 MATLAB信號處理相關(guān)書籍、網(wǎng)絡(luò)資源. 8 李益華. MATLAB輔助現(xiàn)代工程數(shù)字信號處理(第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); %播放聲音*第一個白琴鍵*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個白琴鍵*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等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度船舶建造與設(shè)計(jì)合同年度更新
- 2025年度跨境電商代理記賬與稅務(wù)合規(guī)支持協(xié)議
- 2025年度人工智能技術(shù)研發(fā)合作協(xié)議(全新版)
- 2025年度創(chuàng)意產(chǎn)業(yè)園區(qū)租賃合同及創(chuàng)業(yè)支持協(xié)議
- 2025年度租賃合同范本(含違約責(zé)任)
- 持續(xù)反饋機(jī)制的建立與實(shí)施計(jì)劃
- 加強(qiáng)數(shù)據(jù)安全管理的實(shí)施措施計(jì)劃
- 2025年CO2氣體保護(hù)藥芯焊絲合作協(xié)議書
- 定期舉辦學(xué)術(shù)交流活動計(jì)劃
- 生產(chǎn)計(jì)劃科學(xué)制定
- 2025年益陽醫(yī)學(xué)高等??茖W(xué)校高職單招職業(yè)技能測試近5年常考版參考題庫含答案解析
- 2024年臨床醫(yī)師定期考核試題中醫(yī)知識題庫及答案(共330題) (二)
- 醫(yī)用氣體施工方案
- 2024 年陜西公務(wù)員考試行測試題(B 類)
- 2025-2030年中國反滲透膜行業(yè)市場發(fā)展趨勢展望與投資策略分析報(bào)告
- 湖北省十堰市城區(qū)2024-2025學(xué)年九年級上學(xué)期期末質(zhì)量檢測道德與法治試題 (含答案)
- 幼兒園師德師風(fēng)培訓(xùn)內(nèi)容
- 住宅小區(qū)消防設(shè)施檢查方案
- 《榜樣9》觀后感心得體會四
- 沈陽市地圖課件
- 2025年山東省濟(jì)寧高新區(qū)管委會“優(yōu)才”招聘20人歷年高頻重點(diǎn)提升(共500題)附帶答案詳解
評論
0/150
提交評論