【正文】
09. IEEE, 2009: 37873792.[20] Kuo S M, Lee B H, Tian W. RealTime Digital Signal Processing: Fundamentals, Implementations and Applications[M]. John Wiley amp。在此,對(duì)何松老師表示由衷的謝意!另外,還要感謝這四年來(lái)所有老師對(duì)我的辛苦培育,還有這四年來(lái)所有關(guān)心我的人,沒(méi)有你們,我也不能很好地完成此次任務(wù)。畢業(yè)設(shè)計(jì)過(guò)程中所學(xué)到的東西是這次畢業(yè)設(shè)計(jì)的最大收獲和財(cái)富,使我終身受益。在編程中我們遇到了一些麻煩,通過(guò)老師,同學(xué)的解答,基本能順利地完成。在短時(shí)間內(nèi)順利完成一個(gè)軟件,緊靠個(gè)人的能力是不夠的,需要?jiǎng)e人的幫助與自己的刻苦努力。本文首先介紹了基于MATLAB的信號(hào)與系統(tǒng)實(shí)驗(yàn)平臺(tái)的開(kāi)發(fā)現(xiàn)狀和研究本課題的意義,以及本文的主要工作,對(duì)基于MATLAB的信號(hào)與系統(tǒng)實(shí)驗(yàn)平臺(tái)有一個(gè)大概的認(rèn)識(shí),在此基礎(chǔ)上指導(dǎo)畢業(yè)設(shè)計(jì)的制作與完成。經(jīng)過(guò)三個(gè)多月的畢業(yè)設(shè)計(jì),發(fā)現(xiàn)自己在理論研究和實(shí)際工作能力等方面都得到了提高,受益匪淺。在基本信號(hào)產(chǎn)生模塊,周期信號(hào)合成與分解模塊,抽樣定理的驗(yàn)證模塊和零極點(diǎn)分布與沖激響應(yīng)關(guān)系的模塊當(dāng)中,用戶輸入不同的數(shù)據(jù)之后,結(jié)果會(huì)以可視化的方式顯示出來(lái),都是一些靜態(tài)的演示圖,通過(guò)編程來(lái)實(shí)現(xiàn)。在抽樣定理驗(yàn)證的模塊當(dāng)中波形隨著頻率的該變量并不是太明顯的,并不能很好地觀察出實(shí)驗(yàn)的效果出來(lái),還需要進(jìn)行完善,讓波形的改變量幅度比較大,讓觀察者觀察起來(lái)清晰可見(jiàn)。在主界面模塊中,用戶可以隨意切換到所需要的子界面當(dāng)中不影響試驗(yàn)的進(jìn)行,很好地體現(xiàn)了GUI的交互友好性,主界面還是比較單調(diào),整體布局不是太美觀,可以進(jìn)行改進(jìn),使界面看起來(lái)更加絢麗多彩。③ 抽樣定理驗(yàn)證模塊在本模塊中,用戶要驗(yàn)證抽樣定理的正確性,所以選擇的頻率要適當(dāng),能滿足實(shí)驗(yàn)的需求。當(dāng)輸入平移量=2時(shí),形成的圖象如下圖511所示:圖511 平移量為2的階躍信號(hào)波形圖通過(guò)兩張圖的對(duì)比發(fā)現(xiàn)平移量是符合“左加右減”的原則進(jìn)行平移的。指數(shù)函數(shù):當(dāng)輸入幅值==1時(shí),如下圖56所示:圖56 指數(shù)信號(hào)輸入框點(diǎn)擊“指數(shù)函數(shù)”按鈕,生成的波形如下圖57所示:圖57 幅值為2,相位為1的指數(shù)信號(hào)波形圖通過(guò)指數(shù)函數(shù)的關(guān)系式把數(shù)據(jù)帶進(jìn)去驗(yàn)證出此圖形的正確性。⑵測(cè)試波形。⑴測(cè)試界面鏈接。本章討論了整個(gè)平臺(tái)的整體設(shè)計(jì)思路,給出了系統(tǒng)框圖和各模塊之間的聯(lián)系和設(shè)計(jì)方法,還有還詳細(xì)的介紹了各個(gè)模塊生成波形的原理和程序,給出了設(shè)計(jì)出來(lái)的成品圖,為下面一章系統(tǒng)的測(cè)試打下基礎(chǔ)。首先用戶在MATLAB中命令行窗口中輸入guide,打開(kāi)GUI設(shè)計(jì)的圖形界面,然后拖入所需要的圖形控件,按需求修改外觀直至滿足要求。)。t39。axes()。實(shí)軸39。text(,39。)。hold on。 % 畫(huà)零極點(diǎn)hold on。 % 畫(huà)Y軸hold on。cla。 %將零點(diǎn)列向量轉(zhuǎn)置為行向量x = max(abs([p q]))。p = roots(A)。))。一個(gè)坐標(biāo)軸表示的為零極點(diǎn)分布圖,另一個(gè)坐標(biāo)軸表示的沖激響應(yīng)的函數(shù)圖像,他們是同時(shí)生成圖像。⑤零極點(diǎn)分布與沖激響應(yīng)關(guān)系的模塊經(jīng)查資料了解到,函數(shù)的極點(diǎn)決定了沖激響應(yīng)的形式,而各系數(shù)則由零極點(diǎn)共同決定。)。.39。t1 = 0 : 2/f/(n11) : 2/f。))。string39。)。t39。axes()。當(dāng)用戶固定了某個(gè)原始頻率之后就可以進(jìn)行抽樣定理的驗(yàn)證了。對(duì)連續(xù)信號(hào)進(jìn)行等間距的采樣形成采樣信號(hào),采樣信號(hào)的頻譜是按照原來(lái)連續(xù)信號(hào)的頻譜以采樣頻率為周期進(jìn)行周期性延拓形成的。在檢測(cè)信號(hào)發(fā)生的實(shí)際時(shí)間內(nèi)可以同時(shí)測(cè)得信號(hào)所包含的各頻率分量。 ylabel(39。 grid on。 plot(t,f,39。 case 4 % 畫(huà)一次、三次、五次、七次諧波疊加 axes()。)。 axis([4 4 *A *A])。 hold on。)。t39。)。 plot(t,f2)。f(t)39。 xlabel(39。r39。 cla。 % 一次、三次、五次、七次諧波疊加% 讀取下拉框的值,以此來(lái)判斷選擇了哪個(gè)項(xiàng)PopValue = get(,39。f1=A*4*sin(2*t*pi/T)/pi。string39。選取N次諧波分量的部分程序如下:function btn_SignalCompose_Callback(hObject, eventdata, handles)% hObject handle to btn_SignalCompose (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(,39。②畫(huà)出基波分量,觀察與原周期方波信號(hào)的誤差大小。f(t)39。xlabel(39。 % 生成原始方波axes()。 % 讀取方波幅值T = str2num(get(,39。為了醒目,還是把標(biāo)題顏色設(shè)置成紅色,子界面如下圖49所示:圖49 周期信號(hào)合成與分解模塊讀取方波的程序如下:function btn_OriginSignal_Callback(hObject, eventdata, handles)% hObject handle to btn_OriginSignal (see GCBO)% eventdata reserved to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)t=3*pi:pi/100000:3*pi。先來(lái)熟悉一下傅里葉級(jí)數(shù)分析的原理:任何周期信號(hào)都可以用一組三角函數(shù){}的組合表示: ()這表明傅里葉級(jí)數(shù)可以表示為連續(xù)的周期信號(hào),也即表示連續(xù)時(shí)間周期信號(hào)可以分解成無(wú)數(shù)多個(gè)復(fù)指數(shù)諧波分量,在這里表示為傅里葉級(jí)數(shù)的系數(shù),稱為基波頻率。當(dāng)選取的項(xiàng)數(shù)無(wú)窮大時(shí),該峰起值趨于一個(gè)常數(shù),大約等于總條數(shù)的9%。同樣,由基波及各次諧波分量都可以疊加成一個(gè)周期方波信號(hào)。抽樣信號(hào)產(chǎn)生的波形圖48如下所示:圖48 抽樣信號(hào)③周期信號(hào)的合成與分解模塊。)。抽樣信號(hào)39。String39。)))/pi)。String39。沖激信號(hào)產(chǎn)生的波形圖47如下所示:圖47 沖激信號(hào)抽樣信號(hào)的表達(dá)式為: ()抽樣信號(hào)也是周期函數(shù),還是偶函數(shù),抽樣信號(hào)的編寫(xiě)代碼如下: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()。)。沖激信號(hào)39。))1,str2num(get(,39。 %產(chǎn)生一行全0矩陣,即各樣本點(diǎn)信號(hào)賦值為0x(1,(n1)/2)=1。))。沖激函數(shù)的表達(dá)式為,當(dāng)時(shí)。u(t)39。xlabel(39。))+10,])。 % 畫(huà)階躍信號(hào)圖形axis([str2num(get(,39。 % 限定時(shí)間范圍ft=(t+str2num(get(,39。String39。)。t39。title(39。 % 讀取相位t=0::10。))。常數(shù)K表示指數(shù)信號(hào)在t=0點(diǎn)的初始值。ylabel(39。)。plot(t,ft)。String39。 % 讀取幅值W=str2num(get(,39。正弦信號(hào)是周期信號(hào),其周期T與角頻率和頻率滿足下列關(guān)系式:T=2πω=1f ()正弦信號(hào)生成的編寫(xiě)代碼如下: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()。階躍信號(hào),沖激信號(hào),抽樣信號(hào)因?yàn)槎际翘厥獾暮瘮?shù),已經(jīng)固定好了波形,為了整體布局的美觀,用戶就設(shè)置了平移量參數(shù),遵循左加右減的原則。嚴(yán)格的說(shuō)用戶在生活中遇到的都是隨機(jī)信號(hào),雖然如此,研究確定信號(hào)仍然是十分重要的。在基本信號(hào)產(chǎn)生模塊當(dāng)中用戶使用了8個(gè)靜態(tài)文本,5個(gè)觸控按鈕,1個(gè)坐標(biāo)軸和8個(gè)可編輯文本控件組成。 % 調(diào)用“零極點(diǎn)和沖激響應(yīng)關(guān)系”子界面function btn_Quit_Callback(hObject, eventdata, handles)delete()。實(shí)現(xiàn)這些子界面與主界面的連接的部分程序如下所示:function btn_GeneSignal_Callback(hObject, eventdata, handles)GenerateSignal。①主界面模塊。3)對(duì)各個(gè)子實(shí)驗(yàn)界面的控件按鈕進(jìn)行回調(diào)函數(shù)的編寫(xiě),使控件按鈕實(shí)現(xiàn)相應(yīng)的功能,用戶可以通過(guò)界面上的各個(gè)控件就可以改變數(shù)據(jù)的輸入輸出值,使實(shí)驗(yàn)人員可以方便地讀取實(shí)驗(yàn)結(jié)果的數(shù)據(jù)和分析圖像的功能。系統(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ū)看起來(lái)美觀得體,再設(shè)計(jì)各個(gè)實(shí)驗(yàn)子界面,子界面的布局能符合實(shí)驗(yàn)的要求,方便輸入?yún)?shù)來(lái)觀察圖形的變化,界面設(shè)計(jì)完成后,用戶再借助于函數(shù)調(diào)用來(lái)達(dá)到實(shí)驗(yàn)?zāi)康摹?3計(jì)算機(jī)信息工程學(xué)院畢業(yè)設(shè)計(jì)說(shuō)明書(shū)第4章 系統(tǒng)軟件平臺(tái)設(shè)計(jì)信號(hào)系統(tǒng)的實(shí)驗(yàn)是比較繁瑣復(fù)雜的,很多實(shí)驗(yàn)需要輸入不同的參數(shù)來(lái)達(dá)到實(shí)驗(yàn)的要求,假如用戶把系統(tǒng)設(shè)計(jì)成一個(gè)界面的話,會(huì)使得整個(gè)界面看起來(lái)繁瑣,擁擠,不能體現(xiàn)出界面友好,美化的功能。⑶ForegroundColor:文本顏色。當(dāng)MaxMin1時(shí),允許Edit Text顯示多行文本文字,否則的話只允許單行輸入。設(shè)一共有n個(gè)選項(xiàng),則Value只能是[1,n]之間的整數(shù)。用戶編輯時(shí)PopMenu的內(nèi)容選項(xiàng)數(shù)目必須跟switch case的編輯數(shù)目相同,不然會(huì)引起混亂,回調(diào)函數(shù)出錯(cuò)。⑷ForegroundColor:標(biāo)簽顏色。不同于Edit Text,Static Text控件最主要的作用是編輯標(biāo)題。⑵XTick,YTick,XMinorTick,YMinorTick,XTickMode,YTickMode:X,Y軸刻度,X,Y軸次級(jí)刻度,以及X,Y軸刻度模式。觸控按鈕最主要的應(yīng)用是編寫(xiě)它的回調(diào)函數(shù),在Push Button按鈕上單擊右鍵,選擇View Callbackscallback,用戶在這里面編寫(xiě)需要的M文件。⑶Callback:僅當(dāng)Enable屬性為on時(shí),在Push Button上單擊左鍵,調(diào)用此函數(shù)。(Push Button)首先用戶在GUI工具欄中找到Push Button按鈕,放置在布局區(qū)適合的位置,可以調(diào)整figure的大小。 控件的介紹用戶在實(shí)際使用Matlab時(shí)是通過(guò)一些基本的控件靈活運(yùn)用來(lái)地進(jìn)行設(shè)置,來(lái)滿足用戶的需求。Opening函數(shù)是在GUI開(kāi)始運(yùn)行但還不可見(jiàn)的時(shí)候執(zhí)行,主要進(jìn)行一些初始化的操作,Output函數(shù)是在需要的時(shí)候可輸出數(shù)據(jù)到命令行。GUI的M文件由一系列的子函數(shù)構(gòu)成,包括了主函數(shù),Opening函數(shù),Output函數(shù)和各種回調(diào)函數(shù)CallBack。在Matlab中,如果控件是按鈕,點(diǎn)擊按鈕時(shí),按鈕下的Callback就會(huì)觸動(dòng)執(zhí)行命令;如果控件是滑塊,拖動(dòng)滑塊時(shí),滑塊下的Callback就會(huì)執(zhí)行。GUI布局區(qū)。還可以添加菜單,進(jìn)行各種屬性的設(shè)置,使Matlab界面看起來(lái)更美觀。③GUI with axes and Menu:打開(kāi)之后包含菜單欄和坐標(biāo)軸圖形對(duì)象的編輯器,具有數(shù)據(jù)描繪功能。第一種是在命令行里輸入:guide,點(diǎn)回車鍵進(jìn)入GUI界面。 小結(jié)本章主要介紹了本課題的開(kāi)發(fā)平臺(tái),簡(jiǎn)述了Matlab語(yǔ)言的優(yōu)缺點(diǎn),簡(jiǎn)述了設(shè)計(jì)平臺(tái)(GUI)的搭建步驟,在下面的章節(jié)中將詳細(xì)介紹GUI平臺(tái)的搭建過(guò)程。鼠標(biāo)單擊或輸入信息是一個(gè)