MATLAB圖形用戶界面設(shè)計(jì)仿真等.ppt
《MATLAB圖形用戶界面設(shè)計(jì)仿真等.ppt》由會員分享,可在線閱讀,更多相關(guān)《MATLAB圖形用戶界面設(shè)計(jì)仿真等.ppt(64頁珍藏版)》請?jiān)谘b配圖網(wǎng)上搜索。
第7章 MATLAB圖形用戶界面設(shè)計(jì),7.1 菜單設(shè)計(jì) 7.2 對話框設(shè)計(jì) 7.3 用戶界面設(shè)計(jì)工具,,目錄,,7.1 菜單設(shè)計(jì),7.1.1 用戶菜單的建立 建立一級菜單項(xiàng)的函數(shù)調(diào)用形式為: 一級菜單項(xiàng)句柄=uimenu(圖形窗口句柄,屬性名1,屬性值1,屬性名2,屬性值2,…) 建立子菜單項(xiàng)的函數(shù)調(diào)用形式為: 子菜單項(xiàng)句柄=uimenu(一級菜單項(xiàng)句柄,屬性名1,屬性值1,屬性名2,屬性值2,…),,目錄,,7.1.2 菜單對象常用屬性 菜單對象具有Children、Parent、Tag、Type、UserData、Visible等公共屬性。除公共屬性外,還有一些常用的特殊屬性。,,目錄,,例7.1建立“圖形演示系統(tǒng)”菜單。菜單條中含有3個(gè)菜單項(xiàng):Plot、Option和Quit。Plot中有Sine Wave和Cosine Wave兩個(gè)子菜單項(xiàng),分別控制在本圖形窗口畫出正弦和余弦曲線。Option菜單項(xiàng)的內(nèi)容如圖7.1所示。其中Grid on和Grid off控制給坐標(biāo)軸加網(wǎng)格線,Box on和Box off控制給坐標(biāo)軸加邊框,而且這4項(xiàng)只有在畫有曲線時(shí)才是可選的。Figure Color控制圖形窗口背景顏色。Quit控制是否退出系統(tǒng)。,程序如下: screen=get(0,ScreenSize); W=screen(3);H=screen(4); figure(Color,[1,1,1],Position,[0.2*H,0.2*H,0.6*W,0.4*H],. Name,圖形演示系統(tǒng),NumberTitle,off,MenuBar,none); %定義Plot菜單項(xiàng) hplot=uimenu(gcf,Label,,,目錄,,7.1.3 快捷菜單 在MATLAB中,可以使用uicontextmenu函數(shù)和圖形對象的UIContextMenu屬性來建立快捷菜單,具體步驟為: (1)利用uicontextmenu函數(shù)建立快捷菜單。 (2)利用uimenu函數(shù)為快捷菜單建立菜單項(xiàng)。 (3)利用set函數(shù)將該快捷菜單和某圖形對象聯(lián)系起來。,,目錄,,hfigcor=uimenu(hoption,Label,,,例7.2 繪制曲線y=2e-0.5xsin(2πx),并建立一個(gè)與之相聯(lián)系的快捷菜單,用以控制曲線的線型和曲線寬度。 程序如下: x=0:pi/100:2*pi; y=2*exp(-0.5*x).*sin(2*pi*x); hl=plot(x,y); hc=uicontextmenu; %建立快捷菜單 hls=uimenu(hc,Label,線型); %建立菜單項(xiàng) hlw=uimenu(hc,Label,線寬); uimenu(hls,Label,虛線,Call,set(hl,LineStyle,:);); uimenu(hls,Label,實(shí)線,Call,set(hl,LineStyle,-);); uimenu(hlw,Label,加寬,Call,set(hl,LineWidth,2);); uimenu(hlw,Label,變細(xì),Call,set(hl,LineWidth,0.5);); set(hl,UIContextMenu,hc); %將該快捷菜單和曲線對象聯(lián)系起來,,目錄,,7.2 對話框設(shè)計(jì),7.2.1 對話框的控件 (1)按鈕(Push Button)。 (2)雙位按鈕(Toggle Button)。 (3)單選按鈕(Radio Button)。 (4)復(fù)選框(Check Box)。 (5)列表框(List Box)。 (6)彈出框(Popup Menu)。 (7)編輯框(Edit Box)。 (8)滑動(dòng)條(Slider)。 (9)靜態(tài)文本(Static Text)。 (10)邊框(Frame)。,,目錄,,,7.2.2 對話框的設(shè)計(jì) 1. 建立控件對象 MATLAB提供了用于建立控件對象的函數(shù)uicontrol,其調(diào)用格式為: 對象句柄=uicontrol(圖形窗口句柄,屬性名1,屬性值1,屬性名2,屬性值2,…) 其中各個(gè)屬性名及可取的值和前面介紹的uimenu函數(shù)相似,但也不盡相同,下面將介紹一些常用的屬性。 2. 控件對象的屬性 MATLAB的10種控件對象使用相同的屬性類型,但是這些屬性對于不同類型的控件對象,其含義不盡相同。除Children、Parent、Tag、Type、UserData、Visible等公共屬性外,還有一些常用的特殊屬性。,,目錄,,例7.3 建立數(shù)制轉(zhuǎn)換對話框。在左邊輸入一個(gè)十進(jìn)制整數(shù)和2~16之間的數(shù),單擊“轉(zhuǎn)換”按鈕能在右邊得到十進(jìn)制數(shù)所對應(yīng)的2~16進(jìn)制字符串,單擊“退出”按鈕退出對話框。 程序如下: hf=figure(Color,[0,1,1],Position,[100,200,400,200],. Name,數(shù)制轉(zhuǎn)換,NumberTitle,off,MenuBar,none); uicontrol(hf,Style,Text, Units,normalized,. Position,[0.05,0.8,0.45,0.1],Horizontal,center,. String,輸 入 框,Back,[0,1,1]); uicontrol(hf,Style,Text,Position,[0.5,0.8,0.45,0.1],. Units,normalized,Horizontal,center,. String,輸 出 框,Back,[0,1,1]); uicontrol(hf,Style,Frame,Position,[0.04,0.33,0.45,0.45],. Units,normalized,Back,[1,1,0]); uicontrol(hf,Style,Text,Position,[0.05,0.6,0.25,0.1],. Units,normalized,Horizontal,center,. String,十進(jìn)制數(shù),Back,[1,1,0]); uicontrol(hf,Style,Text,Position,[0.05,0.4,0.25,0.1],. Units,normalized,Horizontal,center,. String,2~16進(jìn)制,Back,[1,1,0]); he1=uicontrol(hf,Style,Edit,Position,[0.25,0.6,0.2,0.1],. Units,normalized,Back,[0,1,0]); he2=uicontrol(hf,Style,Edit,Position,[0.25,0.4,0.2,0.1],. Units,normalized,Back,[0,1,0]); uicontrol(hf,Style,Frame,Position,[0.52,0.33,0.45,0.45],. Units,normalized,Back,[1,1,0]); ht=uicontrol(hf,Style,Text,Position,[0.6,0.5,0.3,0.1],. Units,normalized,Horizontal,center,Back,[0,1,0]); COMM=[n=str2num(get(he1,String));,b=str2num(get(he2,String));,. dec=trdec(n,b);,set(ht,string,dec);]; uicontrol(hf,Style,Push,Position,[0.18,0.1,0.2,0.12],. String,轉(zhuǎn) 換,Units,normalized,Call,COMM); uicontrol(hf,Style,Push,Position,[0.65,0.1,0.2,0.12],. String,退 出,Units,normalized,Call,close(hf));,,目錄,,程序調(diào)用了trdec.m函數(shù)文件,該函數(shù)的作用是將任意十進(jìn)制整數(shù)轉(zhuǎn)換為2~16進(jìn)制字符串。trdec.m函數(shù)文件如下: function dec=trdec(n,b) ch1=0123456789ABCDEF; %十六進(jìn)制的16個(gè)符號 k=1; while n~=0 %不斷除某進(jìn)制基數(shù)取余直到商為0 p(k)=rem(n,b); n=fix(n/b); k=k+1; end k=k-1; strdec=; while k=1 %形成某進(jìn)制數(shù)的字符串 kb=p(k); strdec=strcat(strdec,ch1(kb+1:kb+1)); k=k-1; end dec=strdec;,,目錄,,例7.4 建立圖形演示對話框。在編輯框輸入繪圖命令,單擊“繪圖”按鈕能在左邊坐標(biāo)軸得到所對應(yīng)的圖形,彈出框提供色圖控制,列表框提供坐標(biāo)網(wǎng)格線和坐標(biāo)邊框控制。 程序如下: clf; set(gcf,Unit,normalized,Position,[0.2,0.3,0.65,0.35]); set(gcf,Menubar,none,Name,圖形演示,NumberTitle,off); axes(Position,[0.05,0.15,0.55,0.7]); uicontrol(gcf,Style,text, Unit,normalized,. Posi,[0.63,0.85,0.2,0.1],String,輸入繪圖命令,Horizontal,center); hedit=uicontrol(gcf,Style,edit,Unit,normalized,Posi,[0.63,0.15,0.2,0.68],. Max,2); %Max取2,使Max-Min1,從而允許多行輸入 hpopup=uicontrol(gcf,Style,popup,Unit,normalized,. Posi,[0.85,0.8,0.15,0.15],String,Spring|Summer|Autumn|Winter); hlist=uicontrol(gcf,Style,list,Unit,normalized,. Posi,[0.85,0.55,0.15,0.25],String,Grid on|Grid off|Box on|Box off); hpush1=uicontrol(gcf,Style,push,Unit,normalized,. Posi,[0.85,0.35,0.15,0.15],String,繪 圖); uicontrol(gcf,Style,push,Unit,normalized,. Posi,[0.85,0.15,0.15,0.15],String,關(guān) 閉,Call,close all); set(hpush1,Call,COMM(hedit,hpopup,hlist)); set(hlist,Call,COMM(hedit,hpopup,hlist)); set(hpopup,Call,COMM(hedit,hpopup,hlist)); COMM.m函數(shù)文件: function COMM(hedit,hpopup,hlist) com=get(hedit,String); n1=get(hpopup,Value); n2=get(hlist,Value); if ~isempty(com) %編輯框輸入非空時(shí) eval(com); %執(zhí)行從編輯框輸入的命令 chpop={spring,summer,autumn,winter}; chlist={grid on,grid off,box on,box off}; colormap(eval(chpop{n1})); eval(chlist{n2}); end,,目錄,,7.3 用戶界面設(shè)計(jì)工具,7.3.1 圖形界面控制面板 7.3.2 屬性編輯器 7.3.3 事件過程編輯器 7.3.4 菜單編輯器 7.4.5 位置調(diào)整工具,,目錄,,,例7.5 利用界面設(shè)計(jì)工具設(shè)計(jì)用戶界面。具體要求是: (1)在編輯框輸入形成數(shù)據(jù)z的命令,然后選擇三個(gè)按鈕中的一個(gè),即可繪制出z的圖形。 (2)選擇彈出框中的某個(gè)色圖,能及時(shí)地更改繪圖的顏色。 (3)在圖形窗口缺省的菜單條上添加一個(gè)菜單項(xiàng)Options,Options下又有兩個(gè)子菜單項(xiàng)White和Red,選中White項(xiàng)時(shí),圖形窗口將變成白色,選中Red項(xiàng)時(shí),圖形窗口將變成紅色。 操作步驟如下: (1)打開圖形界面控制面板,添加有關(guān)圖形對象。 (2)利用屬性編輯器,設(shè)置圖形對象的屬性。 (3)添加Options菜單項(xiàng)。,,目錄,,第8章 MATLAB筆記本,8.1 筆記本的安裝及啟動(dòng) 8.2 輸入單元的定義與執(zhí)行 8.3 計(jì)算區(qū)的定義與執(zhí)行 8.4 輸出格式控制 8.5 Notebook菜單的其他命令 8.6 M-book模板樣式的修改,,目錄,,8.1 筆記本的安裝及啟動(dòng),8.1.1 筆記本的安裝 在MATLAB命令窗口輸入:notebook -setup 8.1.2筆記本的啟動(dòng) 1.從Word中啟動(dòng)筆記本 2.從MATLAB中啟動(dòng)筆記本,,目錄,,8.1.3 MATLAB筆記本的界面 MATLAB筆記本的界面和通常的Word界面主要有兩點(diǎn)區(qū)別: (1)在菜單欄中多了一個(gè)Notebook菜單項(xiàng),筆記本的許多操作都可以通過該菜單項(xiàng)的命令來完成。 (2)在“文件”菜單項(xiàng)下多了一個(gè)New M-book命令項(xiàng)。如果在M-book模板下要建立新的M-book文檔,可以選擇該命令。,,目錄,,8.2 輸入單元的定義與執(zhí)行,8.2.1基本操作 1.輸入單元的定義 首先選中所需命令,然后在Notebook菜單項(xiàng)中選擇Define Input Cell命令,于是被選中的MATLAB命令成為輸入單元。也可以在選中所需命令后,直接按組合鍵Alt+D。 2.輸入單元的執(zhí)行 選擇Notebook菜單項(xiàng)中的Evaluate Cell命令或直接按組合鍵Ctrl+Enter。 3.輸出單元 輸入單元執(zhí)行后產(chǎn)生輸出單元。,,目錄,,例8.1定義并執(zhí)行輸入單元。 操作步驟如下: (1)在文檔中輸入MATLAB命令。 (2)選中命令行,在Notebook菜單項(xiàng)中選Define Input Cell命令或直接按組合鍵Alt+D,于是命令行就變成了“綠色”的輸入單元。 (3)若要把輸入單元送去執(zhí)行,則可用Notebook菜單項(xiàng)中的Evaluate Cell命令或直接按組合鍵Ctrl+Enter,執(zhí)行后產(chǎn)生“藍(lán)色”的輸出單元:,,目錄,,4.輸入單元定義與執(zhí)行同時(shí)進(jìn)行 先選中MATLAB命令,然后從Notebook菜單項(xiàng)中選擇Evaluate Cell命令或直接按組合鍵Ctrl+Enter,不但使被選中的命令成為輸入單元,而且送去執(zhí)行,產(chǎn)生輸出單元。 例8.2輸入單元定義與執(zhí)行同時(shí)進(jìn)行。 在英文狀態(tài)下,以文本方式鍵入命令,然后選中命令并按Ctrl+Enter鍵,則得到輸入、輸出單元。,,目錄,,8.2.2 自初始化單元及其應(yīng)用 1.自初始化單元 選擇Notebook菜單中的Define AutoInit Cell命令即可。 2.自初始化單元的應(yīng)用,,目錄,,8.2.3單元群及其應(yīng)用 1.單元群 單元群(Cell Group)是多行輸入單元或自初始化單元組成的一個(gè)整體。 2.單元群的應(yīng)用 單元群的用途主要有兩個(gè): (1)為保證MATLAB命令結(jié)構(gòu)(如循環(huán)結(jié)構(gòu)、條件結(jié)構(gòu))的完整。 (2)為保證輸出結(jié)果(如圖形)的完整。,,目錄,,8.2.4單元的循環(huán)執(zhí)行 利用Notebook菜單中的Evaluate Loop命令可實(shí)現(xiàn)單元的循環(huán)執(zhí)行。,,目錄,,8.3 計(jì)算區(qū)的定義與執(zhí)行,定義計(jì)算區(qū)的方法是:先選定包含普通Word文本、輸入單元和輸出單元的一個(gè)連續(xù)區(qū),然后選擇Notebook菜單中的Define Calc Zone命令。 一旦計(jì)算區(qū)被定義后,不管光標(biāo)在計(jì)算區(qū)的什么位置,只要選擇Notebook菜單中的Evaluate Calc Zone命令即可執(zhí)行計(jì)算區(qū)中的全部輸入單元,且在每個(gè)輸入單元后面以輸出單元形式給出相應(yīng)的計(jì)算結(jié)果。,,目錄,,8.4 輸出格式控制,可以通過Notebook菜單中的Notebook Options命令來實(shí)現(xiàn)。選擇該命令后,會彈出輸出格式控制對話框,以后的操作都是針對該對話框進(jìn)行。,,目錄,,8.4.1 輸出數(shù)據(jù)格式控制 1.輸出數(shù)據(jù)的表示方式 2.輸出數(shù)據(jù)間的空行控制 8.4.2 輸出圖形格式控制 利用輸出格式控制對話框,也可以實(shí)現(xiàn)對輸出圖形的控制。 1.圖形鑲嵌的控制 2.曲面圖色彩控制 3.圖形背景色的控制 4.圖形大小的控制,,目錄,,8.5 Notebook菜單的其他命令,8.5.1整個(gè)M-book文檔輸入單元的執(zhí)行 Notebook菜單項(xiàng)中的Evaluate M-book命令可以把整個(gè)M-book文檔中的所有輸入單元送到MATLAB中去執(zhí)行。不管光標(biāo)處于文檔的什么位置,執(zhí)行總是從文檔首部開始。 8.5.2刪去M-book文檔中所有輸出單元 Notebook菜單項(xiàng)中的Purge Output Cells命令可以刪去M-book文檔中所有輸出單元。,,目錄,,8.5.3單元轉(zhuǎn)化為文本 選定單元,再選擇Notebook菜單中的Undefine Cells命令?;?qū)⒐鈽?biāo)置于單元之中,按組合鍵Alt+U。 當(dāng)某輸入單元或單元群被轉(zhuǎn)化為文本時(shí),與之相應(yīng)的輸出單元也被自動(dòng)轉(zhuǎn)化為文本。,,目錄,,8.6 M-book模板樣式的修改,同其他Word模板一樣,用戶既可以修改M-book模板原有樣式,也可以加入新樣式。例如,現(xiàn)有的M-book模板中,輸入單元是綠色的,輸出單元和自初始化單元是藍(lán)色的,錯(cuò)誤單元是紅色的。現(xiàn)在可以把輸出單元的顏色變?yōu)楹谏?,目錄,,第9章 MATLAB環(huán)境下的仿真軟件Simulink,9.1 Simulink的基本操作 9.2 Simulink的幾類基本模塊 9.3 仿真模型參數(shù)的設(shè)置 9.4 子系統(tǒng)的建立與封裝 9.5 在命令窗口中創(chuàng)建模型 9.6 S-函數(shù)的設(shè)計(jì)和應(yīng)用 9.7 仿真系統(tǒng)的線性化分析,,目錄,,9.1 Simulink的基本操作,9.1.1 Simulink的啟動(dòng)與退出 1. Simulink的啟動(dòng) 啟動(dòng)Simulink的方法有3種: (1)在MATLAB的命令窗口直接鍵入simulink。 (2)單擊MATLAB命令窗口工具欄上的Simulink模塊庫瀏覽器命令按鈕。 (3)在MATLAB命令窗口File菜單中選擇New菜單項(xiàng)下的Model命令。 2. Simulink的退出 為了退出Simulink,只要關(guān)閉所有模型窗口和Simulink模塊庫窗口即可。,,目錄,,,9.1.2 Simulink模塊的操作 1. 選取模塊 2. 復(fù)制與刪除模塊 3. 模塊的參數(shù)和屬性設(shè)置 4. 模塊外形的調(diào)整 5. 模塊名的處理 6. 模塊的連接 7. 在連線上反映信息。,,目錄,,9.2 Simulink的幾類基本模塊,9.3 仿真模型參數(shù)的設(shè)置 9.3.1 通過菜單命令設(shè)置仿真模型參數(shù) 選擇模型窗口Simulation菜單中的Parameter命令,將出現(xiàn)仿真參數(shù)對話框。對話框分四個(gè)選項(xiàng)卡:Solver(算法)、Workspace I/O(工作空間輸入輸出)、Diagnostics(診斷)和Real-Time Workshop(實(shí)時(shí)工作間)。,,目錄,,,9.3.2 在命令窗口調(diào)用函數(shù)設(shè)置仿真模型參數(shù) 1. sim 函數(shù) 其調(diào)用格式為: [t, x, y ] =sim(modname,timespan,options,data); 2. simset函數(shù) 它有如下4種用法: (1)options=simset(property,value,…) (2)options=simset(old_opstruct,property,value,…) (3)options=simset(old_opstruct,new_opstruct) (4)simset,,目錄,,,例9.1以圖9.15所示的仿真模型為例,說明simset函數(shù)的用法。 (1)在命令窗口輸入命令: option=simset(OutputVariables,x,OutputPoints,all,FinalstateName,date); [t,x,y]=sim(mode1,[1,10],option) (2)在命令窗口中輸命令: optionl=simset(OutputVariables,xy,OutputPoints,all); [t,x,y]=sim(Simul,[2,4,6,8],option1);,,目錄,,,3. simget函數(shù) 該函數(shù)有如下3種用法: (1)struct=simget(model) (2)value=simget(model,property) (3)value=simget(Option,Structure,property) 4.set_param函數(shù) (1)設(shè)置仿真參數(shù) 調(diào)用格式為:set_param(mode,property,value,…) (2)控制仿真進(jìn)程 調(diào)用格式為: set_param(mode,SimulationCommand,cmd),,目錄,,,例9.2 假設(shè)從實(shí)際應(yīng)用領(lǐng)域(力學(xué)、電學(xué)、生態(tài)或社會)中,抽象出有初始狀態(tài)為0的二階微分方程x“+0.2x+0.4x=0.2u (t), u(t)是單位階躍函數(shù)。用積分器直接構(gòu)造求解微分方程的模型exm1.mdl。 步驟如下: (1)改寫微分方程。把原方程改寫為:x“=0.2u(t)-0.2x-0.4x (2)利用Simulink模塊庫中的標(biāo)準(zhǔn)模塊構(gòu)作模型。 (3)仿真操作。 (4)保存在MATLAB工作空間中的數(shù)據(jù)。,,目錄,,,例9.3利用傳遞函數(shù)模塊建模。 步驟如下: (1)根據(jù)系統(tǒng)傳遞函數(shù)構(gòu)造系統(tǒng)模型 (2)仿真操作。 例9.4利用狀態(tài)方程模塊建模。 (1)利用構(gòu)造仿真模型 (2)仿真,,目錄,,9.4 子系統(tǒng)的建立與封裝,9.4.1 子系統(tǒng)的建立 1. 通過Subsystem模塊建立子系統(tǒng) 操作步驟為: (1)先打開Simulink模塊庫瀏覽器,新建一個(gè)仿真模型。 (2)打開Simulink模塊庫中的Signals & Systems模塊庫,復(fù)制Subsystem模塊到新的模型窗口中。 (3)用鼠標(biāo)左鍵雙擊Subsystem模塊打開一個(gè)空白的Subsystem窗口,將要組合的模塊添加到該窗口中,另外還要根據(jù)需要復(fù)制一個(gè)或多個(gè)Input和Output模塊,表示子系統(tǒng)的輸入和輸出端口。這樣,一個(gè)子系統(tǒng)就建好了。,,目錄,,,2. 通過已有的模塊建立子系統(tǒng) 操作步驟為: (1)先選擇要建立子系統(tǒng)的模塊,不包括輸入端口和輸出端口。 (2)選擇模型窗口Edit菜單中的Create Subsystem 命令,這樣,子系統(tǒng)就建好了。在這種情況下,系統(tǒng)會自動(dòng)把Input模塊和Output模塊添加到子系統(tǒng)中,并把原來的模塊變?yōu)樽酉到y(tǒng)的圖標(biāo)。,,目錄,,9.4.2 子系統(tǒng)的條件執(zhí)行 1. 使能子系統(tǒng) 建立使能子系統(tǒng)的方法是:打開Simulink模塊庫中的Signals & Systems模塊庫,將Enable模塊復(fù)制到子系統(tǒng)模型中,則系統(tǒng)的圖標(biāo)發(fā)生了變化。,,目錄,,例9.5利用使能原理構(gòu)成一個(gè)正弦半波整流器。 操作步驟如下: (1)打開Simulink模塊庫瀏覽器以及新建一個(gè)模型窗口。 (2)雙擊空子系統(tǒng)模塊Subsystem,打開其結(jié)構(gòu)模型窗。 (3)將Simulink瀏覽庫中的In輸入口模塊、Out輸出口模塊、Enable使能模塊拖至子系統(tǒng)的結(jié)構(gòu)模型窗;把In模塊的輸出直接送到Out模塊的輸入端;Enable模塊無須進(jìn)行任何連接,且采用它的缺省設(shè)置實(shí)現(xiàn)題目所需使能子系統(tǒng)。 (4)完成新建模型窗口中各模塊間的連接并存盤。 (5)雙擊示波器模塊,打開顯示窗。然后選擇Simulink菜單中的Start命令,就可看到半波整流波形。,,目錄,,2. 觸發(fā)子系統(tǒng) 觸發(fā)子系統(tǒng)是指當(dāng)觸發(fā)事件發(fā)生時(shí)開始執(zhí)行子系統(tǒng)。與使能子系統(tǒng)相類似,觸發(fā)子系統(tǒng)的建立要把Signals & Systems模塊庫中的Trigger模塊拷貝到子系統(tǒng)中。,,目錄,,例9.6 利用觸發(fā)子系統(tǒng)原理將一鋸齒波轉(zhuǎn)換成方波。 操作步驟如下: (1)用Signal Generator、Subsystem和Scope模塊構(gòu)成一子系統(tǒng),雙擊Signal Generator模塊圖標(biāo)在Wave from的下拉列表框中選擇sawtooth,即鋸齒波。 (2)將上例中的Enable模塊換成Trigger觸發(fā)模塊。雙擊該模塊并選Trigger type觸發(fā)事件形式為either,即上跳沿或下跳沒觸發(fā)。 (3)完成新建模型窗口中各模塊間的連接,并存盤。 (4)雙擊示波器模塊,然后選擇Simulink菜單中的start命令,就可看到方波。,,目錄,,3. 使能加觸發(fā)子系統(tǒng) 所謂使能加觸發(fā)子系統(tǒng)就是把Enable和Tirgger模塊都加到子系統(tǒng)中,使能控制信號和觸發(fā)控制信號共同作用子系統(tǒng)的執(zhí)行,也就是前兩種子系統(tǒng)的綜合。該系統(tǒng)的行為方式與觸發(fā)子系統(tǒng)相似,但只有當(dāng)使能信號為正時(shí),觸發(fā)事件才起作用。,,目錄,,9.4.3 子系統(tǒng)的封裝 子系統(tǒng)的封裝過程很簡單:先選中所要封裝的子系統(tǒng),再選擇模型窗口Edit菜單中的Mask Subsystem命令,這時(shí)將出現(xiàn)Mask Editor對話框。 Mask Editor對話框中共包括3個(gè)選項(xiàng)卡:Icon、Initialization和Documentation。子系統(tǒng)的封裝主要就是對這3頁參數(shù)進(jìn)行設(shè)置。,,目錄,,9.5 在命令窗口中創(chuàng)建模型,9.5.1 構(gòu)造模型的命令 9.5.2 設(shè)置參數(shù),,目錄,,9.6 S-函數(shù)的設(shè)計(jì)和應(yīng)用,9.6.1 S-函數(shù)概述 9.6.2 用M文件編寫S-函數(shù) (1)MATLAB5.3為用戶提供了一個(gè)模板,只要在必要的子程序里編寫代碼并輸入?yún)?shù)就可以了。 (2)從Function & Tables子庫里把S-Function系統(tǒng)的功能模塊復(fù)制過來,輸入程序的文件名,以供調(diào)用。,,目錄,,,例9.7利用M文件來寫一個(gè)限幅積分器的S-函數(shù),并借助S-函數(shù)模塊來調(diào)用此文件。限幅積分器的數(shù)學(xué)模型如下: 操作步驟如下: (1)根據(jù)數(shù)學(xué)模型,編寫S-函數(shù)sfun97.m。 function [sys, x0, str, ts] = sfun97(t, x, u, flag, lb, ub, xi) switch flag, case 0, [sys, x0, srt, ts] = mdlInitializeSizes(xi); case 1, sys = mdlDerivatives(t, x, u, lb, ub); case 2 , sys = mdlUpdate(t, x, u); case 3, sys = mdlOutputs(t, x, u); case 4, sys = mdlGetTimeOfNextVarHit(t, x, u); case 9, sys = mdlTerminate (t , x , u); otherwise error ( [ ‘Unhandled flag =’ ,num2str ( flag) ] ); end function [sys,x0,str,ts]=mdlInitializeSizes(xi) sizes =simsizes; sizes.NumContStates=1; sizes.NumDiscStates=0; sizes.NumOutputs=1; sizes.NumInputs=1; sizes.DirFeedthrough=0; sizes.NumSampleTimes=1; sys=simsizes(sizes); xo=xi; str=[ ]; ts=[0, 0]; function sys=mdlDerivatives(t,x,u,lb,ub) if(x=ub,,目錄,,(2)完成S-函數(shù)的編寫后,接著建立 Simulink模型,將功能模塊S-function復(fù)制到設(shè)計(jì)區(qū)域,打開其參數(shù)頁,輸入S-函數(shù)的文件名sfun97.m和S-函數(shù)的參數(shù)lb、ub、xi。 (3)編寫主程序。 clear; lb=-0.5; ub=0.5; xi=0; sim(‘sfun97’); (4)在命令窗口運(yùn)行主程序,并雙擊示波器,即可查看到輸入波形及限幅積分的結(jié)果。,,目錄,,9.7 仿真系統(tǒng)的線性化分析,9.7.1 連續(xù)系統(tǒng)的線性化 線性化分析函數(shù)linmod用來提取非線性系統(tǒng)的近似線性模型,也可以用來獲取線性系統(tǒng)的數(shù)學(xué)模型。linmod函數(shù)的調(diào)用格式為: [A,B,C,D]=linmod (sys) [A,B,C,D]=linmod (sys, x ,u) [A,B,C,D]=linmod (sys, x, u, pert) [A,B,C,D]=linmod (sys, x, u, pert, xpert, upert),,目錄,,9.7.2離散系統(tǒng)的線性化 dlinmod能夠以任意給定的采樣時(shí)間對離散系統(tǒng)、多速率系統(tǒng)以及連續(xù)和離散混合系統(tǒng)進(jìn)行線性化。除了第2個(gè)選項(xiàng)需要插入采樣時(shí)間來對系統(tǒng)線性化外,dlinmod的調(diào)用格式和linmod是相同的: [A,B,C,D]=dlinmod (sys, Ts, x ,u),,目錄,,9.7.4 平衡分析 在給定輸入、輸出及狀態(tài)條件下,Simulink提供的函數(shù)trim可以用來確定系統(tǒng)的穩(wěn)態(tài)平衡點(diǎn)。其調(diào)用格式為: [x,u,y,dx]=trim(sys) [x,u,y,dx]=trim(sys,x0,u0,y0,ix,iu,iy) 其中x,u,y,dx分別代表狀態(tài)向量、輸入向量、輸出向量和狀態(tài)向量的導(dǎo)數(shù)。sys是模型名。x0,u0,y0分別為狀態(tài)向量x、輸入向量u和輸出向量y的初始猜測值,它們的輸入格式必須是列向量形式。ix是向量,它的元素是那些在尋找過程中,要求保持其值固定不變(等于初始猜測值)的那些狀態(tài)變量的序號。iu、iy與ix類似,分別適用于u和y。,,目錄,,MATLAB使用注意項(xiàng),,,10.1 腳本文件和函數(shù)文件 10.2 函數(shù)調(diào)用和參數(shù)傳遞 10.3 M文件的調(diào)試 4 環(huán)境設(shè)置 10. 5 MATLAB使用中的常用命令,,目錄,,10.1 腳本文件和函數(shù)文件,10.1.1 M腳本文件,對于一些比較簡單的問題 ,在指令窗中直接輸入指令計(jì)算 。,對于復(fù)雜計(jì)算,采用腳本文件(Script file)最為合適 。,MATLAB只是按文件所寫的指令執(zhí)行 。,M腳本文件的特點(diǎn)是:,腳本文件的構(gòu)成比較簡單,只是一串按用戶意圖排列而成的(包括控制流向指令在內(nèi)的)MATLAB指令集合。,腳本文件運(yùn)行后 ,所產(chǎn)生的所有變量都駐留在 MATLAB基本工作空間(Base workspace)中。只要用戶不使用清除指令(clear), MATLAB指令窗不關(guān)閉,這些變量將一直保存在基本工作空間中。,M文件有兩種形式 :腳本文件(Script File)和函數(shù)文件(Function File )。這兩種文件的擴(kuò)展名,均為“ . m” 。,,目錄,,10.1.2 M函數(shù)文件,與腳本文件不同 ,函數(shù)文件猶如一個(gè)“黑箱”,把一些數(shù)據(jù)送進(jìn)并經(jīng)加工處理,再把結(jié)果送出來。,MATLAB提供的函數(shù)指令大部分都是由函數(shù)文件定義的。,M函數(shù)文件的特點(diǎn)是:,從形式上看 ,與腳本文件不同 ,函數(shù)文件的笫一行總是以 “function”引導(dǎo)的“函數(shù)申明行”。,從運(yùn)行上看 ,與腳本文件運(yùn)行不同 ,每當(dāng)函數(shù)文件運(yùn)行, MATLAB就會專門為它開辟一個(gè)臨時(shí)工作空間,稱為函數(shù)工作空間( Function workspace) 。當(dāng)執(zhí)行文件最后一條指令時(shí) ,就結(jié)束該函數(shù)文件的運(yùn)行,同時(shí)該臨時(shí)函數(shù)空間及其所有的中間變量就立即被清除。,MATLAB允許使用比 “標(biāo)稱數(shù)目 ”較少的輸入輸出宗量,實(shí)現(xiàn)對函數(shù)的調(diào)用 。,,目錄,,10.1.3 M文件的一般結(jié)構(gòu),由于從結(jié)構(gòu)上看 ,腳本文件只是比函數(shù)文件少一個(gè)“函數(shù)申明行”,所以只須描述清楚函數(shù)文件的結(jié)構(gòu) 。,典型 M函數(shù)文件的結(jié)構(gòu)如下 :,函數(shù)申明行:位于函數(shù)文件的首行,以關(guān)鍵字 functio 開頭,函數(shù)名以及函數(shù)的輸入輸出宗量都在這一行被定義。,笫一注釋行:緊隨函數(shù)申明行之后以%開頭笫一注釋行。該行供lookfor關(guān)鍵詞查詢和 help在線幫助使用 。,在線幫助文本區(qū) :笫一注釋行及其之后的連續(xù)以%開頭的所有注釋行構(gòu)成整個(gè)在線幫助文本。,編寫和修改記錄:與在線幫助文本區(qū)相隔一個(gè)“空”行,也以%開頭,標(biāo)志編寫及修改該M文件的作者和日期等 。,函數(shù)體:為清晰起見,它與前面的注釋以“空”行相隔。,,目錄,,10.2 函數(shù)調(diào)用和參數(shù)傳遞,10.2.1 局部變量和全局變量,局部(Local)變量:它存在于函數(shù)空間內(nèi)部的中間變量,產(chǎn)生于該函數(shù)的運(yùn)行過程中,其影響范圍也僅限于該函數(shù)本身 。,全局(Global)變量:通過 global 指令,MATLAB也允許幾個(gè)不同的函數(shù)空間以及基本工作空間共享同一個(gè)變量,這種被共享的變量稱為全局變量。,10.2.2 函數(shù)調(diào)用,在MATLAB中,調(diào)用函數(shù)的常用形式是:,[輸出參數(shù)1,輸出參數(shù)2,…] = 函數(shù)名(輸入?yún)?shù)1,輸入?yún)?shù)2, …),函數(shù)調(diào)用可以嵌套,一個(gè)函數(shù)可以調(diào)用別的函數(shù),甚至調(diào)用它自己 (遞歸調(diào)用)。,,目錄,,10.2.3 參數(shù)傳遞,MATLAB在函數(shù)調(diào)用上有一個(gè)與眾不同之處 :函數(shù)所傳遞的參數(shù)具有可調(diào)性 。,傳遞參數(shù)數(shù)目的可調(diào)性來源于如下兩個(gè)MATLAB永久變量:,函數(shù)體內(nèi)的 nargin 給出調(diào)用該函數(shù)時(shí)的輸入?yún)?shù)數(shù)目。,函數(shù)體內(nèi)的 nargout 給出調(diào)用該函數(shù)時(shí)的輸出參數(shù)數(shù)目。,只要在函數(shù)文件中包括這兩個(gè)變量,就可以知道該函數(shù)文件調(diào)用時(shí)的輸入?yún)?shù)和輸出參數(shù)數(shù)目。,值得注意:nargin、 nargout 本身都是函數(shù),不是變量,所以用戶不能賦值,也不能顯示。,“變長度”輸入輸出宗量:varargin 、 varrgout。具有接受 “任意多輸入” 、返回“任意多輸出”的能力 。,跨空間變量傳遞:evalin。,(參考 : circle .m,am1.m),,目錄,,10.3 M文件的調(diào)試,編寫 M文件時(shí),錯(cuò)誤(Bug)在所難免。錯(cuò)誤有兩種:語法(Syntax)錯(cuò)誤和運(yùn)行(Run-time)錯(cuò)誤。,語法錯(cuò)誤是指變量名、函數(shù)名的誤寫,標(biāo)點(diǎn)符號的缺、漏等。對于這類錯(cuò)誤,通常能在運(yùn)行時(shí)發(fā)現(xiàn),終止執(zhí)行,并給出相應(yīng)的錯(cuò)誤原因以及所在行號。,運(yùn)行錯(cuò)誤是算法本身引起的,發(fā)生在運(yùn)行過程中。相對語法錯(cuò)誤而言,運(yùn)行錯(cuò)誤較難處理 。尤其是M函數(shù)文件,它一旦運(yùn)行停止,其中間變量被刪除一空,錯(cuò)誤很難查找。,有兩種調(diào)試方法:直接調(diào)試法和工具調(diào)試法。,,目錄,,直接調(diào)試法:可以用下面方法發(fā)現(xiàn)某些運(yùn)行錯(cuò)誤。,在M文件中,將某些語句后面的分號去掉, 迫使M文件輸出一些中間計(jì)算結(jié)果,以便發(fā)現(xiàn)可能的錯(cuò)誤。,在適當(dāng)?shù)奈恢?,添加顯示某些關(guān)鍵變量值的語句(包括使用 disp 在內(nèi))。,利用 echo 指令,使運(yùn)行時(shí)在屏幕上逐行顯示文件內(nèi)容。echo on 能顯示M腳本文件;echo FunNsme on 能顯示名為FunNsme 的M函數(shù)文件。,在原M腳本或函數(shù)文件的適當(dāng)位置,增添指令 keyboard 。 keyboard 語句可以設(shè)置程序的斷點(diǎn) 。,通過將原M函數(shù)文件的函數(shù)申明行注釋掉,可使一個(gè)中間變量難于觀察的M函數(shù)文件變?yōu)橐粋€(gè)所有變量都保留在基本工作空間中的M腳本文件。,,目錄,,GUI 界面調(diào)試法:,MATLAB 5.x 版提供了一個(gè)基于GUI界面的調(diào)試。使用它,可以對函數(shù)進(jìn)行調(diào)試。,Debug菜單的使用:,Continue:恢復(fù)程序運(yùn)行至結(jié)束或另一個(gè)斷點(diǎn) 。,Single Step:單步執(zhí)行函數(shù)。,Step In:深入下層局部工作區(qū) 。,Quit Debugging:退出調(diào)試狀態(tài)。,Set/Clear Breakpoint:設(shè)置/清除光標(biāo)處的斷點(diǎn) 。,Clear All Breakpoints:清除程序中的所有斷點(diǎn) 。,Stop if Error:運(yùn)行至出錯(cuò)或結(jié)束。,Stop if Warning:運(yùn)行至警告消息或結(jié)束。,Stop if NaN of Inf:運(yùn)行至運(yùn)算結(jié)果出現(xiàn) NaN 或 Inf。,,目錄,,10.4 環(huán)境設(shè)置,每次MATLAB遇到一個(gè)命令(例如test)時(shí),其處置程序?yàn)椋?1.將test視為使用者定義的變數(shù)。 2.若test不是使用者定義的變數(shù),將其視為永久常數(shù)。 3.若test不是永久常數(shù),檢查其是否為目前工作目錄下 的M檔案。 4.若不是,則由搜尋路徑尋找是否有test.m的檔案。 5.若在搜尋路徑中找不到,則MATLAB會發(fā)出嗶嗶聲并 印出錯(cuò)誤訊息。,,目錄,,假設(shè)test.m所在的目錄是d:\mlbook。如果不先進(jìn)入這個(gè)目錄, MATLAB就找不到你要執(zhí)行的M檔案。如果希望MATLAB不論在何處都能執(zhí)行 test.m,那麼就必須將d:\mlbook加入MATLAB的搜尋路徑(Search path)上。要檢MATLAB的搜尋路徑,鍵入path即可:,要將d:\mlbook加入MATLAB的搜尋路徑,還是使用path命令: path(path, c:\data\mlbook);,,目錄,,10.5 MATLAB使用中的常用命令,Close 關(guān)閉窗口命令 Clear 清除變量賦值 Ans 對上一個(gè)問題的回答,,目錄,,- 1.請仔細(xì)閱讀文檔,確保文檔完整性,對于不預(yù)覽、不比對內(nèi)容而直接下載帶來的問題本站不予受理。
- 2.下載的文檔,不會出現(xiàn)我們的網(wǎng)址水印。
- 3、該文檔所得收入(下載+內(nèi)容+預(yù)覽)歸上傳者、原創(chuàng)作者;如果您是本文檔原作者,請點(diǎn)此認(rèn)領(lǐng)!既往收益都?xì)w您。
下載文檔到電腦,查找使用更方便
14.9 積分
下載 |
- 配套講稿:
如PPT文件的首頁顯示word圖標(biāo),表示該P(yáng)PT已包含配套word講稿。雙擊word圖標(biāo)可打開word文檔。
- 特殊限制:
部分文檔作品中含有的國旗、國徽等圖片,僅作為作品整體效果示例展示,禁止商用。設(shè)計(jì)者僅對作品中獨(dú)創(chuàng)性部分享有著作權(quán)。
- 關(guān) 鍵 詞:
- MATLAB 圖形 用戶 界面設(shè)計(jì) 仿真
鏈接地址:http://m.jqnhouse.com/p-2905617.html