freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

基于matlab和s函數(shù)的復(fù)雜系統(tǒng)設(shè)計(jì)畢業(yè)論文(編輯修改稿)

2025-02-14 14:40 本頁面
 

【文章內(nèi)容簡介】 窗口中鍵入命令edit sfuntempl即可調(diào)用模塊板程序編輯S函數(shù)。第二步就是到非線性模塊庫中將Sfunction的系統(tǒng)功能模塊復(fù)制進(jìn)來,然后輸入程序文件名,以供調(diào)用。Sfunction的設(shè)計(jì)步驟很簡單,只有兩步,但是可以實(shí)現(xiàn)非常復(fù)雜的功能。 S函數(shù)的基本結(jié)構(gòu)及封裝 S函數(shù)的概述S函數(shù)是 System function 系統(tǒng)函數(shù)的簡稱,是指采用非圖形化(即計(jì)算機(jī)語言,而非 Simulink系統(tǒng)模塊)的方式描述的功能模塊。在MATLAB中,用戶除了可以使用 MATLAB代碼編寫S函數(shù)以外,還可以使用C、C++、FORTRAN 或Ada 語言編寫S函數(shù),只不過用這些語言編寫程序時需要用編譯器生成動態(tài)連接庫(DLL)文件,然后在 Simulink 中直接調(diào)用。S函數(shù)是由一種特殊的語法構(gòu)成的,用來描述并實(shí)現(xiàn)動態(tài)系統(tǒng)的。它采用一種特殊的調(diào)用語法,使函數(shù)和Simulink求解器進(jìn)行交互。這種交互與求解器和Simulink仿真模型間的交互相類似:S函數(shù)接受來自Simulink求解器的相關(guān)信息,并對求解器發(fā)出的命令做出適當(dāng)?shù)捻憫?yīng)。S函數(shù)作為與其它語言結(jié)合的接口,可以使用這個語言所提供的強(qiáng)大功能。例如,使用MATLAB語言編寫的S函數(shù)稱為M文件S函數(shù),它可以充分利用MATLAB所提供的豐富資源,方便地調(diào)用各種工具箱函數(shù)和圖形函數(shù);而使用C 語言編寫的S函數(shù)被稱為C-MEX 文件S函數(shù),則可以實(shí)現(xiàn)對操作系統(tǒng)和外部設(shè)備等的訪問,也可以提供與操作系統(tǒng)的接口。另外,S函數(shù)可以使用其他多種語言編寫,因此可以實(shí)現(xiàn)代碼的移植,即將已有的代碼結(jié)合進(jìn)來,而不需在Simulink中重新實(shí)現(xiàn)算法。 S函數(shù)中采用非圖形化的方式描述系統(tǒng),其內(nèi)部采用文本方式輸入描述系統(tǒng)的公式、方程,這種方式非常適合復(fù)雜動態(tài)系統(tǒng)的數(shù)學(xué)描述,且可以在仿真過程中對仿真進(jìn)行精確的控制。 S函數(shù)的基本結(jié)構(gòu)S函數(shù)[10]是有固定格式的,MATLAB語言和C語言編寫的S函數(shù)的格式是不同的。用MATLAB語言編寫的S函數(shù)的引導(dǎo)語句為:function [sys,x0,str,ts]=fun(t,x,u,flag,p1,p2,…)其中fun為S函數(shù)的函數(shù)名,t,x,u分別為時間、狀態(tài)和輸入信號,flag為標(biāo)志位,標(biāo)志位的取值不同,S函數(shù)執(zhí)行的任務(wù)與返回?cái)?shù)據(jù)也是不同的:(1)若flag的值為0時,將啟動S函數(shù)所描述系統(tǒng)的初始化過程,這時將調(diào)用一個名為mdlInitializeSizes()子函數(shù),該函數(shù)應(yīng)該對一些參數(shù)進(jìn)行初始設(shè)置,如離散狀態(tài)變量的個數(shù)、連續(xù)狀態(tài)變量的個數(shù),模塊輸入和輸出的路數(shù),模塊的采樣周期個數(shù)和采樣周期的值、模塊狀態(tài)變量的初值向量x0等。首先通過sizes=simsizes語句獲得默認(rèn)的系統(tǒng)參數(shù)變量sizes。得出的sizes實(shí)際上是一個結(jié)構(gòu)體變量,其常用成員為:l NumContStates表示S函數(shù)描述的模塊中連續(xù)狀態(tài)的個數(shù);l NumDiscStates表示離散狀態(tài)的個數(shù);l NumInputs和NumOutputs分別表示模塊輸入和輸出的個數(shù);l DirFeedthrough為輸入信號是否直接在輸出端出現(xiàn),取值可以為0,1;l NumSampleTimes為模塊采樣周期的個數(shù)。按照要求設(shè)置好的結(jié)構(gòu)體sizes應(yīng)該在通過sys=simsizes(sizes)語句賦給sys參數(shù)。除了sys外,還應(yīng)該設(shè)置系統(tǒng)的初始狀態(tài)變量x0、說明變量str和采樣周期變量ts,其中ts變量應(yīng)該為雙列的矩陣,其中每一行對應(yīng)一個采樣周期。對連續(xù)系統(tǒng)和有單個采樣周期的系統(tǒng)來說,該變量為[t1,t2],其中t1為采樣周期,如果取t1=1則將繼承輸入信號的采樣周期參數(shù)t2為偏移量,一般取為0。(2)若flag的值為1時,將作連續(xù)狀態(tài)變量的更新,將調(diào)用mdlDerivatives函數(shù),更新后連續(xù)狀態(tài)變量將由sys變量返回。(3)若flag的值為2時,將作離散狀態(tài)變量的更新,將調(diào)用mdlUpdate()函數(shù),更新后的離散狀態(tài)變量將由sys變量返回。(4)若flag的值為3時,將求取系統(tǒng)的輸出信號,將調(diào)用mdlOutputs()函數(shù),將計(jì)算得出的輸出信號由sys變量返回。(5)若flag的值為4時,將調(diào)用mdlGetTimeOfNextVarHit()函數(shù),計(jì)算下一步的仿真時刻,并將計(jì)算得出的下一步仿真時間由sys變量返回。(6)若flag的值為9時,將終止仿真過程,將調(diào)用mdlTerminate()函數(shù),這時不返回任何變量。S函數(shù)中目前不支持其他的flag選擇。形成S函數(shù)的模塊后,就可以將其嵌入到系統(tǒng)的仿真模型中進(jìn)行仿真了。在實(shí)際仿真過程中,Simulink會自動將flag設(shè)置成0,進(jìn)行初始化過程,然后將flag的設(shè)置為3,計(jì)算該模塊的輸出。一個仿真周期后,Simulink先將flag的值分別設(shè)置為1和2,更新系統(tǒng)的連續(xù)和離散狀態(tài),再將其設(shè)置成3來計(jì)算模塊的輸出值,如此一個周期接一個周期地計(jì)算,直至仿真結(jié)束條件滿足,Simulink將把flag的值設(shè)置成9,終止仿真過程。 S函數(shù)模塊的封裝右鍵點(diǎn)擊S函數(shù)模塊,選擇MASK選項(xiàng),彈出封裝編輯框,在這里有四個欄,分別為圖標(biāo)、參數(shù)、初始化、文檔。其中參數(shù)最為重要。圖標(biāo)即模塊上顯示的圖形,可以編輯自己需要的文字,也可以用圖片包裝模塊。初始化可以對模塊參數(shù)進(jìn)行默認(rèn)設(shè)置,文檔中可以編寫模塊說明和幫助鏈接。而最重要的參數(shù)欄中,要把模塊對應(yīng)的S函數(shù)的參數(shù)列出來,每一個參數(shù)有三種形式:編輯、下拉框、復(fù)選框。如果是下拉框形式,要編輯對應(yīng)的選項(xiàng)。如果S函數(shù)需要響應(yīng)不同操作,可以對每一個參數(shù)選擇編寫對應(yīng)的回調(diào)函數(shù)。封裝編輯好后,右鍵點(diǎn)擊S函數(shù)模塊選擇LOOK UNDER MASK選項(xiàng),在彈出的對話框中,首先填寫原文件,把編譯過的文件放置在當(dāng)前目錄下,在對話框中正確填寫文件名(不寫后綴),然后再把封裝時定義的參數(shù)變量按順序?qū)懺趨?shù)框中,每個參數(shù)用逗號隔開,注意變量名必須與封裝填寫的名稱一致,且數(shù)目相同。最有一個框不用填寫。點(diǎn)擊OK。則完成了對S函數(shù)的模塊封裝。 S函數(shù)工作原理了解S函數(shù)的工作原理對于用戶掌握S函數(shù)的編寫方法是非常有用的,對用戶對于 Simulink 的仿真原理的理解也是很有幫助的。本節(jié)介紹S函數(shù)的工作原理。 在具體介紹S函數(shù)的工作原理之前,首先需要回顧一下Simulink模塊的工作原理。 Simulink 中的每個模塊都有三個基本元素:輸入向量、狀態(tài)向量和輸出向量,分別表示為u,x和 y。圖1反映了它們之間的關(guān)系。在Simulink模塊的三個元素中,狀態(tài)向量是最重要的,也是最靈活的概念。在Simulink中狀態(tài)向量可以分為連續(xù)狀態(tài)、離散狀態(tài)或兩者的結(jié)合。輸入、輸出及狀態(tài)的關(guān)系可以用狀態(tài)方程描述:輸出方程:y=f0t ,x ,u (1)連續(xù)狀態(tài)方程:dx=fdt ,x ,u (2)離散狀態(tài)方程:xk+1=fut ,x ,u (3)其中x=dx xk+1 ,如圖1所示。狀態(tài)(x)輸入輸出yu模塊圖1 Simulink模塊的基本模型Simulink在仿真時將上述方程對應(yīng)不同的仿真階段,它們分別是計(jì)算模塊的輸出、更新離散狀態(tài)、計(jì)算連續(xù)狀態(tài)的微分。在仿真開始和結(jié)束,還包括初始化和結(jié)束仿真兩個階段。在每個階段,Simulink都反復(fù)地調(diào)用模塊。 由于積分時,對仿真步長有要求,所以此時需要將仿真步長細(xì)化。完成一個仿真循環(huán)就進(jìn)入下一個仿真步長,如此循環(huán)直至仿真結(jié)束。在調(diào)用模型中的S函數(shù)時,Simulink會調(diào)用用戶定義的S函數(shù)的例程來實(shí)現(xiàn)每個仿真階段要完成的任務(wù)。這些任務(wù)包括:(1)初始化:仿真開始前,Simulink在這個階段初始化S函數(shù),完成的主要工作包括: l 初始化包含S函數(shù)所有信息的結(jié)構(gòu)體SimStruct; l 確定輸入輸出端口的數(shù)目和大??; l 確定模塊的采樣時間; l 分配內(nèi)存和Sizes數(shù)組。 (2)計(jì)算下一個采樣時刻:如果模型使用變步長求解器,那么就需要在當(dāng)前仿真步長內(nèi)確定下一個采樣點(diǎn)的時間,也即下一個仿真步長的大小。 (3)計(jì)算輸出:計(jì)算所有輸出端口的輸出值。 (4)更新離散狀態(tài):此例程在每個仿真步長處都要執(zhí)行一次,為當(dāng)前時間的仿真循環(huán)更新離散狀態(tài)。 (5)數(shù)值積分:這個階段只有模塊具有連續(xù)狀態(tài)和非采樣過零點(diǎn)時才會存在。如果 S
點(diǎn)擊復(fù)制文檔內(nèi)容
高考資料相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1