MATLAB程序設(shè)計(jì) 課件 第10-12章 Simulink動態(tài)仿真設(shè)計(jì)、信號處理、神經(jīng)網(wǎng)絡(luò)_第1頁
MATLAB程序設(shè)計(jì) 課件 第10-12章 Simulink動態(tài)仿真設(shè)計(jì)、信號處理、神經(jīng)網(wǎng)絡(luò)_第2頁
MATLAB程序設(shè)計(jì) 課件 第10-12章 Simulink動態(tài)仿真設(shè)計(jì)、信號處理、神經(jīng)網(wǎng)絡(luò)_第3頁
MATLAB程序設(shè)計(jì) 課件 第10-12章 Simulink動態(tài)仿真設(shè)計(jì)、信號處理、神經(jīng)網(wǎng)絡(luò)_第4頁
MATLAB程序設(shè)計(jì) 課件 第10-12章 Simulink動態(tài)仿真設(shè)計(jì)、信號處理、神經(jīng)網(wǎng)絡(luò)_第5頁
已閱讀5頁,還剩105頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1MATLAB程序設(shè)計(jì)《MATLAB程序設(shè)計(jì)》2第十章Simulink動態(tài)仿真設(shè)計(jì)10.1Simulink仿真環(huán)境 10.2Simulink模塊庫 10.3Simulink基本操作和模塊的創(chuàng)建10.4Simulink系統(tǒng)建模 10.5運(yùn)行仿真 10.1Simulink仿真環(huán)境《MATLAB程序設(shè)計(jì)》3

Simulink主要用來實(shí)現(xiàn)對工程問題的模型化及動態(tài)仿真,其本身具有良好的圖形交互界面。Simulink體現(xiàn)了模塊化設(shè)計(jì)和系統(tǒng)級仿真的思想,采用模塊組合的方法使用戶能夠快速、準(zhǔn)確地創(chuàng)建動態(tài)系統(tǒng)的計(jì)算機(jī)模型,使得建模仿真如同搭積木一樣簡單。10.1Simulink仿真環(huán)境

10.1Simulink仿真環(huán)境《MATLAB程序設(shè)計(jì)》4(1)在MATLAB的命令行窗口中輸入Simulink,按Enter鍵,隨后單擊空白模塊按鈕進(jìn)入Simulink仿真平臺界面10.1Simulink仿真環(huán)境

10.1Simulink仿真環(huán)境《MATLAB程序設(shè)計(jì)》5(2)單擊MATLAB瀏覽器窗口工具欄上的Simulink按鈕進(jìn)入仿真平臺界面10.1Simulink仿真環(huán)境

10.1Simulink仿真環(huán)境《MATLAB程序設(shè)計(jì)》6打開Simulink模塊庫瀏覽器窗口10.1Simulink仿真環(huán)境

單擊窗口右上角的叉號,關(guān)閉Simulink仿真平臺和Simulink模塊庫瀏覽器窗口,即可退出Simulink仿真環(huán)境。10.2Simulink模塊庫《MATLAB程序設(shè)計(jì)》710.2.1標(biāo)準(zhǔn)模塊庫

標(biāo)準(zhǔn)Simulink模塊庫在Simulink窗口中名為Simulink,單擊該選項(xiàng),在模塊窗口中展開該模塊庫,標(biāo)準(zhǔn)Simulink模塊庫共含16個(gè)子庫10.2Simulink模塊庫《MATLAB程序設(shè)計(jì)》810.2.1標(biāo)準(zhǔn)模塊庫

(1)CommonlyUsedBlocks(常用模塊庫):該模塊庫將各模塊庫中最經(jīng)常使用的模塊放在一起,目的是為了方便用戶使用。(2)Continuous(連續(xù)系統(tǒng)模塊庫):該模塊庫提供了用于構(gòu)建連續(xù)控制系統(tǒng)仿真模型的模塊。(3)Discontinuities(非連續(xù)系統(tǒng)模塊庫):該模塊庫用于模擬各種非線性環(huán)節(jié)。(4)Discrete(離散系統(tǒng)模塊庫):該模塊庫功能基本與連續(xù)系統(tǒng)模塊庫相對應(yīng),但它是對離散信號的處理,所包含的模塊較豐富。10.2Simulink模塊庫《MATLAB程序設(shè)計(jì)》910.2.1標(biāo)準(zhǔn)模塊庫

(5)LogicandBitOperations(邏輯和位操作模塊庫):該模塊庫提供了用于完成各種邏輯與位操作(包括邏輯比較、位設(shè)置等)的模塊。(6)LookupTables(查表模塊庫):該模塊庫提供了一維查表模塊、n維查表模塊等模塊,主要功能是利用查表法近似擬合函數(shù)值。(7)MathOperations(數(shù)學(xué)運(yùn)算模塊庫):該模塊庫提供了用于完成各種數(shù)學(xué)運(yùn)算(包括加、減、乘、除以及復(fù)數(shù)計(jì)算、函數(shù)計(jì)算等)模塊。10.2Simulink模塊庫《MATLAB程序設(shè)計(jì)》1010.2.1標(biāo)準(zhǔn)模塊庫

(8)ModelVerification(模塊聲明庫):該模塊庫提供了顯示模塊聲明的模塊,如Assertion聲明模塊和CheckDvnamicRanoe檢杏動太范圍植塊。(9)Model-WideUtilities(模塊擴(kuò)充功能庫):該模塊庫提供了支持??鞌U(kuò)充操作的模塊,如DocBlock文檔模塊等。(10)Ports&Subsystems(端口和子系統(tǒng)模塊庫):該模塊庫提供了許多按條件判斷執(zhí)行的使能和觸發(fā)模塊,還包括重要的子系統(tǒng)模塊。10.2Simulink模塊庫《MATLAB程序設(shè)計(jì)》1110.2.1標(biāo)準(zhǔn)模塊庫

(11)SignalAttributes(信號屬性植塊庫):該植塊庫提供了支持信號屬性的模塊,如DataTypeConversion數(shù)據(jù)類型轉(zhuǎn)換植塊等。(12)SignalRouting(信號數(shù)據(jù)流模塊庫):該模塊庫提供了用于仿真系統(tǒng)中信號和數(shù)據(jù)各種流向控制操作(包括合并、分離、選擇、數(shù)據(jù)讀寫)的模塊。(13)Sinks(接收器模塊庫):該模塊庫提供了9種常用的顯示和記錄儀表,用于觀察信號的波形或記錄信號數(shù)據(jù)。10.2Simulink模塊庫《MATLAB程序設(shè)計(jì)》1210.2.1標(biāo)準(zhǔn)模塊庫

(14)Sources(信號源模塊庫):

該模塊庫提供了20多種常用的信號發(fā)生器,用于產(chǎn)生系統(tǒng)的激勵(lì)信號,并且可以從MATLAB工作空間及.mat文件中讀入信號數(shù)據(jù)。(15)User-DefinedFunctions(用戶自定義函數(shù)庫):

該模塊庫的模塊可以在系統(tǒng)模型中插入M函數(shù)、S函數(shù)以及自定義函數(shù)等,使系統(tǒng)的仿真功能更強(qiáng)大。(16)AdditionalMath&Discrete(附加的數(shù)學(xué)與離散函數(shù)庫):

該模塊庫提供了附加的數(shù)學(xué)與離散函數(shù)模塊,如Fixed-PointStateSpace修正點(diǎn)狀態(tài)空間模塊。10.2Simulink模塊庫《MATLAB程序設(shè)計(jì)》1310.2.2專業(yè)模塊庫

它們是各領(lǐng)域?qū)<覟闈M足特殊需要在標(biāo)準(zhǔn)Simulink模塊庫基礎(chǔ)上開發(fā)出來的。比如,電力系統(tǒng)模塊庫。SimPowerSystems(電力系統(tǒng)模塊庫)是專用于RLC電路、電力電子電路、電機(jī)傳動控制系統(tǒng)和電力系統(tǒng)仿真的模塊庫。該模塊庫中包含了各種交、直流電源、大量電氣元器件和電工測量儀表以及分析工具等。利用這些模塊可以模擬電力系統(tǒng)運(yùn)行和故障的各種狀態(tài),并進(jìn)行仿真和分析。各專業(yè)模塊庫涉及較深的專業(yè)知識,讀者若有應(yīng)用,可查看MATLAB幫助文檔。10.3Simulink基本操作和模塊的創(chuàng)建《MATLAB程序設(shè)計(jì)》1410.3.1模塊的基本操作

操作內(nèi)容操作目的操作方法選取模塊從模塊庫瀏覽器中選取需要的模塊放入Simulink仿真平臺窗口中方法1:在目標(biāo)模塊上按下鼠標(biāo)左鍵,拖動目標(biāo)模塊進(jìn)入Simulink仿真平臺中,松開左鍵方法2:在目標(biāo)模塊上單擊鼠標(biāo)右鍵,彈出快捷菜單,選擇“Addtountitled”選項(xiàng)刪除模塊刪除窗口中不需要的模塊選中模塊,按下Delete鍵調(diào)整模塊大小改善模型的外觀,調(diào)整整個(gè)模型的布置選中模塊,模塊四角將出現(xiàn)小方塊。單擊一個(gè)角上的小方塊并按住鼠標(biāo)左鍵,拖曳鼠標(biāo)到合理大小位置移動模塊將模塊移動到合適位置,調(diào)整整個(gè)模型的布置單擊模塊,拖曳模塊到合適的位置,松開鼠標(biāo)按鍵旋轉(zhuǎn)模塊適應(yīng)實(shí)際系統(tǒng)的方向,調(diào)整整個(gè)模型的布置方法1:選中模塊,選擇菜單命令Diagram→Rotate&Flip→Clockwise,模塊順時(shí)針旋轉(zhuǎn)90°;選擇菜單命令Diagram一Rotate&Flip→Counterclockwise,模塊逆時(shí)針旋轉(zhuǎn)180°;選擇菜單命令Diagram→Rotate&Flip→FlipBlock,模塊左右或上下翻轉(zhuǎn);選擇菜單命令Diagram→Rotate&Flip→FlipBlockName,模塊左右或上下翻轉(zhuǎn)模塊名字方法2:右鍵單擊目標(biāo)模塊,在彈出的快捷菜單中進(jìn)行與方法1同樣的菜單項(xiàng)選擇復(fù)制內(nèi)部模塊內(nèi)部復(fù)制已經(jīng)設(shè)置好的模央塊,而不用重新到模塊庫瀏覽器中選取方法1:先按住Ctrl鍵,再單擊模塊,拖曳模塊到合適的位置,松開鼠標(biāo)按鍵方法2:選中模塊,使用Edit→Copy及Edit→Paste命令模塊參數(shù)調(diào)整按照用戶自己意愿調(diào)整模塊的參數(shù),滿足仿真需要方法1:雙擊模塊,彈出“...BlockParameter...”對話框,修改參數(shù)方法2:右鍵單擊目標(biāo)模塊,在彈出的快捷菜單中“...Parameter”選項(xiàng),彈出“...BlockParameter...”對話框改變標(biāo)簽內(nèi)容按照用戶自己意愿對模塊進(jìn)行命名,增強(qiáng)模型的可讀性在標(biāo)簽的任何位置上單擊鼠標(biāo),進(jìn)入模塊標(biāo)簽的編輯狀態(tài),輸入新的標(biāo)簽,在標(biāo)簽編輯框外的窗口中任何地方單擊鼠標(biāo)退出10.3Simulink基本操作和模塊的創(chuàng)建《MATLAB程序設(shè)計(jì)》1510.3.2信號線的基本操作

操作內(nèi)容操作目的操作方法在模塊間連線在兩個(gè)模塊之間建立信號聯(lián)系在上級模塊的輸出端按住鼠標(biāo)左鍵,拖動至下級模塊的輸入端,松開鼠標(biāo)左鍵移動線段調(diào)整線段的位置,改善模型的外觀選中目標(biāo)線段,按住鼠標(biāo)左鍵,拖曳到目標(biāo)位置,松開鼠標(biāo)左鍵移動節(jié)點(diǎn)可改變折線的走向,改善模型的外觀選中目標(biāo)節(jié)點(diǎn),按住鼠標(biāo)左鍵,拖曳到目標(biāo)位置,松開鼠標(biāo)左鍵畫分支信號線從一個(gè)節(jié)點(diǎn)引出多條信號線,應(yīng)用于不同目的方法1:先按住Ctrl鍵,再選中信號引出點(diǎn),按住鼠標(biāo)左鍵,拖曳到下級目標(biāo)模塊的信號輸入端,松開鼠標(biāo)左鍵方法2:先選中信號引出線,然后在信號引出點(diǎn)按住鼠標(biāo)右鍵,拖曳到下級目標(biāo)模塊的信號輸入端,松開鼠標(biāo)右鍵刪除信號線刪除窗口中不需要的線段或斷開模塊間連線選中目標(biāo)信號線,然后按Delete鍵信號線標(biāo)簽設(shè)定信號線的標(biāo)簽,增強(qiáng)模型的可讀性雙擊要標(biāo)注的信號線,進(jìn)入標(biāo)簽的編輯區(qū),輸入信號線標(biāo)簽內(nèi)容,在標(biāo)簽編輯框外的窗口中單擊鼠標(biāo)退出10.3Simulink基本操作和模塊的創(chuàng)建《MATLAB程序設(shè)計(jì)》1610.3.3系統(tǒng)模型的基本操作

操作內(nèi)容操作目的操作方法創(chuàng)建模型創(chuàng)建一個(gè)新的模型方法1:選擇MATLAB菜單命令Home→New→SimulinkModel方法2:單擊Simulink模塊庫瀏覽器窗口工具欄ENewModel(新模型)按鍵打開模型打開一個(gè)已有的模型方法1:選擇MATLAB菜單命令Home→Open方法2:單擊Simulink模塊庫瀏覽器窗口OpenModel(打開模型)按鍵保存模型保存仿真平臺中模型方法1:選擇Simulink仿真平臺窗口菜單命令File→Save或者File→Saveas方法2:單擊Simulink仿真平臺窗口Save(保存)按鍵注釋模型使模型更易讀懂在模型窗口中的任何想要加注釋的位置上雙擊鼠標(biāo),進(jìn)入注釋文字編輯框,輸入注釋內(nèi)容,在窗口中任何其他位置單擊鼠標(biāo)退出10.3Simulink基本操作和模塊的創(chuàng)建《MATLAB程序設(shè)計(jì)》1710.3.3系統(tǒng)模型的基本操作

10.3Simulink基本操作和模塊的創(chuàng)建《MATLAB程序設(shè)計(jì)》1810.3.4子系統(tǒng)建立

一般而言,規(guī)模較大的系統(tǒng)仿真模型,都包含了數(shù)量可觀的各種模塊。如果這些模塊都直接顯示在Simulink仿真平臺窗口中,將顯得擁擠、雜亂,不利于用戶建模和分析??梢园褜?shí)現(xiàn)同一種功能或幾種功能的多個(gè)模塊組合成一個(gè)子系統(tǒng),從而簡化模型,其效果如同其他高級語言中子程序和子函數(shù)的功能。10.3Simulink基本操作和模塊的創(chuàng)建《MATLAB程序設(shè)計(jì)》1910.3.4子系統(tǒng)建立

方法一:“子系統(tǒng)”模塊①新建一個(gè)空白模型。②打開“端口和子系統(tǒng)”模塊庫,選取其中的Subsystem(子系統(tǒng))模塊,并把它復(fù)制到新建的仿真平臺窗口中。③雙擊Subsystem模塊,此時(shí)彈出子系統(tǒng)編輯窗口。系統(tǒng)自動在該窗口中添加一個(gè)輸入和輸出端子,名為In1和Out1,這是子系統(tǒng)與外部聯(lián)系的端口④將組成子系統(tǒng)的所有模塊都添加到該子系統(tǒng)中,并將添加的模塊進(jìn)行合理排列。⑤根據(jù)要求用信號線連接各模塊。⑥修改外接端子標(biāo)簽并重新定義子系統(tǒng)標(biāo)簽,使子系統(tǒng)更具可讀性。10.3Simulink基本操作和模塊的創(chuàng)建《MATLAB程序設(shè)計(jì)》2010.3.4子系統(tǒng)建立

方法二:組合已存在的模塊①打開已經(jīng)存在的模型。②選中要組合到子系統(tǒng)中的所有對象,包括各模塊及其連線。③選擇菜單欄中的建?!鷦?chuàng)建子系統(tǒng)命令,模型自動轉(zhuǎn)換成子系統(tǒng)。④修改外接端子標(biāo)簽并重新定義子系統(tǒng)標(biāo)簽,使子系統(tǒng)更具可讀性。10.3Simulink基本操作和模塊的創(chuàng)建《MATLAB程序設(shè)計(jì)》2110.3.4子系統(tǒng)建立

方法二:組合已存在的模塊10.4Simulink系統(tǒng)建?!禡ATLAB程序設(shè)計(jì)》22

Simulink系統(tǒng)建模的過程和具體操作步驟一般如下。(1)分析待仿真系統(tǒng),確定待建模型的功能需求和結(jié)構(gòu)。(2)啟動模塊庫瀏覽器窗口,執(zhí)行菜單欄中的“空白模塊”命令,新建一個(gè)模型文件。(3)在模塊庫瀏覽器窗口中找到模型所需的各模塊,并分別將其拖曳到新建的仿真平臺窗口中。(4)將各模塊適當(dāng)排列,并用信號線將其正確連接。(5)對模塊和信號線重新標(biāo)注。(6)依據(jù)實(shí)際需要對相應(yīng)模塊設(shè)置合適的參數(shù)值。(7)如有必要,可對模型進(jìn)行子系統(tǒng)建立和封裝處理。(8)保存模型文件。10.4Simulink系統(tǒng)建?!禡ATLAB程序設(shè)計(jì)》23

例10-1請采用simlink建立下列二元一次微分方程仿真模型其中,m,c和k分別表示質(zhì)量,阻尼和剛度,F(xiàn)(t)表示激振力,x表示振動位移,x的一階導(dǎo)數(shù)和二階導(dǎo)數(shù)分別表示速度和加速度。(1)分析仿真系統(tǒng)。上述二元一次微分方程描述了物體振動過程,為了方便建立模型,將上述方程變形為,10.4Simulink系統(tǒng)建?!禡ATLAB程序設(shè)計(jì)》24

(2)創(chuàng)建Simulink模型文件。創(chuàng)建如圖所示的Simulink模型文件。10.4Simulink系統(tǒng)建?!禡ATLAB程序設(shè)計(jì)》25

(3)設(shè)置模塊參數(shù)。根據(jù)系統(tǒng)的實(shí)際物理意義,修改各模塊標(biāo)簽名稱,本模型比較簡單,除了質(zhì)量,阻尼和剛度用同樣的Gain模塊表示外,其余模塊并不容易混淆,且物理意義比較明確,因此在模型中,修改模塊標(biāo)簽名稱意義不大,此處不在修改,維持原模型狀態(tài)。(4)創(chuàng)建子系統(tǒng)。對于復(fù)雜仿真模型,如果將所有仿真模塊放到一個(gè)層級,將顯得特別雜亂,不利于后續(xù)模塊調(diào)試,因此可將部分模塊進(jìn)行子系統(tǒng)創(chuàng)建,這樣整個(gè)模型就可以通過多個(gè)子系統(tǒng)相互連接而成,從表型形式上更為簡化和明確,也有利于后續(xù)的模型調(diào)試。10.4Simulink系統(tǒng)建?!禡ATLAB程序設(shè)計(jì)》26

(4)創(chuàng)建子系統(tǒng)。對于復(fù)雜仿真模型,如果將所有仿真模塊放到一個(gè)層級,將顯得特別雜亂,不利于后續(xù)模塊調(diào)試,因此可將部分模塊進(jìn)行子系統(tǒng)創(chuàng)建,這樣整個(gè)模型就可以通過多個(gè)子系統(tǒng)相互連接而成,從表型形式上更為簡化和明確,也有利于后續(xù)的模型調(diào)試。10.5運(yùn)行仿真《MATLAB程序設(shè)計(jì)》27

10.5.1運(yùn)行仿真過程Simulink一般使用窗口菜單命令進(jìn)行仿真,方便且人機(jī)交互性強(qiáng),用戶可容易地進(jìn)行仿真解法以及仿真參數(shù)的選擇、定義和修改等操作。(1)設(shè)置仿真參數(shù)①求解器:設(shè)置仿真的起始和終止時(shí)間,設(shè)置積分解法以及步長等參數(shù);②數(shù)據(jù)導(dǎo)入/導(dǎo)出:Simulink和MATLAB工作空間數(shù)據(jù)的輸入和輸出設(shè)定,以及數(shù)據(jù)存儲時(shí)的格式、長度等參數(shù)設(shè)置;③診斷:允許讀者選擇在仿真過程中警告信息顯示等級。選擇適當(dāng)?shù)乃惴ú⒃O(shè)置好其他仿真參數(shù)后,選擇對話框中的OK或Apply按鈕,使修改的設(shè)置生效。10.5運(yùn)行仿真《MATLAB程序設(shè)計(jì)》28

10.5.1運(yùn)行仿真過程(1)設(shè)置仿真參數(shù)10.5運(yùn)行仿真《MATLAB程序設(shè)計(jì)》29

10.5.1運(yùn)行仿真過程(2)啟動仿真完成仿真參數(shù)的設(shè)置后,就可以開始仿真。確認(rèn)待仿真的仿真平臺窗口為當(dāng)前窗口,選擇菜單命令建模-運(yùn)行或單擊工具欄中的圖標(biāo)啟動仿真。(3)顯示仿真結(jié)果如果建立的模型沒有錯(cuò)誤,選擇的參數(shù)合適,則仿真過程將順利進(jìn)行。這時(shí),雙擊模型中用來顯示輸出的模塊(如Scope顯示器模塊),就可以觀察到仿真的結(jié)果。當(dāng)然,也可以在仿真開始前先打開顯示輸出模塊,再開始仿真。(4)停止仿真對于仿真時(shí)間較長的模型,如果在仿真過程結(jié)束之前,用戶想要停止此次仿真過程,可以選擇菜單命令建模-停止或單擊工具欄中的圖標(biāo)停止仿真。10.5運(yùn)行仿真《MATLAB程序設(shè)計(jì)》30

10.5.1運(yùn)行仿真過程(5)仿真診斷在仿真過程中若出現(xiàn)錯(cuò)誤,Simulink將會終止仿真并彈出“診斷查看器”錯(cuò)誤信息對話框10.5運(yùn)行仿真《MATLAB程序設(shè)計(jì)》31

10.5.2仿真參數(shù)設(shè)置(1)仿真時(shí)間設(shè)置仿真時(shí)間非常重要,它決定了模型仿真的時(shí)間或取值范圍,其設(shè)置完全根據(jù)待仿真系統(tǒng)的特性確定,反映在輸出顯示上就是示波器的橫軸坐標(biāo)值的取值范圍?!伴_始時(shí)間”和“結(jié)束時(shí)間”項(xiàng)分別用以設(shè)置仿真開始時(shí)間(或取值范圍下限)和終止時(shí)間(或取值范圍上限),默認(rèn)值分別為0.0和10.0。10.5運(yùn)行仿真《MATLAB程序設(shè)計(jì)》32

10.5.2仿真參數(shù)設(shè)置(2)選擇仿真算法算法名稱算法說明變步長算法ode45基于顯式Runge-Kutta(4,5)和Dormand-Prince組合的算法,是一種一步算法,即只要前一時(shí)間點(diǎn)的解,就可以立即計(jì)算當(dāng)前時(shí)間點(diǎn)的方程解。對大多數(shù)仿真模型來說,首先使用ode45來解算模型是最佳的選擇,因此在Simulink的算法選擇中將ode45設(shè)為默認(rèn)的算法ode23基于顯式Runge-Kutta(2,3)、Bogacki-Shampine相結(jié)合的算法,也是一種一步算法。在容許誤差和計(jì)算略帶剛性的問題方面,該算法比ode45更好ode113可變階次的Adams-Bashforth-Moulton算法,是一種多步算法,即需要使用前幾次節(jié)點(diǎn)上的值來計(jì)算當(dāng)前節(jié)點(diǎn)的解。在精度要求高的情況下,該算法比ode45更合適ode15s一種可變階次的多步算法,當(dāng)遇到帶剛性(Stiff)的問題時(shí)或者使用ode45算法很慢時(shí),可以一試ode23s剛性方程固定階次的單步解法。在容許誤差較大時(shí),比ode15s有效。因此,如果系統(tǒng)是剛性系統(tǒng),可以同時(shí)嘗試兩種方法以確定哪一個(gè)更快ode23t一種采用自由內(nèi)插方法的梯形算法。如果系統(tǒng)為中度剛性且要求解沒有數(shù)值衰減時(shí),可考慮此解法ode23b采用TR-BDF2算法,即在龍格-庫塔法的第一階段用梯形法,第二階段用二階的BackwardDifferentiationFormulas算法。在容差比較大時(shí),ode23tb和ode23t都比ode15s要好discrete針對非連續(xù)系統(tǒng)(離散系統(tǒng))的特殊算法注釋模型ode8采用固定步長的8階Dormand-Prince的算法ode5采用固定步長的5階Dormand-Prince的算法,即固定步長的ode45算法ode4采用固定步長的4階Runge-Kutta算法ode3采用固定步長的Bogacki-Shampine算法ode3采用固定步長的2階Runge-Kutta算法,也稱Heun算法ode1固定步長的Eular算法discrete不含積分的固定步長算法,適用于沒有連續(xù)狀態(tài)僅有離散狀態(tài)模型的計(jì)算10.5運(yùn)行仿真《MATLAB程序設(shè)計(jì)》33

10.5.3示波器的使用(1)示波器參數(shù)單擊示波器參數(shù)按鈕,彈出示波器參數(shù)對話框,該對話框中含有三個(gè)選項(xiàng)卡,分別是常設(shè)、時(shí)間、畫面、記錄。10.5運(yùn)行仿真《MATLAB程序設(shè)計(jì)》34

10.5.3示波器的使用(1)示波器參數(shù)單擊示波器參數(shù)按鈕,彈出示波器參數(shù)對話框,該對話框中含有三個(gè)選項(xiàng)卡,分別是常設(shè)、時(shí)間、畫面、記錄。①常設(shè)選項(xiàng)卡

“輸入端口個(gè)數(shù)”坐標(biāo)個(gè)數(shù)文本框:用于設(shè)定示波器的y軸數(shù)量,即示波器的輸入信號端口的個(gè)數(shù),默認(rèn)值為1,即該示波器用以觀察一路信號。若將其設(shè)為2,則可以同時(shí)觀察兩路信號,示波器的圖標(biāo)也自動變?yōu)閮蓚€(gè)輸入端口;其示波器窗口內(nèi)顯示的圖形也會變成兩個(gè)。10.5運(yùn)行仿真《MATLAB程序設(shè)計(jì)》35

10.5.3示波器的使用①常設(shè)選項(xiàng)卡10.5運(yùn)行仿真《MATLAB程序設(shè)計(jì)》36

10.5.3示波器的使用將數(shù)據(jù)點(diǎn)限制為最后:用于數(shù)據(jù)點(diǎn)數(shù)設(shè)置。選中后,其右側(cè)的文本框被激活,默認(rèn)值為5000,表示示波器顯示5000個(gè)數(shù)據(jù),若超過5000個(gè)數(shù)據(jù),也僅顯示最后的5000個(gè)數(shù)據(jù)。若不選該項(xiàng),所有數(shù)據(jù)都顯示,但對計(jì)算機(jī)內(nèi)存要求較高。②記錄選項(xiàng)卡10.5運(yùn)行仿真《MATLAB程序設(shè)計(jì)》37

10.5.3示波器的使用③風(fēng)格選項(xiàng)卡圖框顏色:選擇圖形繪制的背景顏色;坐標(biāo)區(qū)顏色:第一個(gè)下拉框可以選擇坐標(biāo)軸的顏色,第二個(gè)可以選擇文字的顏色;曲線屬性:分別可以在Line線條屬性和Marker標(biāo)注屬性中選擇不同的曲線繪制方法,與第二章中圖形繪制所介紹的屬性類似。10.5運(yùn)行仿真《MATLAB程序設(shè)計(jì)》38

10.5.3示波器的使用④圖形放縮仿真波形在示波器中顯示,有時(shí)讀者需要對波形顯示區(qū)域和大小進(jìn)行適當(dāng)調(diào)整,達(dá)到最佳觀察效果。示波器窗口的工具欄提供了兩個(gè)工具按鈕用以圖形縮放操作。a區(qū)域放大按鈕:首先在工具欄中單擊該按鈕,然后在窗口中需要放大的區(qū)域上按住鼠標(biāo)左鍵并拖曳一個(gè)矩形框,用矩形框框住需要放大的圖形區(qū)域,松開鼠標(biāo)左鍵,該區(qū)域被放大顯示。b.圖自動尺寸按鈕:能自動調(diào)整示波器的橫軸和縱軸,既可完全顯示讀者用戶的仿真時(shí)間域以及對應(yīng)的結(jié)果數(shù)值域,又能取得合理的顯示效果,應(yīng)用非常方便。10.5運(yùn)行仿真《MATLAB程序設(shè)計(jì)》39

10.5.3示波器的使用⑤坐標(biāo)軸范圍示波器的x軸和y軸的最大取值范圍一般是自動設(shè)定的,利用圖形縮放中的放大鏡功能可以在x軸和y軸的范圍內(nèi)選取其中一部分顯示。當(dāng)需要進(jìn)一步放大y軸的范圍或更精確地標(biāo)定y軸的坐標(biāo)范圍時(shí),可以利用軸參數(shù)設(shè)置頁進(jìn)行設(shè)置。10.5運(yùn)行仿真《MATLAB程序設(shè)計(jì)》40

10.5.3示波器的使用例10-2對例10-1所建立的模型進(jìn)行仿真,并觀察系統(tǒng)特性。(1)打開模型文件“Ex10_1.slx”文件。選擇建?!P驮O(shè)置或單擊工具欄中的按鈕,將仿真時(shí)間設(shè)置區(qū)域內(nèi)的開始時(shí)間設(shè)置為0.0,結(jié)束時(shí)間設(shè)置為10.0。(2)模塊參數(shù)設(shè)置雙擊SineWave模塊,參數(shù)設(shè)置如圖所示,10.5運(yùn)行仿真《MATLAB程序設(shè)計(jì)》41

10.5.3示波器的使用例10-2對例10-1所建立的模型進(jìn)行仿真,并觀察系統(tǒng)特性。(3)運(yùn)行仿真選擇菜單命令建模-運(yùn)行或單擊工具欄中的圖標(biāo)啟動仿真。仿真結(jié)束后,雙擊示波器模塊,在彈出的示波器面板中可以觀察到系統(tǒng)仿真結(jié)果,10.5運(yùn)行仿真《MATLAB程序設(shè)計(jì)》42

10.5.4一般系統(tǒng)中的仿真例10-3已知一個(gè)系統(tǒng)的傳遞函數(shù)如下式所示,采用Simulink求系統(tǒng)的階躍響應(yīng)特性。10.5運(yùn)行仿真《MATLAB程序設(shè)計(jì)》43

10.5.4一般系統(tǒng)中的仿真(1)新建一個(gè)Simulink模型文件,保存為Ex10_2.slx。(2)從Simulink模塊庫瀏覽器中尋找建植需要的植塊并拖曳到仿真平臺窗口,如圖所示,排列模塊并正確連線。10.5運(yùn)行仿真《MATLAB程序設(shè)計(jì)》44

10.5.4一般系統(tǒng)中的仿真(3)按圖所示設(shè)置TransferFcn模塊參數(shù),按圖所示設(shè)置Sum模塊參數(shù)。參數(shù)設(shè)置完成后的系統(tǒng)仿真結(jié)構(gòu)如圖所示。(4)將仿真終止由默認(rèn)的10.0改為30.0,再選擇菜單命令建?!\(yùn)行或單擊Simulink仿真平臺窗口工具欄中的圖標(biāo),進(jìn)行系統(tǒng)仿真。45MATLAB程序設(shè)計(jì)《MATLAB程序設(shè)計(jì)》46第十一章信號處理11.1MATLAB信號處理基礎(chǔ)知識 11.2統(tǒng)計(jì)信號處理 11.3IIR濾波器 11.4FIR濾波器 11.5特殊波形發(fā)生函數(shù) 11.1MATLAB信號處理基礎(chǔ)知識《MATLAB程序設(shè)計(jì)》47信號采樣即為對連續(xù)信號離散化過程,假設(shè)以頻率fs對信號進(jìn)行采樣,則其采樣間隔Δt可表示為11.1.1信號采樣

假設(shè)對一個(gè)連續(xù)的正弦信號進(jìn)行離散采樣,令正弦信號表達(dá)式為采用fs對上述信號進(jìn)行采樣,則對應(yīng)某個(gè)時(shí)刻t,有得到離散化后的信號為11.1MATLAB信號處理基礎(chǔ)知識《MATLAB程序設(shè)計(jì)》48例11-1假設(shè)一正弦信號幅值A(chǔ)為1,頻率f為50Hz,相位φ為20°,常偏量C為0,t取值范圍為0~0.1。令采樣頻率fs為500Hz,請對該信號進(jìn)行離散化,并繪制采樣后的離散信號序列。11.1.1信號采樣

A=1;f=50;fs=500;detaT=1/fs;t1=0;t2=0.1;t=t1:detaT:t2;phi=20/180*pi;%信號采樣模擬y=A*sin(2*pi*f*t+phi);%信號采樣點(diǎn)顯示figureplot(t,y,'k--o','MarkerFaceColor','k');xlabel('t’);

ylabel('y');11.1MATLAB信號處理基礎(chǔ)知識《MATLAB程序設(shè)計(jì)》49工程實(shí)際中采樣獲得的信號,均會受到不同程度的環(huán)境噪聲和采集系統(tǒng)噪聲影響。通常將信號外部噪聲干擾看作高斯白噪聲。11.1.2噪聲模擬

MATLAB函數(shù)包normrnd可以產(chǎn)生指定均值和標(biāo)準(zhǔn)差的高斯白噪聲,其調(diào)用格式如下:r=normrnd(mu,sigma)r=normrnd(mu,sigma,sz1,…,szN)r=normrnd(mu,sigma,sz)11.1MATLAB信號處理基礎(chǔ)知識《MATLAB程序設(shè)計(jì)》50例11-2令一信號如例11-1所示,采樣頻率fs為1500Hz,在采集過程中,考慮環(huán)境和采集系統(tǒng)噪聲影響,令噪聲符合均值為0,標(biāo)準(zhǔn)差為0.5的高斯白噪聲分布,請仿真模擬受噪聲干擾的采樣信號。11.1.2噪聲模擬

A=1;f=50;fs=1500;detaT=1/fs;t1=0;t2=0.1;t=t1:detaT:t2;phi=20/180*pi;%信號采樣模擬y=A*sin(2*pi*f*t+phi);%噪聲模擬noise=normrnd(0,0.2,size(y));%噪聲干擾后的信號yNoise=y+noise;%信號采樣點(diǎn)顯示figureplot(t,yNoise,'r-','MarkerFaceColor','k');holdonplot(t,y,'k--')xlabel('t');ylabel('y');legend('yNosie','y')11.1MATLAB信號處理基礎(chǔ)知識《MATLAB程序設(shè)計(jì)》51信號頻譜分析是進(jìn)行信號處理的常規(guī)手段,通過傅里葉變換,將時(shí)域信號轉(zhuǎn)變?yōu)轭l域信號,從頻譜分布的角度對信號進(jìn)行分析,有利于獲得信號隱藏的更為豐富的信息,并進(jìn)一步用于指導(dǎo)工程實(shí)踐。11.1.3頻譜分析

假設(shè)一個(gè)離散信號序列為xi(i=0,1,2,…,N-1)則對xi進(jìn)行傅里葉變換為

其中exp(·)表示以e為底的指數(shù)運(yùn)算,k表示數(shù)值頻率,N表示離散數(shù)據(jù)點(diǎn)數(shù),Xk表示對應(yīng)數(shù)值k的傅里葉變換結(jié)果。11.1MATLAB信號處理基礎(chǔ)知識《MATLAB程序設(shè)計(jì)》52傅里葉逆變換為11.1.3頻譜分析

通過傅里葉逆變換可將頻域信息再次轉(zhuǎn)換為時(shí)域信息。上述傅里葉變換和逆變換是數(shù)學(xué)上的定義。在工程實(shí)際中,為了賦予數(shù)值頻率k以物理意義,通常將數(shù)值頻率k轉(zhuǎn)換為物理頻率f(單位:Hz),轉(zhuǎn)換過程如下,11.1MATLAB信號處理基礎(chǔ)知識《MATLAB程序設(shè)計(jì)》5311.1.3頻譜分析

在MATLAB中,通常采用快速傅里葉算法實(shí)現(xiàn)信號時(shí)域和頻域之間的轉(zhuǎn)換,對應(yīng)的函數(shù)包為fft,其具體調(diào)用格式如下,Y=fft(x)Y=fft(x,n)Y=fft(x,n,dim)例11-3假設(shè)信號符合下式其中,A1為0.7,A2為1,f1和f2分別為50Hz和120Hz,采用1kHz采樣頻率對上述信號進(jìn)行采樣,采樣時(shí)長為1.5s,noise符合均值為0,標(biāo)準(zhǔn)差為2的高斯白噪聲隨機(jī)分布,使用傅里葉變換求噪聲中隱藏的信號頻率分量11.1MATLAB信號處理基礎(chǔ)知識《MATLAB程序設(shè)計(jì)》5411.1.3頻譜分析

fs=1e3;detaT=1/fs;t1=0;t2=1.5;t=t1:detaT:t2;A1=0.7;A2=1;f1=50;f2=120;x=A1*sin(2*pi*f1*t)+A2*sin(2*pi*f2*t)+normrnd(0,2,size(t));%信號顯示figureplot(t,x);xlabel('t');ylabel('y');%傅里葉變換L=length(x);Xk=fft(x);P2=abs(Xk/L);P1=P2(1:L/2+1);P1(2:end-1)=2*P1(2:end-1);f=fs*(0:(L/2))/L;%頻譜顯示figureplot(f,P1);xlabel('f(Hz)')ylabel('|Xk|')11.2統(tǒng)計(jì)信號處理《MATLAB程序設(shè)計(jì)》5511.2.1自相關(guān)計(jì)算

離散序列自相關(guān)定義如下

其中m表示序列平移量,n表示數(shù)據(jù)序列號,r表示相關(guān)性,上式描述了序列x(n)與平移m后的x(n-m)之間的相似性。通常情況下會將相關(guān)量r進(jìn)行歸一化,其表達(dá)式為其中ρ稱為相關(guān)系數(shù)11.2統(tǒng)計(jì)信號處理《MATLAB程序設(shè)計(jì)》5611.2.1自相關(guān)計(jì)算

MATLAB中的xcorr()函數(shù)可實(shí)現(xiàn)離散序列自相關(guān)計(jì)算。xcorr()函數(shù)調(diào)用格式如下:r=xcorr(x,y)r=xcorr(x)r=xcorr(_,maxlag)r=xcorr(_,scaleopt)[r,lags]=xcorr(_)11.2統(tǒng)計(jì)信號處理《MATLAB程序設(shè)計(jì)》5711.2.1自相關(guān)計(jì)算

例11-4假設(shè)離散序列取值表達(dá)式為,n取值分別為0,1,2,…,15,計(jì)算x離散序列自相關(guān)系數(shù),并繪制自相關(guān)系數(shù)ρ與平移量m之間的關(guān)系。n=0:15;x=0.84.^n;[r,m]=xcorr(x,"normalized");figurestem(m,r,'k');xlabel('m’)

ylabel('r')11.2統(tǒng)計(jì)信號處理《MATLAB程序設(shè)計(jì)》5811.2.2互相關(guān)計(jì)算

離散序列互相關(guān)定義如下此時(shí)r描述了序列x(n)與序列y(n)平移m后的相似性?;ハ嚓P(guān)量r進(jìn)行歸一化,其表達(dá)式為其中ρ稱為互相關(guān)系數(shù)。11.2統(tǒng)計(jì)信號處理《MATLAB程序設(shè)計(jì)》5911.2.2互相關(guān)計(jì)算

例11-5假設(shè)x和y序列取值滿足下式其中A取值為1,fx和fy分別取值為50和100,t取值范圍為0~0.02,取值間隔為0.001,試計(jì)算x與y之間互相關(guān)系數(shù)ρ,并繪制ρ與偏移量m之間的關(guān)系圖11.2統(tǒng)計(jì)信號處理《MATLAB程序設(shè)計(jì)》6011.2.2互相關(guān)計(jì)算

detaT=0.001;t0=0;t1=0.02;t=t0:detaT:t1;A=1;fx=50;fy=100;x=A*sin(2*pi*fx*t);y=A*cos(2*pi*fy*t);%互相關(guān)計(jì)算[r,m]=xcorr(x,y,"normalized");%結(jié)果顯示figurestem(m,r,'k');xlabel('m')ylabel('r')11.2統(tǒng)計(jì)信號處理《MATLAB程序設(shè)計(jì)》6111.2.3功率譜

功率譜估計(jì)被廣泛應(yīng)用于分析平穩(wěn)各態(tài)遍歷隨機(jī)信號頻率成分,并且已被成功應(yīng)用到雷達(dá)信號處理、機(jī)械故障診斷等工程實(shí)際中。給定一個(gè)標(biāo)準(zhǔn)的正弦信號,可以通過傅里葉變換來分析它的頻率成分。然而,在實(shí)際工程應(yīng)用中,由于存在各種噪聲干擾,我們得到的信號往往不是理想的。對于這種存在噪聲干擾的信號,可以通過功率譜對信號的頻率成分進(jìn)行分析,得到一個(gè)“非精確”的功率譜來對真實(shí)隨機(jī)信號的功率譜進(jìn)行估計(jì)。11.2統(tǒng)計(jì)信號處理《MATLAB程序設(shè)計(jì)》6211.2.3功率譜

例11-6假設(shè)隨機(jī)信號滿足下式

令A(yù)1和A2均為1,f1為50Hz,f2為135Hz,φ1和φ2分別為0°和45°,Noise符合均值為0,標(biāo)準(zhǔn)差為0.2的高斯白噪聲分布。假設(shè)采樣頻率fs為500Hz,請采用周期圖法對該隨機(jī)信號進(jìn)行功率譜分析。11.2統(tǒng)計(jì)信號處理《MATLAB程序設(shè)計(jì)》6311.2.3功率譜

A1=10;A2=10;f1=50;f2=135;fs=500;T=1/fs;t1=0;t2=1;t=t1:T:t2;phi1=0;phi2=45/180*pi;y=A1*sin(2*pi*f1*t+phi1)+A2*sin(2*pi*f2*t+phi2)+normrnd(0,0.2,1,length(t));%信號波形顯示figureplot(t,y);xlim([0,0.2]);%顯示一部分波形xlabel('t');ylabel('y');%功率譜分析figureperiodogram(y,[],length(y),fs);11.3IIR濾波器《MATLAB程序設(shè)計(jì)》6411.3.1IIR濾波基本原理

IIR濾波器是一種數(shù)字濾波器,其系統(tǒng)函數(shù)為

其中,H(z)表示系統(tǒng)函數(shù),X(z)表示系統(tǒng)輸入函數(shù),Y(z)表示系統(tǒng)輸出函數(shù),z為時(shí)延符號,ak和bk表示濾波系數(shù)。11.3IIR濾波器《MATLAB程序設(shè)計(jì)》6511.3.2巴特沃斯濾波器

butter函數(shù)用于設(shè)計(jì)butterworth數(shù)字濾波器,其調(diào)用格式如下:[b,a]=butter(n,Wn)[b,a]=butter(n,Wn,ftype)[z,p,k]=butter(___)[A,B,C,D]=butter(___)[___]=butter(___,'s')11.3IIR濾波器《MATLAB程序設(shè)計(jì)》6611.3.2巴特沃斯濾波器

例11-7假設(shè)采樣頻率為2000Hz,設(shè)計(jì)一個(gè)8階高通Butterworth濾波器,其中截止頻率為300Hz。fs=2000;n=8;Wn1=300;Wn=Wn1/(fs/2);[b,a]=butter(n,Wn,'high');%頻率響應(yīng)sampleN=128;freqz(b,a,sampleN,fs);axis([0500-400100]);11.3IIR濾波器《MATLAB程序設(shè)計(jì)》6711.3.2巴特沃斯濾波器

例11-8假設(shè)處理的數(shù)字信號采樣頻率為2000Hz,設(shè)計(jì)一個(gè)10階的帶通Butterworth數(shù)字濾波器,通帶為150Hz到300Hz,并繪制其脈沖響應(yīng)曲線。fs=2000;n=10;W1=150;W2=300;sampleN=101;Wn=[W1,W2]/(fs/2);[b,a]=butter(n,Wn);[y,t]=impz(b,a,sampleN);stem(t,y,'k');xlabel('t');ylabel('y');11.3IIR濾波器《MATLAB程序設(shè)計(jì)》6811.3.3切比雪夫?yàn)V波器

cheby1函數(shù)cheby1函數(shù)用于設(shè)計(jì)切比雪夫數(shù)字濾波器中的chebyshevI型。其調(diào)用格式為:[b,a]=cheby1(n,Rp,Wp)[b,a]=cheby1(n,Rp,Wp,ftype)[z,p,k]=cheby1(___)[A,B,C,D]=cheby1(___)[___]=cheby1(___,'s')本節(jié)將重點(diǎn)介紹使用cheby1和cheby2設(shè)計(jì)切比雪夫?yàn)V波器的方法。11.3IIR濾波器《MATLAB程序設(shè)計(jì)》6911.3.3切比雪夫?yàn)V波器

例11-9假設(shè)一信號采樣頻率為2000Hz,設(shè)計(jì)一個(gè)10階低通ChebyshevI型數(shù)字濾波器,通帶波紋為0.5dB,截止頻率為300Hz。fs=2000;n=10;Rp=0.5;W1=300;Wn=W1/(fs/2);[b,a]=cheby1(n,Rp,Wn);%頻率響應(yīng)sampleN=512;freqz(b,a,sampleN,fs);axis([0500-300100]);11.3IIR濾波器《MATLAB程序設(shè)計(jì)》7011.3.3切比雪夫?yàn)V波器

cheby2函數(shù)cheby2函數(shù)用于設(shè)計(jì)切比雪夫數(shù)字濾波器中chebyshevII型。其調(diào)用格式為:[b,a]=cheby2(n,Rs,Ws)[b,a]=cheby2(n,Rs,Ws,ftype)[z,p,k]=cheby2(___)[A,B,C,D]=cheby2(___)[___]=cheby2(___,'s')11.3IIR濾波器《MATLAB程序設(shè)計(jì)》7111.3.3切比雪夫?yàn)V波器

例11-10假設(shè)一信號采樣頻率為2000Hz,設(shè)計(jì)一個(gè)10階低通ChebyshevⅡ型數(shù)字濾波器,阻帶衰減為20dB,通帶波紋為0.5dB,截止頻率為300Hz。fs=2000;n=10;Rs=20;W1=300;Wn=W1/(fs/2);[b,a]=cheby2(n,Rs,Wn);%頻率響應(yīng)sampleN=512;freqz(b,a,sampleN,fs);axis([0500-8020]);11.3IIR濾波器《MATLAB程序設(shè)計(jì)》7211.3.4橢圓濾波器

ellip函數(shù)用于設(shè)計(jì)橢圓數(shù)字濾波器。其調(diào)用格式為:[b,a]=ellip(n,Rp,Rs,Wp)[b,a]=ellip(n,Rp,Rs,Wp,ftype)[z,p,k]=ellip(___)[A,B,C,D]=ellip(___)[___]=ellip(___,'s')11.3IIR濾波器《MATLAB程序設(shè)計(jì)》7311.3.4橢圓濾波器

例11-11假設(shè)一信號采樣頻率為2kHz,設(shè)計(jì)一個(gè)8階低通橢圓數(shù)字濾波器,阻帶衰減50dB,通帶波紋3dB,截止頻率為300Hz。fs=2000;n=8;Rp=3;Rs=50;W1=300;Wn=W1/(fs/2);[b,a]=ellip(n,Rp,Rs,Wn);%頻率響應(yīng)sampleN=512;freqz(b,a,sampleN,fs);axis([0500-8020]);11.3IIR濾波器《MATLAB程序設(shè)計(jì)》7411.3.5信號分析實(shí)例

例11-12假設(shè)一個(gè)正弦信號包含50Hz和150Hz兩個(gè)振動頻率成分,采用IIR濾波器對該正弦信號進(jìn)行處理,分別設(shè)計(jì)高通和低通濾波器,分別提取其低于100Hz和高于100Hz的信號成分。11.4FIR濾波器《MATLAB程序設(shè)計(jì)》7511.4.1FIR濾波器基本原理

FIR濾波器系統(tǒng)函數(shù)為,其中h(n)表示系統(tǒng)脈沖響應(yīng)函數(shù)。11.4FIR濾波器《MATLAB程序設(shè)計(jì)》7611.4.2基于窗函數(shù)設(shè)計(jì)FIR濾波器

基于窗函數(shù)的FIR數(shù)字濾波器設(shè)計(jì)方法較為簡單,其主要步驟如下:(1)由數(shù)字濾波器理想特性進(jìn)行傅里葉逆變換,獲得理想濾波器單位脈沖響應(yīng)。一般假設(shè)理想低通濾波器的截止頻率為ωc,其幅頻特性為(2)由性能指標(biāo)確定窗函數(shù)W(n)和窗口長度N。(3)求濾波器的單位脈沖響應(yīng)h(n)(4)檢驗(yàn)濾波器性能指標(biāo)。11.4FIR濾波器《MATLAB程序設(shè)計(jì)》7711.4.2基于窗函數(shù)設(shè)計(jì)FIR濾波器

例11-13用窗函數(shù)設(shè)計(jì)一個(gè)線性相位FIR低通濾波器,滿足性能指標(biāo)為:通帶邊界頻率wp=0.5π,阻帶頻率ωs=0.76π。Nw=N;wc=(wp+ws)/2;n=0:N-1;alpha=(N-1)/2;m=n-alpha+0.00001;hd=sin(wc*m)./(pi*m);win=hanning(Nw);h=hd.*win';b=h;freqz(b,1,512)wp=0.5*pi;ws=0.76*pi;width=ws-wp;N=ceil(8*pi/width);if(rem(N,2))==0N=N+1;end11.4FIR濾波器《MATLAB程序設(shè)計(jì)》7811.4.2基于窗函數(shù)設(shè)計(jì)FIR濾波器

例11-14用fir1設(shè)計(jì)一個(gè)32階的FIR帶通濾波器,通帶為0.35≤ω≤0.65。n=32;W1=0.35;W2=0.65;Wn=[W1,W2];b=fir1(n,Wn);%頻率響應(yīng)sampleN=512;freqz(b,1,sampleN);axis([01-10050])11.4FIR濾波器《MATLAB程序設(shè)計(jì)》7911.4.2基于窗函數(shù)設(shè)計(jì)FIR濾波器

例11-15設(shè)計(jì)一個(gè)32階的高通濾波器,截止頻率為0.48,窗函數(shù)選用30dB波紋的chebwin窗函數(shù)。n=32;W1=0.48;nw=n+1;Rs=30;b=fir1(n,W1,'high',chebwin(nw,Rs));%頻率響應(yīng)sampleN=512;freqz(b,1,sampleN);11.4FIR濾波器《MATLAB程序設(shè)計(jì)》8011.4.2基于窗函數(shù)設(shè)計(jì)FIR濾波器

例11-16設(shè)計(jì)一個(gè)32階低通濾波器并繪制其期望頻率響應(yīng)與實(shí)際頻率響應(yīng)曲線。n=32;f=[00.60.61];m=[1100];b=fir2(n,f,m);%頻率響應(yīng)sampleN=512;[h,w]=freqz(b,1,sampleN);plot(f,m,'-');holdonplot(w/pi,abs(h),'-.')xlabel('歸一化頻率');ylabel('幅值')ylim([-0.1,1.2])legend('期望頻率響應(yīng)','實(shí)際頻率響應(yīng)')11.4FIR濾波器《MATLAB程序設(shè)計(jì)》8111.4.3FIR濾波器優(yōu)化設(shè)計(jì)

MATLAB信號處理工具箱提供了比基于窗函數(shù)法FIR濾波器設(shè)計(jì)函數(shù)fir1、fir2更為通用的函數(shù)firls和remez。這兩個(gè)函數(shù)包采用不同的優(yōu)化方法進(jìn)行FIR濾波器設(shè)計(jì)。firls是fir1和fir2的擴(kuò)展,基本原則是利用最小二乘法使期望的頻率響應(yīng)和實(shí)際頻率響應(yīng)間的誤差最小。函數(shù)remez則通過采用Parks-McCellan交換算法和Chebyshev近似理論來設(shè)計(jì)FIR濾波器,使實(shí)際頻率響應(yīng)達(dá)到最優(yōu)擬合期望頻率響應(yīng)的目的。11.4FIR濾波器《MATLAB程序設(shè)計(jì)》8211.4.3FIR濾波器優(yōu)化設(shè)計(jì)

f=[00.30.40.60.70.9];a=[01000.50.5];n=32;%采用firls函數(shù)包進(jìn)行設(shè)計(jì)b=firls(n,f,a);sampleN=512;[h,w]=freqz(b,1,sampleN);figureplot(f,a,'-');holdon例11-17分別用firls和remez函數(shù)包設(shè)計(jì)一個(gè)32階的段線性帶通濾波器,其理想幅頻響應(yīng)為f=[0,0.3,0.4,0.6,0.7,0.9],a=[0,1,0,0,0.5,0.5],要求完成濾波器設(shè)計(jì)并繪制期望的實(shí)際頻率響應(yīng)。plot(w/pi,abs(h),'-.');xlabel('歸一化頻率');ylabel('幅值')legend('期望頻率響應(yīng)','實(shí)際頻率響應(yīng)')%采用remez函數(shù)包進(jìn)行設(shè)計(jì)b2=remez(n,f,a);[h2,w2]=freqz(b,1,sampleN);figureplot(f,a,'-');holdonplot(w2/pi,abs(h2),'-.');xlabel('歸一化頻率');ylabel('幅值')legend('期望頻率響應(yīng)','實(shí)際頻率響應(yīng)')11.4FIR濾波器《MATLAB程序設(shè)計(jì)》8311.4.4信號分析實(shí)例

例11-18本節(jié)將以MATLAB自帶的chirp信號分析為例,分別設(shè)計(jì)FIR低通、高通濾波器,完成chirp中高頻和低頻成分提取。已知chirp信號采樣頻率fs為8192Hz,其主要頻率成分集中在fs/4頻率以上。分別設(shè)計(jì)一個(gè)階數(shù)為34的低通和高通濾波器,以fs/4為頻率界限,分別實(shí)現(xiàn)chirp低于fs/4和高于fs/4頻率處成分提取。11.5特殊波形發(fā)生函數(shù)《MATLAB程序設(shè)計(jì)》8411.5.1掃頻信號

MATLAB中的chirp函數(shù)用于產(chǎn)生掃頻余弦信號,其調(diào)用格式如下:y=chirp(t,f0,t1,f1)y=chirp(t,f0,t1,f1,method)y=chirp(t,f0,t1,f1,method,phi)y=chirp(t,f0,t1,f1,'quadratic',phi,shape)y=chirp(___,cplx)11.5特殊波形發(fā)生函數(shù)《MATLAB程序設(shè)計(jì)》8511.5.1掃頻信號

例11-19模擬仿真一個(gè)線性掃頻信號,其采樣時(shí)長為1s,采樣頻率為1kHz,要求其初始時(shí)刻頻率值為0Hz,在0.5s時(shí),其頻率值為250Hz。%參數(shù)設(shè)置fs=1e3;T=1/fs;f1=0;f2=50;t1=0;t2=1;t=t1:T:t2;tx=0.5;%模擬仿真y=chirp(t,f1,tx,f2);%信號顯示figureplot(t,y);xlabel('t');ylabel('y');11.5特殊波形發(fā)生函數(shù)《MATLAB程序設(shè)計(jì)》8611.5.1掃頻信號

例11-19模擬仿真一個(gè)線性掃頻信號,其采樣時(shí)長為1s,采樣頻率為1kHz,要求其初始時(shí)刻頻率值為0Hz,在0.5s時(shí),其頻率值為250Hz。figurepspectrum(y,fs,'spectrogram')11.5特殊波形發(fā)生函數(shù)《MATLAB程序設(shè)計(jì)》8711.5.1掃頻信號

例11-20模擬仿真一個(gè)二次掃頻信號,其采樣時(shí)長為1s,采樣頻率為1kHz,要求其初始時(shí)刻頻率值為0Hz,在0.5s時(shí),其頻率值為250Hz。%參數(shù)設(shè)置fs=1e3;T=1/fs;f1=0;f2=250;t1=0;t2=1;t=t1:T:t2;tx=0.5;%模擬仿真y=chirp(t,f1,tx,f2,'quadratic');%信號顯示figureplot(t,y);xlabel('t');ylabel('y');figurepspectrum(y,fs,'spectrogram')11.5特殊波形發(fā)生函數(shù)《MATLAB程序設(shè)計(jì)》8811.5.2沖擊信號

沖擊函數(shù)的數(shù)學(xué)定義如下,其中N為非零整數(shù)。11.5特殊波形發(fā)生函數(shù)《MATLAB程序設(shè)計(jì)》8911.5.2沖擊信號

例11-21模擬仿真沖擊函數(shù),令N取值為13,x取值范圍為-4π~4π。x=linspace(-4*pi,4*pi,1000);N=13;%仿真y=diric(x,N);%信號顯示figureplot(x,y);xlabel('x');ylabel('y');11.5特殊波形發(fā)生函數(shù)《MATLAB程序設(shè)計(jì)》9011.5.3鋸齒波信號

例11-22模擬仿真一個(gè)頻率為50Hz的鋸齒波形,其中設(shè)置采樣頻率為1kHz。%參數(shù)設(shè)置fs=1e3;T=1/fs;f=50;Tx=1/f;t1=0;t2=10*Tx;t=t1:T:t2;%模擬仿真y=sawtooth(2*pi*f*t);%波形顯示figureplot(t,y);xlabel('t');ylabel('y');11.5特殊波形發(fā)生函數(shù)《MATLAB程序設(shè)計(jì)》9111.5.4sinc信號

Sinc函數(shù)數(shù)學(xué)表達(dá)式如下MATLAB函數(shù)包sinc用于產(chǎn)生sinc函數(shù)波形。其調(diào)用格式如下,y=sinc(x)11.5特殊波形發(fā)生函數(shù)《MATLAB程序設(shè)計(jì)》9211.5.4sinc信號

例11-23模擬仿真sinc信號波形,信號波形采樣頻率fs為1kHz。令其輸入x為2πft,其中f為20Hz,t取值范圍為-π/10~π/10。fs=1e3;T=1/fs;f=20;Tx=1/f;t1=-0.1*pi;t2=0.1*pi;t=t1:T:t2;%模擬仿真y=sinc(pi*f*t);%波形顯示figureplot(t,y);xlabel('t');ylabel('y');11.5特殊波形發(fā)生函數(shù)《MATLAB程序設(shè)計(jì)》9311.5.5方波信號

例11-24模擬產(chǎn)生一個(gè)方波信號,其頻率為30Hz,占空比為37%,采樣頻率為1kHz。fs=1e3;f=30;T=1/fs;Tx=1/f;t1=0;t2=0.2;t=t1:T:t2;duty=37;%模擬仿真y=square(2*pi*f*t,duty);%波形顯示figureplot(t,y);xlabel('t');ylabe

溫馨提示

  • 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論