【正文】
應(yīng)的函數(shù),那么Matlab 函數(shù)肯定會(huì)有所反應(yīng)。這些相應(yīng)的語句被稱為響應(yīng)。 小結(jié)本章主要介紹了本課題的開發(fā)平臺(tái),簡(jiǎn)述了Matlab語言的優(yōu)缺點(diǎn),簡(jiǎn)述了設(shè)計(jì)平臺(tái)(GUI)的搭建步驟,在下面的章節(jié)中將詳細(xì)介紹GUI平臺(tái)的搭建過程。本小節(jié)將簡(jiǎn)述一下GUI界面的基本操作,具體操作步驟流程在以后的章節(jié)中具體闡述。第一種是在命令行里輸入:guide,點(diǎn)回車鍵進(jìn)入GUI界面。創(chuàng)建了新的GUI之后用戶可以選擇4種樣板:① Blank GUI:一個(gè)空的樣板,用戶打開之后可以編輯所需要的figure子對(duì)象,方便用戶。③GUI with axes and Menu:打開之后包含菜單欄和坐標(biāo)軸圖形對(duì)象的編輯器,具有數(shù)據(jù)描繪功能。本次的實(shí)驗(yàn)都是最基礎(chǔ)的信號(hào)與系統(tǒng)的研究,所以選擇Blank GUI樣板。還可以添加菜單,進(jìn)行各種屬性的設(shè)置,使Matlab界面看起來更美觀。界面菜單:可以通過uimenu函數(shù)添加菜單。GUI布局區(qū)。所以用戶首先需要對(duì)GUI對(duì)象屬性布局設(shè)置,然后再編輯回調(diào)函數(shù)。在Matlab中,如果控件是按鈕,點(diǎn)擊按鈕時(shí),按鈕下的Callback就會(huì)觸動(dòng)執(zhí)行命令;如果控件是滑塊,拖動(dòng)滑塊時(shí),滑塊下的Callback就會(huì)執(zhí)行。 GUI的M文件由GUIDE生成的M文件,控制著GUI以及用戶操作之后的響應(yīng),它包含了運(yùn)行響應(yīng)的所有代碼。GUI的M文件由一系列的子函數(shù)構(gòu)成,包括了主函數(shù),Opening函數(shù),Output函數(shù)和各種回調(diào)函數(shù)CallBack。它根據(jù)傳入的參數(shù)來確定執(zhí)行回調(diào)函數(shù)還是打開GUI運(yùn)行OpeningF和OutputF。Opening函數(shù)是在GUI開始運(yùn)行但還不可見的時(shí)候執(zhí)行,主要進(jìn)行一些初始化的操作,Output函數(shù)是在需要的時(shí)候可輸出數(shù)據(jù)到命令行。其實(shí)這些CallBack函數(shù)可以看做M文件里面的子程序,里面就填寫你所期望程序做的響應(yīng),比如畫一個(gè)圖或者計(jì)算一個(gè)式子。 控件的介紹用戶在實(shí)際使用Matlab時(shí)是通過一些基本的控件靈活運(yùn)用來地進(jìn)行設(shè)置,來滿足用戶的需求。GUI中包含了觸控按鈕(Push Button),靜態(tài)文本(Static Text),切換按鈕(Toggle Button),滑動(dòng)條(Slider),單選按鈕(Radio Button),可編輯文本(Edit Text),復(fù)選框(Check Box),列表框(Listbox),彈起式菜單(Popup Menu),按鈕組(Buttongroup)。(Push Button)首先用戶在GUI工具欄中找到Push Button按鈕,放置在布局區(qū)適合的位置,可以調(diào)整figure的大小。在Push Button上雙擊左鍵,可以在屬性查看器上查看和設(shè)置Push Button的所有屬性,如下圖31所示:圖31 觸控按鈕觸控按鈕的一些基本的屬性設(shè)置如下:⑴BackgroundColor:背景色,即Push Button的顏色。⑶Callback:僅當(dāng)Enable屬性為on時(shí),在Push Button上單擊左鍵,調(diào)用此函數(shù)。⑸FontName,F(xiàn)ontSize:設(shè)置標(biāo)簽字體。觸控按鈕最主要的應(yīng)用是編寫它的回調(diào)函數(shù),在Push Button按鈕上單擊右鍵,選擇View Callbackscallback,用戶在這里面編寫需要的M文件。它是核心圖形對(duì)象的容器,包含了image,light,line,surface和text等核心圖形對(duì)象。⑵XTick,YTick,XMinorTick,YMinorTick,XTickMode,YTickMode:X,Y軸刻度,X,Y軸次級(jí)刻度,以及X,Y軸刻度模式。⑷ButtonDownF:當(dāng)Enable屬性為on時(shí),在axes上單擊右鍵或者在axes周圍5像素范圍內(nèi)單擊左鍵或者右鍵,調(diào)用此函數(shù);當(dāng)Enable屬性為off或者inactive時(shí),在axes上或者axes周圍5像素范圍內(nèi)單擊左鍵或者右鍵,調(diào)用此函數(shù)。不同于Edit Text,Static Text控件最主要的作用是編輯標(biāo)題。⑵Position,Units:位置與計(jì)量單位。⑷ForegroundColor:標(biāo)簽顏色。(Popup Menu)彈起式菜單也叫下拉菜單(Popup Menu),與Listbox類似,都是定義String來顯示一組選項(xiàng),但是兩者之間也有一些區(qū)別:①下拉菜單更加節(jié)省界面空間,需要單擊左鍵才能夠調(diào)出這些選項(xiàng);②下拉菜單不能夠同時(shí)選擇多個(gè)選項(xiàng)。用戶編輯時(shí)PopMenu的內(nèi)容選項(xiàng)數(shù)目必須跟switch case的編輯數(shù)目相同,不然會(huì)引起混亂,回調(diào)函數(shù)出錯(cuò)。⑵Enable:激活狀態(tài)。設(shè)一共有n個(gè)選項(xiàng),則Value只能是[1,n]之間的整數(shù)。⑸Callback:當(dāng)Enable屬性為on,在Popup Menu上單擊鼠標(biāo)左鍵時(shí),才能調(diào)用此函數(shù);每執(zhí)行一次Callback函數(shù),Popup Menu的選項(xiàng)列表會(huì)彈出一次。當(dāng)MaxMin1時(shí),允許Edit Text顯示多行文本文字,否則的話只允許單行輸入。在GUI中先創(chuàng)建一個(gè)Edit Text,然后放在布局區(qū)適當(dāng)?shù)奈恢?,調(diào)整它的窗口大小,如下圖35所示:圖35 可編輯文本一些基本屬性如下:⑴BackgroundColor:背景色。⑶ForegroundColor:文本顏色。 小結(jié)通過本章的簡(jiǎn)述,用戶應(yīng)該對(duì)MATLAB中的GUI界面的設(shè)計(jì)有了一個(gè)大體的了解,本章對(duì)一些常用的控件也做了介紹,方便用戶在下面的設(shè)計(jì)中能夠靈活的運(yùn)用。13計(jì)算機(jī)信息工程學(xué)院畢業(yè)設(shè)計(jì)說明書第4章 系統(tǒng)軟件平臺(tái)設(shè)計(jì)信號(hào)系統(tǒng)的實(shí)驗(yàn)是比較繁瑣復(fù)雜的,很多實(shí)驗(yàn)需要輸入不同的參數(shù)來達(dá)到實(shí)驗(yàn)的要求,假如用戶把系統(tǒng)設(shè)計(jì)成一個(gè)界面的話,會(huì)使得整個(gè)界面看起來繁瑣,擁擠,不能體現(xiàn)出界面友好,美化的功能。本實(shí)驗(yàn)所演示的信號(hào)與系統(tǒng)的實(shí)驗(yàn)比較簡(jiǎn)單,都是一些基本信號(hào)的演示與驗(yàn)證,所以用戶設(shè)計(jì)的系統(tǒng)整體看起來比較簡(jiǎn)潔,主要由5個(gè)界面模塊構(gòu)成:一個(gè)主界面加4個(gè)模塊界面(基本信號(hào)產(chǎn)生模塊、周期信號(hào)的分解與合成模塊、抽樣定理的驗(yàn)證模塊、信號(hào)零極點(diǎn)分布與沖激響應(yīng)的關(guān)系模塊),用戶從主界面開始,當(dāng)需要演示某個(gè)實(shí)驗(yàn)時(shí),點(diǎn)擊響應(yīng)的模塊按鈕進(jìn)入到子界面,輸入不同的參數(shù)來實(shí)現(xiàn)實(shí)驗(yàn)。系統(tǒng)的整體結(jié)構(gòu)框圖設(shè)計(jì)如下圖41所示:圖41 系統(tǒng)框圖在本實(shí)驗(yàn)平臺(tái)的設(shè)計(jì)中,用戶采用自頂向下的設(shè)計(jì)思路對(duì)界面布局進(jìn)行設(shè)計(jì),即先設(shè)計(jì)實(shí)驗(yàn)主界面,拖動(dòng)控件使布局區(qū)看起來美觀得體,再設(shè)計(jì)各個(gè)實(shí)驗(yàn)子界面,子界面的布局能符合實(shí)驗(yàn)的要求,方便輸入?yún)?shù)來觀察圖形的變化,界面設(shè)計(jì)完成后,用戶再借助于函數(shù)調(diào)用來達(dá)到實(shí)驗(yàn)?zāi)康?。其具體的設(shè)計(jì)步驟如下:1)利用MATLAB 的GUI設(shè)計(jì)方法,設(shè)計(jì)實(shí)驗(yàn)系統(tǒng)的主界面及擬定設(shè)計(jì)的“信號(hào)與系統(tǒng)”課程中具體實(shí)驗(yàn)的子界面。3)對(duì)各個(gè)子實(shí)驗(yàn)界面的控件按鈕進(jìn)行回調(diào)函數(shù)的編寫,使控件按鈕實(shí)現(xiàn)相應(yīng)的功能,用戶可以通過界面上的各個(gè)控件就可以改變數(shù)據(jù)的輸入輸出值,使實(shí)驗(yàn)人員可以方便地讀取實(shí)驗(yàn)結(jié)果的數(shù)據(jù)和分析圖像的功能。本系統(tǒng)用戶要根據(jù)不同的實(shí)驗(yàn)類型,控件個(gè)數(shù)的不同要求來規(guī)劃模塊,在設(shè)計(jì)的時(shí)候用戶應(yīng)本著界面美觀,簡(jiǎn)潔的原則來進(jìn)行規(guī)劃,各個(gè)模塊之間可以互相切換,每個(gè)實(shí)驗(yàn)可以完成參數(shù)的傳遞。①主界面模塊。為了使主界面看起來醒目,用戶把標(biāo)題的顏色設(shè)置成紅色,體現(xiàn)了本次課題的研究對(duì)象,其他控件里的文本字體顏色不變。實(shí)現(xiàn)這些子界面與主界面的連接的部分程序如下所示:function btn_GeneSignal_Callback(hObject, eventdata, handles)GenerateSignal。 % 調(diào)用“信號(hào)合成”子界面function btn_Sample_Callback(hObject, eventdata, handles)SampleVerify。 % 調(diào)用“零極點(diǎn)和沖激響應(yīng)關(guān)系”子界面function btn_Quit_Callback(hObject, eventdata, handles)delete()。每個(gè)模塊之間是互相獨(dú)立的,不影響用戶對(duì)實(shí)驗(yàn)的進(jìn)行,當(dāng)某個(gè)模塊不能運(yùn)行時(shí),其他模塊必須可以獨(dú)立運(yùn)行才能基本達(dá)到實(shí)驗(yàn)要求。在基本信號(hào)產(chǎn)生模塊當(dāng)中用戶使用了8個(gè)靜態(tài)文本,5個(gè)觸控按鈕,1個(gè)坐標(biāo)軸和8個(gè)可編輯文本控件組成?;拘盘?hào)界面如下圖43所示:圖43 基本信號(hào)模塊人們?cè)谌粘I詈凸ぷ髦卸茧x不開信息,需要對(duì)各種信息進(jìn)行獲取,傳輸處理和存儲(chǔ)。嚴(yán)格的說用戶在生活中遇到的都是隨機(jī)信號(hào),雖然如此,研究確定信號(hào)仍然是十分重要的。基本信號(hào)有很多種,為了方便快捷地觀察波形,也為了設(shè)計(jì)的方便,選取了5個(gè)平時(shí)學(xué)習(xí)當(dāng)中常用到的連續(xù)時(shí)間信號(hào):正弦信號(hào),指數(shù)信號(hào),階躍信號(hào),沖激信號(hào),抽樣信號(hào)。階躍信號(hào),沖激信號(hào),抽樣信號(hào)因?yàn)槎际翘厥獾暮瘮?shù),已經(jīng)固定好了波形,為了整體布局的美觀,用戶就設(shè)置了平移量參數(shù),遵循左加右減的原則。下面逐一介紹每個(gè)基本信號(hào)的生成過程:⒈正弦信號(hào)正弦信號(hào)的公式。正弦信號(hào)是周期信號(hào),其周期T與角頻率和頻率滿足下列關(guān)系式:T=2πω=1f ()正弦信號(hào)生成的編寫代碼如下:function btn_Sin_Callback(hObject, eventdata, handles)% hObject handle to btn_Sin (see GCBO)% eventdata reserved to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)axes()。String39。 % 讀取幅值W=str2num(get(,39。))。String39。 % 讀取相位 t=0:.001:10。plot(t,ft)。title(39。)。t39。ylabel(39。)。常數(shù)K表示指數(shù)信號(hào)在t=0點(diǎn)的初始值。 % 制定畫圖的軸A=str2num(get(,39。))。String39。 % 讀取相位t=0::10。plot(t,ft)。title(39。)。t39。ylabel(39。)。單位階躍函數(shù)的表達(dá)式為,當(dāng)時(shí),階躍信號(hào)產(chǎn)生的編寫代碼如下:function btn_Step_Callback(hObject, eventdata, handles)% hObject handle to btn_Step (see GCBO)% eventdata reserved to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)axes()。String39。String39。 % 限定時(shí)間范圍ft=(t+str2num(get(,39。))0)。 % 畫階躍信號(hào)圖形axis([str2num(get(,39。))10,str2num(get(,39。))+10,])。階躍信號(hào)39。xlabel(39。)。u(t)39。階躍信號(hào)產(chǎn)生的波形圖46如下所示:圖46 階躍信號(hào)沖激函數(shù)是一種特殊的函數(shù),在理論意義上沖激函數(shù)是階躍函數(shù)的微分。沖激函數(shù)的表達(dá)式為,當(dāng)時(shí)。 % 制定畫圖的軸 t1=str2num(get(,39。))。 %信號(hào)時(shí)間樣本點(diǎn)向量n=length(t)。 %產(chǎn)生一行全0矩陣,即各樣本點(diǎn)信號(hào)賦值為0x(1,(n1)/2)=1。 %用stairs命令畫步進(jìn)圖形axis([str2num(get(,39。))1,str2num(get(,39。))+1,0,1])。沖激信號(hào)39。xlabel(39。)。\delta(t)39。沖激信號(hào)產(chǎn)生的波形圖47如下所示:圖47 沖激信號(hào)抽樣信號(hào)的表達(dá)式為: ()抽樣信號(hào)也是周期函數(shù),還是偶函數(shù),抽樣信號(hào)的編寫代碼如下:function btn_Sample_Callback(hObject, eventdata, handles)% hObject handle to btn_Sample (see GCBO)% eventdata reserved to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)axes()。String39。String39。 % 限定信號(hào)時(shí)間范圍ft=sinc((t+str2num(get(,39。)))/pi)。String39。String39。 % 畫采樣信號(hào)plot(t,ft)。抽樣信號(hào)39。xlabel(39。)。Sa(t)39。抽樣信號(hào)產(chǎn)生的波形圖48如下所示:圖48 抽樣信號(hào)③周期信號(hào)的合成與分解模塊。主要表現(xiàn)在各頻率的正弦分量所占比重的大小。同樣,由基波及各次諧波分量都可以疊加成一個(gè)周期方波信號(hào)。吉布斯當(dāng)年發(fā)現(xiàn)了一個(gè)現(xiàn)象:將具有不連續(xù)點(diǎn)的周期函數(shù)進(jìn)行傅里葉級(jí)數(shù)展開之后,選取有限項(xiàng)進(jìn)行合成