




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
第14章
基于Simulink的
人工神經網絡建模114.1概述MATLAB具有友好的工作平臺和編程環境、簡單易學的編程語言、強大的科學計算和數據處理能力,以及出色的圖形圖像處理功能、適應多領域應用的工具箱、適應多種語言的程序接口、模塊化的設計和系統級的仿真功能等特點。而支持MATLAB仿真的是Simulink工具箱。Simulink是一個用于動態系統建模、仿真和分析的軟件包,一般可以附在MATLAB上同時安裝,也有獨立版本可以單獨使用。大多數用戶都是選擇與MATLAB同時安裝使用,以便能更好地發揮MATLAB在科學計算上的優勢,進一步擴展Simulink的使用領域和功能。近幾年來,在學術界和工業領域,Simulink已經成為動態系統建模和仿真領域中應用最為廣泛的軟件之一。2由于Simulink采用模塊組合方式來建模,因此用戶能夠快速、準確地創建動態系統的計算機仿真模型,特別是對復雜的不確定非線性系統尤為方便。Simulink模型可以用來模擬線性和非線性、連續和離散,或者兩者的混合系統,也就是說它可以用來模擬幾乎所有可能遇到的動態系統。Smulink沒有單獨的語言,但是它提供了S函數規則,S函數使Simulink更加充實、完備,具有更強的處理能力。用戶可以用一個M函數文件、FORTRAN程序、C或C++語言函數來編寫S函數,通過特殊的語法規則使之能夠被Simulink模型或模塊調用。另外,Simulink不是封閉的,它可以很方便地定制自己的模塊和模塊庫。同時,Simulink也有比較完整的幫助系統,用戶可以隨時找到對應模塊的說明,以便于應用。3
綜上所述,Simulink是一種開放性的、用來模擬線性或非線性,以及連續或離散的或者兩者混合的動態系統的強有力的系統級仿真工具。目前,隨著軟件的升級換代,Simulink在軟硬件的接口方面有了長足的進步,使用Simulink可以很方便地進行實時信號控制和處理、信息通信以及DSP處理。許多知名的大公司都使用Simulink作為他們產品設計和開發的強有力工具。414.2Simulink啟動和神經網絡模塊庫本書采用的是MATLABR2014b版本。在MATLAB的工作環境中,Simulink仿真環境的啟動有三種方法。(1)使用命令進行啟動。在MATLAB命令窗口(CommandWindow)中輸人命令:
>>simulink按“Enter”鍵后,軟件會出現一個“SimulinkLibraryBrowser”窗口,如圖14-1所示14.2.1
Simulink的啟動5
圖14-1“SimulinkLibraryBrowser”窗口6(2)在MATLAB命令窗口(CommandWindow)中輸入命令:>>simulink3
按“Enter”鍵后,軟件會出現一個“Library:simulink3”窗口,如圖14-2所示。圖14-2“Library:simulink3”窗口
7圖14-2所示的是Simnlink庫中的一些主要模塊庫。雙擊模塊庫,即可出現對應的元件列表,如圖14-3所示。
圖14-3接收器模塊庫中的元件列表
8(3)點擊MATLAB工具欄按鈕“”,啟動Simulink仿真環境,如圖14-4所示。圖14-4Simulink啟動按鈕位置圖
9在MATLAB命令窗口(CommandWindow)中輸入命令“neural”,打開神經網絡仿真模型庫窗口,如圖14-5所示。
圖14-5神經網絡仿真模型庫14.2.2
Simulink
神經網絡模塊庫10神經網絡工具箱包含五個模塊庫。
1.傳遞函數模塊(TransfreFunctions)
雙擊圖14-5中的“TransferFunctions”模塊,即可彈出“Library:neural/TransferFunctions”窗口,如圖14-6所示。
圖14-6“Library:neural/TransferFunctions”窗口
11
2.網絡輸入模塊(NetInputFunctions)
雙擊圖14-5中的“NetInputFunctions”模塊,即可彈出“Library:neural/NetInputFunctions”窗口,如圖14-7所示。
圖14-7“Library:neural/NetInputFunctions”窗口12圖14-7中包含的網絡輸入模塊及功能如表14-1所示。表14-1中,每一個模塊都能夠接收加權輸入向量、加權的層輸出向量或者偏置值向量,并且返回一個網絡輸入向量。
13
3.權值設置模塊(WeightFunctions)
雙擊圖14-5中的“WeightFunctions”模塊,即可彈出“Library:neural/WeightFunctions”窗口,如圖14-8所示。
圖14-8中包含的網絡輸入模塊及功能如表14-2所示。
14
圖14-8“Library:neural/WeightFunctions”窗口
15
4.處理模塊(ProcessingFunctions)
雙擊圖14-5中的“ProcessingFunctions”模塊,即可彈出“Library:neural/ProcessingFunctions”窗口,如圖14-9所示
圖14-9“Library:nerual/ProcessingFunctions”窗口16
5.控制系統模塊(ControlSystems)
雙擊圖14-5中的“ControlSystems”模塊,即可彈出“Library:neural/ControlSystems”窗口,如圖14-10所示。
圖14-10“Library:nerual/ControlSystems”窗口1714.3模型的設置和操作將所選的模塊添加到模型窗口后,單擊需要操作的模塊,當其四周出現小黑塊編輯框時便可對其進行一系列的操作。(1)改變模塊大小。用鼠標拖動模塊的編輯框即可改變模塊的大小。(2)模塊的移動。當在同一窗口移動時,只需要用鼠標拖動模塊移動位置即可。當在不同的窗口移動時,在用鼠標拖動模塊的同時需要按住Shift鍵即可。(3)模塊的復制。當在同一窗口時,在選中模塊的同時按下Ctrl鍵,將對象拖動到目的位置,或者使用快捷鍵“Ctrl+C”和“Ctrl+V”。當在不同的窗口進行復制時,只需將模塊拖到另一窗口即可。14.3.1
模塊的操作18
(4)模塊的翻轉。默認情況下,模塊的輸入端總是在左側,輸出端在右側,有時候需要將模塊翻轉,那么在選中模塊后,可以使用快捷鍵“Ctrl+R”實現,如圖14-11中示波器模塊所示。圖14-11示波器模塊翻轉(5)修改模塊名。單擊模塊下邊的模塊名,即可對模塊名直接進行修改。19信號線的操作如下:(1)信號線的分支。當需要將一個信號送到不同的模塊時,就需要增加分支點將一條信號分成多條。產生分支的方法是:首先選中信號線,然后按住“Ctrl”鍵,點擊鼠標左鍵的同時并移動鼠標即可產生分支線。
(2)信號線的注釋。在需要注釋的信號線附近雙擊鼠標即可出現一個文本編輯框。
(3)信號線與模塊分離。選中需要操作的模塊,按住“Shift”鍵的同時拖動模塊便可實現模塊與信號線的分離。14.3.2
信號線的操作20
在Simulink仿真模型運行的過程中,可以按照默認的仿真參數進行仿真,也可以根據系統不同的仿真條件,對仿真參數進行設置。在Simulink模型窗口選擇菜單“Simulation”—“ModelConfigurationParameters”,或者使用快捷鍵“Ctrl+E”打開參數設置對話框,如圖14-12所示。14.3.3
仿真參數的設置21
圖14-12仿真參數設置圖22圖14-12中主要包括仿真參數(Solver)、工作空間數據輸入/輸出(DataImport/Export)、優化設置(Optimization)、診斷設置(Diagnostics)、硬件實現(HardwareImplementation)、模型參考(ModelReferencing)、仿真目標(SimulationTarget)和代碼生成(CodeGeneration)等設置。
1.仿真參數設置仿真參數設置主要包括仿真時間和仿真步長的設置。
(1)仿真的起始時間(Starttime)默認為0s,終止時間(Stoptime)默認為10s。此處的時間并不是實際時間,而是計算機的定時時間。
23
(2)仿真步長設置。仿真過程一般是求解微分方程的過程,“Type”是設置求解的類型,“Variable-step”表示仿真步長是變化的,“Fix-step”表示仿真步長是固定的。采用變步長求解時,需要設定容許誤差限和過零檢測,當誤差超過誤差限時自動修正步長,誤差限的大小決定了求解的精度。①“Maxstepsize”:設置最大步長,最大步長=(Stoptime-Starttime)/50。②“Minstepsize”:設置最小步長。③“Initialstepsize”:設置初始步長。④“Relativetolerance”:設置相許誤差限。⑤“Absolutetolerance”:設置絕對容許誤差限。
242.工作空間數據輸入/輸出工作空間數據輸入/輸出設置對話框如圖14-13所示。
圖14-13數據輸入/輸出參數設置圖25(1)從工作空間載入數據(Loadfromworkspace),“Input”欄是從工作空間輸入向量到模型的輸入端口。“Intialstate”欄是將工作空間的xlntial變量作為模型所有內狀態的變量的初始值。
(2)保存數據到工作空間(Savetoworkspace),“Time”欄的默認變量為tout,“States”欄的變量為xout,“Output”欄的默認變量為yout,“Finalstate”欄的默認變量是xFinal。“Limitdatapointstolast”欄用來設置保存變量接收的數據長度,默認值為1000?!癋ormat”欄用來設置保存數據的三種格式:數組、結構數組和帶時間量的結構數組。26在創建Simnlink仿真模型時,通常需要設置模塊的參數來滿足系統的要求。打開模塊參數設置對話框的方法有兩種:
(1)鼠標左鍵雙擊需要設置參數的模塊。(2)鼠標右鍵單擊該模塊,在菜單中選擇“BlockParameters”選項。
每個模塊的參數設置對話框上方都有該模塊功能的詳細介紹,在實際操作過程中,一般都使用第一種設置方法。下面介紹一些常用模塊的設置。14.3.4
常用模塊的設置271.正弦信號模塊在“Sources”子模塊庫中,通常會用到正弦信號(SineWave)模塊,其參數設置對話框如圖14-14所示。
圖14-14正弦信號模塊的參數
28在圖14-14的參數對話框中,有時間范圍(Time)設置參數,其有兩個選項“Usesimulationtime”和“Useexternalsignal”,分別可以使用仿真時間或其他信號作為時間范圍。此外,還有正弦幅值(Amplitude)、幅值偏移量(Bias)、正弦頻率(Frequency)和初始相角(Phase)等參數設置選項。
2.求和模塊求和模塊(Sum)一般用來計算信號的和,它是“MathOperations”模塊庫中的模塊。其參數設置分為兩個選項:
“Main”設置主要參數,如圖14-15(a)所示,“SignalAttributes”設置信號的屬性,如圖14-15(b)所示。29
(a)Main選項卡 (b)SignalAttributes選項卡圖14-15求和模塊的參數30在“Main”選項卡中,圖標形狀(Iconshape)可以設置為圓形(Round)和方形(Rectangle)兩種形式。在信號極性列表中(Listofsigns),“+”表示信號求和,“-”表示信號求差。在“SignalAttributes”選項卡中,“Accumulatordatatype”為累加器數據類型,“Outputdatatype”為輸出信號數據類型,這兩個選項都可以選擇各種數據類型,其默認類型都為“Inherit:Inheritviainternalrule”。313.示波器示波器(Scope)模塊在simulink仿真過程中具有非常重要的作用,該模塊主要用來接收信號并將信號以波形的形式顯示出來。示波器模塊屬于Sinks模塊庫,在搭建仿真模型的過程中,可以方便的在常用的模塊庫中找到。雙擊示波器模塊即可打開示波器窗口,如圖14-16所示,工具欄中常用的是按鈕,可以將波形完整的顯示出來。圖14-16示波器窗口32單擊示波器窗口工具欄的按鈕可以打開示波器參數設置對話框,如圖14-17所示,參數對話框分為如圖14-17(a)、14-17(b)和14-17(c)所示的“General”、“History”和“Style”三個選項卡。(a)“General”參數(b)“History”參數33
(c)“Style”參數圖14-17示波器的參數34(1)“General”主要參數
Numberofaxes:示波器的輸入端口個數,默認值為1,表示只有一個輸入。
Timerange:設置信號顯示范圍,默認auto為仿真時間范圍,若信號實際持續時間超出該范圍,則超出的部分將不再顯示。(2)“History”主要參數
Limitdatapointstolast:表示緩沖區接受數據的長度,默認值為5000。示波器的緩沖區可接受30個信號,數據長度為5000,若數據長度超出該范圍,則最早的歷史數據將會被刪除。Savedatatoworkspace:將示波器緩沖區的數據已矩陣或結構數組的形式送到工作空間。35(3)“Style”參數Figurecolor:設置示波器背景顏色Axescolors:設置波形背景顏色和坐標軸顏色Propertiesforline:圖形編號Line:設置波形的類型、寬度和顏色3614.4單神經元建模Simulink中有專門的神經網絡工具箱,可以用于搭建各種神經網絡電路,本節通過搭建一個簡單的神經元模Simulink模型建立的。1.創建_個空白模型在Simulink主窗口中,單擊工具欄中的按鈕“”,或者直接使用快捷鍵“Ctrl+N”都可以創建一個默認名為“untitled”的空白模型,如圖14-18所示。37
圖14-18“untitled”的空白模型圖2.添加模塊單個神經元的數學模型為38該模型可分為輸入模塊、傳遞函數和輸出模塊三部分,輸入模塊通常在信號源模塊庫(Source)中,雙擊圖14-19中的模塊庫,并將其中的常數模塊(Constant)拖放到空白模型的窗口中;該神經元模型選用的傳遞函數為線性你傳遞函數,可直接將圖14-6中對應的函數模塊拖到空白模型中;輸出模塊為實時數值顯示模塊(Display),在接收模塊庫(Sinks)選擇該模塊并將其拖放到模型窗口中。除此之外,還需要兩個模塊來執行點積和加法運算,選擇圖14-7所示的兩個網絡輸入模塊,并將其拖放到模型窗口中,如圖14-19所示。39
圖14-19單神經元模塊圖403.添加信號線將獨立的模塊用信號線連接起來。將鼠標放在Constant模塊的輸出端,當光標變為十字時,按住鼠標左鍵拖向點乘模塊(netprod)的輸入端。以此類推,完成所有模塊的連線,連接后的模型如圖14-20所示。
圖14-20單神經元模型圖414.仿真雙擊常數輸入模塊修改參數,假設單神經元權值為0.8,輸入為0.02,偏置值為0。開始仿真,單擊模型窗口工具欄中的圖標,或者選擇菜單“Simulink”→“Run”進行仿真。當仿真結束后,數字顯示模塊(Display)會顯示當前單神經元的輸出結果,如圖14-21所示,Simulink默認的仿真時間是10s。
圖14-21仿真結果圖425.模型保存單擊模型窗口工具欄中的圖標
,即可修改該模型的保存路徑、文件類型和文件名,此處將該單個神經元模型保存為“MP_1.mdl”文件。
以上五個步驟便是使用Simulink建立一個完整的單個神經元模型的流程,可以看出,Simnlink模型的創建是比較簡便的。讀者可以通過學習構建簡單的神經元模型來搭建更加復雜的神經網絡模型。4314.5函數逼近的Simulink仿真模型4.4.2節介紹了多層感知器的函數逼近功能,下面通過使用Simulink仿真來搭建該函數的逼近模型。該模型為一個1-2-1的網絡結構,網絡中隱含層中的傳遞函數選用對數S型函數,輸出層中的傳遞函數選用線性函數,如圖14-22所示。14.5.1
參數未改變的模型及仿真44
圖14-22函數逼近網絡實例圖假設該網絡的權值和偏置值為網絡結構中的輸出y2輸入x的函數,令x的取值范圍是[-2,2],搭建該網絡的Simulink仿真模型。451.搭建模型在創建空白模型、選取所需模塊和連接完成信號線后,函數逼近的仿真模型如圖14-23所示。圖14-23仿真模型中的輸入信號不是一個具體的數值,而是一個取值范圍,因此需要一個特殊的模塊“斜坡(Ramp)”,其作用是產生連續增大或減小的信號。在選定該模塊后還需要進行參數設置,該模塊的三個參數如下:
(1)Slope:斜率,產生信號的變化率。
(2)Starttime:信號開始產生的時間。
(3)Initialoutput:信號初始值。該函數逼近模型輸入信號x的取值范圍是[-2,2],仿真程序默認運行時間為10s,所以Slope設置為0.4,Starttime設置為0,Initialoutput設置為-2,結果如圖14-2所示。46
圖14-23函數逼近的仿真模型圖47圖14-24輸入模塊參數設置482.模型仿真點擊運行按鈕進行模型仿真,仿真結束后,首先雙擊示波器“Scopel”驗證輸入信號是否滿足條件,如圖14-25所示。
圖14-25輸入信號圖49由圖14-25可以看出,函數逼近網絡模型的輸入信號的范圍是[-2,2],符合假設的輸入信號條件。在驗證了輸入信號滿足要求后,雙擊示波器“Scope2”觀察輸出結果,波形圖如圖14-26所示。圖14-26輸出波形圖50通過改變網絡結構中權值和偏置值的大小,可以改變網絡輸出曲線的陡度和位置。假設函數逼近模型網絡中的參數取值范圍分別為下面搭建不同的模型來驗證這一結論。
(1)改變隱含層到輸出層的權值,分別取權值w的值為-1、0和1。則Simulink仿真模型如圖14-27所示,示波器顯示輸出的結果如圖14-28所示。14.5.2改變參數的模型及仿真51圖14-27改變權值的仿真模型圖52圖14-28改變權值的結果圖53(2)改變隱含層到輸出層的權值,分別取權值w的值為-1、0和1。同理,搭建新的仿真模型,則改變權值的示波器顯示的輸出結果如圖14-29所示。圖14-29改變權值的結果圖54(3)改變隱含層的偏置值,分別取值為1、5和10。則改變偏置值的示波器顯示的輸出結果如圖14-30所示。
圖14-30改變偏置值的結果圖55(4)改變輸出層的偏置值,分別取值為-1、0和1。則改變偏置值的示波器顯示的輸出結果如圖14-31所示。
圖14-31改變偏置值的結果圖56綜上所述,圖14-28和圖14-29說明網絡的權值如何改變每步曲線的陡度,圖14-30說明了網絡隱含層如何利用偏置值來確定每一步曲線的位置,圖14-31說明了網絡輸出層的偏置值如何影響網絡的響應曲線上移或下移。從以上的Simulink仿真模型可以看出多層網絡的靈活性,只要在隱含層中有足夠數量的神經元,就可以用這樣的網絡來逼近幾乎任何一個函數。5714.6應用案例
雖然Simulink中提供了網絡輸人函數、傳遞函數、權值函數等神經網絡的基本組件,但是在多數情況下用戶并不需要用這些組件來構造神經網絡模型,而是通過MATLAB命令窗口或者編程首先完成網絡的設計,然后使用gensim函數生成神經網絡的仿真模塊,最后進人Simulink系統進行仿真。
在第11章的應用案例中,使用Elman神經網絡用于振幅檢測,該章節已經完成了網絡設計,把該文件另存為sl5_6,然后在MATLAB命令窗口中加載新文件。
>>s14_6>>who58您的變量為:59該神經網絡已經經過了訓練和仿真,其仿真結果如圖14-32所示??梢钥闯?,Elman神經網絡對輸入信號振幅的檢測效果是比較好的,基本完成了信號的振幅檢測。接下來在Simulink環境下完成該網絡的動態仿真。
圖14-32Elman神經網絡振幅檢測60MATLAB命令窗口加載完成設計好神經網絡后,使用函數gensim生成神經內網絡仿真模塊,因為Elman神經網絡內部具有延時單元,所以只能采用離散采樣。假設離散采樣時間為0.05s,在命令窗口輸入命令>>gensim(net,0.05)此時,屏幕彈出兩個窗口,一個是神經網絡模型庫(Library:neural)窗口,如圖14-33所示。另一個是Simulink系統仿真窗口,如圖1
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- T/CAQI 202-2021空氣離子測量儀
- T/CAQI 120-2020家用和類似用途飲用水處理裝置用反滲透膜組件安全使用壽命評價規范
- T/CAPA 3-2021毛發移植規范
- 宜賓工程師面試題及答案
- 法務崗面試題及答案
- 護士文職面試題及答案
- 奉賢中專面試題及答案
- 副科小組考試題及答案
- 人生規劃課件視頻
- 單身公寓轉讓合同范本
- 零基預算改革解讀
- 元宇宙技術與應用知到課后答案智慧樹章節測試答案2025年春中國科學技術大學
- 內墻涂料施工方案
- 機用虎鉗畢業設計論文
- 國家電網考試知識點與試題答案
- 2024年電子商務教師專業發展與提升試題及答案
- 2025年陜西省初中學業水平考試全真模擬化學試題(含答案)
- T-CRHA 089-2024 成人床旁心電監測護理規程
- 廣西南寧勞動合同(2025年版)
- 1-學?!?530”安全教育管理工作實施方案及記錄
- 特種設備事故隱患舉報獎勵實施辦法
評論
0/150
提交評論