![圖形用戶界面(GUI)制作_第1頁](http://file3.renrendoc.com/fileroot_temp3/2022-2/26/c8463213-d328-4cb2-8eaf-97c041c70afa/c8463213-d328-4cb2-8eaf-97c041c70afa1.gif)
![圖形用戶界面(GUI)制作_第2頁](http://file3.renrendoc.com/fileroot_temp3/2022-2/26/c8463213-d328-4cb2-8eaf-97c041c70afa/c8463213-d328-4cb2-8eaf-97c041c70afa2.gif)
![圖形用戶界面(GUI)制作_第3頁](http://file3.renrendoc.com/fileroot_temp3/2022-2/26/c8463213-d328-4cb2-8eaf-97c041c70afa/c8463213-d328-4cb2-8eaf-97c041c70afa3.gif)
![圖形用戶界面(GUI)制作_第4頁](http://file3.renrendoc.com/fileroot_temp3/2022-2/26/c8463213-d328-4cb2-8eaf-97c041c70afa/c8463213-d328-4cb2-8eaf-97c041c70afa4.gif)
![圖形用戶界面(GUI)制作_第5頁](http://file3.renrendoc.com/fileroot_temp3/2022-2/26/c8463213-d328-4cb2-8eaf-97c041c70afa/c8463213-d328-4cb2-8eaf-97c041c70afa5.gif)
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、圖形用戶界面(GUI)制作<P>大家看看,有什么心得貼上來討論討論</P><P>用戶界面(或接口)是指:人與機器(或程序)之間交互作用的工具和方法。如鍵盤、鼠標、跟蹤球、話筒都可成為與計算機交換信息的接口。 <BR>圖形用戶界面(Graphical User Interfaces ,GUI)則是由窗口、光標、按鍵、菜單、文字說明等對象(Objects)構成的一個用戶界面。用戶通過一定的方法(如鼠標或鍵盤)選擇、激活這些圖形對象,使計算機產生某種動作或變化,比如實現(xiàn)計算、繪圖等。 <BR>假如讀者所從事的數(shù)據(jù)分析、解方程、計算結果可視工
2、作比較單一,那么一般不會考慮GUI的制作。但是如果讀者想向別人提供應用程序,想進行某種技術、方法的演示,想制作一個供反復使用且操作簡單的專用工具,那么圖形用戶界面也許是最好的選擇之一。 <BR>MATLAB為表現(xiàn)其基本功能而設計的演示程序demo 是使用圖形界面的最好范例。MATLAB的用戶,在指令窗中運行demo 打開那圖形界面后,只要用鼠標進行選擇和點擊,就可瀏覽那豐富多彩的內容。 <BR>即便比較熟悉MATLAB的讀者,在他初次編寫GUI程序時,也會感到棘手。為使讀者獲得制作自己GUI的體驗,本章“入門”節(jié)提供了一個簡單的示例。讀者只要輸入所提供的程序,就可引出相
3、應的界面。 <BR>本章第2節(jié)敘述圖形用戶界面的設計原則和一般制作步驟。第3、4節(jié)分別介紹用戶菜單、用戶控件的制作。出于“由淺入深”的考慮,前4節(jié)制作GUI是通過M腳本文件實現(xiàn)的。利用M函數(shù)文件制作GUI ,需要解決數(shù)據(jù)傳遞問題,為此專設第5節(jié)給予闡述和示例。MATLAB 5.x版為方便用戶制作圖形界面,提供了一個交互式的設計工具guide 。關于該工具的使用方法,被放在第6節(jié)中,以一個綜合例題為設計目標逐步展開。 <BR>在此提醒讀者,假如要比較準確的理解本章程序和掌握本章內容,請先閱讀第10章關于圖柄的內容。 <BR>11.1 入門 <BR>
4、【*例11.1-1】對于傳遞函數(shù)為 的歸一化二階系統(tǒng),制作一個能繪制該系統(tǒng)單位階躍響應的圖形用戶界面。本例演示:(A)圖形界面的大致生成過程;(B)靜態(tài)文本和編輯框的生成;(C)坐標方格控制鍵的形成;(D)如何使用該界面。 <BR>(1)產生圖形窗和軸位框: <BR>clf reset <BR>H=axes('unit','normalized','position',0,0,1,1,'visible','off'); <BR>set(gcf,'current
5、axes',H); <BR>str='fontname隸書歸一化二階系統(tǒng)的階躍響應曲線' <BR>text(0.12,0.93,str,'fontsize',13); <BR>h_fig=get(H,'parent'); <BR>set(h_fig,'unit','normalized','position',0.1,0.2,0.7,0.4); <BR>h_axes=axes('parent',h_fig,. <
6、;BR>'unit','normalized','position',0.1,0.15,0.55,0.7,. <BR>'xlim',0 15,'ylim',0 1.8,'fontsize',8); <BR><BR>圖 11.1-1 產生坐標軸 <BR><BR>(2)在坐標框右側生成作解釋用的“靜態(tài)文本”和可接受輸入的“編輯框”: <BR>h_text=uicontrol(h_fig,'style','
7、;text',. <BR>'unit','normalized','position',0.67,0.73,0.25,0.14,. <BR>'horizontal','left','string','輸入阻尼比系數(shù)','zeta ='); <BR>h_edit=uicontrol(h_fig,'style','edit',. <BR>'unit','norm
8、alized','position',0.67,0.59,0.25,0.14,. <BR>'horizontal','left',. <BR>'callback',. <BR>'z=str2num(get(gcbo,''string'');',. <BR>'t=0:0.1:15;',. <BR>'for k=1:length(z);',. <BR>'s2=tf(1,
9、1 2*z(k) 1); ',. <BR>'y(:,k)=step(s2,t);',. <BR>'plot(t,y(:,k);',. <BR>'if (length(z)>1) ,hold on,end,',. <BR>'end;',. <BR>'hold off,'); <BR><BR>圖 11.1-2 在圖形界面中添加編輯框和文本框 <BR><BR>(3)形成坐標方格控制按鍵: <BR
10、>h_push1=uicontrol(h_fig,'style','push',. <BR>'unit','normalized','position',0.67,0.37,0.12,0.15,. <BR>'string','grid on','callback','grid on'); <BR>h_push2=uicontrol(h_fig,'style','push',. &
11、lt;BR>'unit','normalized','position',0.67,0.15,0.12,0.15,. <BR>'string','grid off','callback','grid off'); <BR><BR>圖 11.1-3 添加了兩個按鍵的圖形界面 <BR><BR>(4)輸入阻尼比系數(shù) ,可得單位階躍響應曲線: <BR><BR>圖 11.1-4 輸入標量阻尼比所得到的響應
12、曲線 <BR><BR><BR><BR>圖 11.1-5 輸入阻尼比數(shù)組所得到的一組響應曲線 <BR><BR><BR><BR>11.2 圖形用戶界面的設計原則和一般步驟 <BR>11.2.1 設計原則 <BR>11.2.2 一般制作步驟 <BR>11.3 界面菜單(uimenu) <BR>11.3.1 圖形窗的標準菜單 <BR>【例11.3.1-1】本例說明:如何隱藏和恢復標準菜單的顯示。 <BR>(1)獲得缺省設置的標準菜單 &
13、lt;BR>figure <BR><BR>(2)隱去標準菜單的兩種方法 <BR>set(H_fig , 'MenuBar','none'); <BR>set(gcf,'menubar',menubar); <BR><BR>(3)恢復圖形窗上標準菜單 <BR>set(gcf,'menubar','figure'); <BR><BR>圖 11.3.1-1 含有菜單條的圖形窗 圖 11.3.1-2 移去菜單條
14、的圖形窗 <BR></P>11.3.2 自制的用戶菜單 【*例11.3.2-1】本例演示:如何自制一個帶下拉菜單表的用戶菜單(如圖11.3.2-1所示)。該菜單能使圖形窗背景顏色設置為蘭色或紅色。 figure %創(chuàng)建一個圖形窗 h_menu=uimenu(gcf,'label','Color'); %制作用戶頂層菜單項Color <2> h_submenu1=uimenu(h_menu,'label','Blue',. %制作下拉菜單項Blue <3> 'callback&
15、#39;,'set(gcf,''Color'',''blue'')'); %<4> h_submenu2=uimenu(h_menu,'label','Red',. %制作下拉菜單Red <5> 'callback','set(gcf,''Color'',''red'')'); %<6> 圖 11.3.2-1 創(chuàng)建用戶菜單示例 11.3.3 用戶菜單的屬
16、性 11.3.3.1 回調屬性和菜單名 【*例11.3.3.1-1】本例的目標是:在圖形窗上自制一個名為【Test】的“頂層菜單項”;當用鼠標點動該菜單項時,將產生一個帶分格的封閉坐標軸。通過本例說明:(A)回調屬性的運作機理;(B)用戶頂層菜單項的制作(C)uimenu屬性的設置方法;(D)復雜字符串的構成方法和注意事項。 (1)在MATLAB指令窗中運行以下程序可產生帶分格的封閉坐標軸(見圖11.3.3.1-1) grid on,set(gca,'box','on') 圖11.3.3.1-1 帶分格的封閉坐標軸 (2)在MATLAB指令窗中用以下eval指令
17、可產生與圖11.3.3.1-1相同的界面 eval('grid on,set(gca,''box'',''on'')') (3)產生圖11.3.3.1-2界面的uimenu的書寫格式一:直接連續(xù)表示法 uimenu('Label','Test','Callback','grid on,set(gca,''box'',''on''),') 圖11.3.3.1-2 通過頂層菜單Test形成的帶
18、分格的封閉坐標軸 (4)產生圖11.3.3.1-2界面的uimenu的書寫格式二:方括號續(xù)行號表示法 uimenu('Label','Test', . 'Callback','grid on,' , . 'set(gca,''box'',''on'');') (5)產生圖11.3.3.1-2界面的uimenu的書寫格式三:串變量法 Lpv='Test' Cpv='grid on,','set(gca,'&
19、#39;box'',''on''),' uimenu('Label', Lpv, 'Callback' , Cpv) (6)產生圖11.3.3.1-2界面的uimenu的書寫格式四:構架表示法 PS.Label='Test' PS.Callback='grid on;','set(gca,''box'',''on'');' uimenu(PS) 11.3.3.2 設置簡捷鍵或快捷鍵 【*例11.3
20、.3.2-1】本例目標:使圖11.3.2-1所示菜單成為圖11.3.3.2-1那樣,Color菜單項及其下拉的Blue菜單各帶一個簡捷鍵,而另一項下拉菜單Red帶一個快捷鍵。 exm11332_1.m figure h_menu=uimenu(gcf,'Label','&Color'); %帶簡捷鍵C的用戶菜單Color <2> h_submenu1=uimenu(h_menu,'Label','&Blue',. %帶簡捷鍵B的的下拉菜單Blue <3> 'Callback'
21、,'set(gcf,''color'',''blue'')'); h_submenu2=uimenu(h_menu,'label','Red',. %制作另一個下拉菜單Red 'Callback','set(gcf,''color'',''red'')',. 'Accelerator','r'); %為Red菜單設置快捷鍵R <7> 圖 11.3
22、.3.2-1 為用戶菜單設置快捷鍵 11.3.3.3 用戶菜單的外觀設計 【*例11.3.3.3-1】本例演示:()把用戶菜單 'Option' 設置為頂層的第菜單項;()下拉菜單被兩條分隔線分為三個菜單區(qū);()最下菜單項又有兩個子菜單組成。 ()編寫程序,生成如圖11.3.3.3-1所示界面 exm11333_1.m figure h_menu=uimenu('label','Option','Position',3); h_sub1=uimenu(h_menu,'label','grid on'
23、,'callback','grid on'); h_sub2=uimenu(h_menu,'label','grid off','callback','grid on'); h_sub3=uimenu(h_menu,'label','box on','callback','box on',. 'separator','on'); %<6> h_sub4=uimenu(h_menu,'l
24、abel','box off','callback','box off'); h_sub5=uimenu(h_menu,'label','Figure Color','Separator','on'); %<8> h_subsub1=uimenu(h_sub5,'label','Red','ForeGroundColor','r',. %<9> 'callback',
25、9;set(gcf,''Color'',''r'')'); h_subsub2=uimenu(h_sub5,'label','Reset',. 'callback','set(gcf,''Color'',''w'')'); 圖11.3.3.3-1 ()位置屬性的獲取 Pos_O=get(h_menu,'position'), %查詢Option菜單位置值 Pos_BoxOn=get
26、(h_sub3,'position') %查詢box ob子菜單位置值 Pos_Red=get(h_subsub1,'position') %查詢red子菜單的位置值 Pos_O = 3 Pos_BoxOn = 3 Pos_Red = 1 【*例11.3.3.3-2】本例演示:當某菜單項選中后,如何使該菜單項貼上檢錄符“”。 exm11333_2.m figure h_menu=uimenu('label','Option'); h_sub1=uimenu(h_menu,'label','Grid on
27、39;,. %<3> 'callback',. 'grid on,',. 'set(h_sub1,''checked'',''on''),',. 'set(h_sub2,''checked'',''off''),',. ); h_sub2=uimenu(h_menu,'label','Grid off',. %<4> 'callback
28、9;,. 'grid off,',. 'set(h_sub2,''checked'',''on''),',. 'set(h_sub1,''checked'',''off''),',. ); 圖 11.3.3.3-2 Grid on菜單選中后出現(xiàn)檢錄符 11.3.3.4 使能(Enable)與可見性(Visible)屬性 【*例11.3.3.4-1】 本例目標:制作一個帶四個子菜單項的頂層菜單項;該下拉菜單分為兩個功能區(qū);
29、每個功能區(qū)的兩個菜單項是相互對立的,因此采用使能屬性處理;當圖形窗坐標軸消隱時,整個坐標分隔控制功能區(qū)不可見。 (1)編寫如下腳本M文件exm11334_1.m exm11334_1.m clf h_menu=uimenu('label','Option'); %產生頂層菜單項Option h_sub1=uimenu(h_menu,'label','Axis on'); %產生Axis on菜單項,由缺省設置而使能 h_sub2=uimenu(h_menu,'label','Axis off',.
30、'enable','off'); %產生Axis off菜單項,但失能 h_sub3=uimenu(h_menu,'label','Grid on',. 'separator','on','visible','off'); %產生與上分隔的Grid on菜單項,但不可見 h_sub4=uimenu(h_menu,'label','Grid off',. 'visible','off'); %產生Grid
31、off菜單項,但不可見 set(h_sub1,'callback',. %選中Axis on菜單項后,產生回調操作 'Axis on,',. %畫坐標 'set(h_sub1,''enable'',''off''),',. %Axis on菜單項失能 'set(h_sub2,''enable'',''on''),',. %Axis off菜單項使能 'set(h_sub3,''vi
32、sible'',''on''),',. %Grid on菜單項可見 'set(h_sub4,''visible'',''on''),'); %Grid off菜單項可見 set(h_sub2,'callback',. % %選中Axis off菜單項后,產生回調操作 'axis off,',. %使坐標消失 'set(h_sub1,''enable'',''on'&
33、#39;),',. %Axis on菜單項使能 'set(h_sub2,''enable'',''off''),',. %Axis off菜單項失能 'set(h_sub3,''visible'',''off''),',. %Grid on菜單項不可見 'set(h_sub4,''visible'',''off''),'); %Grid off菜單項
34、不可見 set(h_sub3,'callback',. %選中Grid on菜單項后,產生回調 'grid on,',. %畫坐標分格線 'set(h_sub3,''enable'',''off''),',. %Grid on菜單項失能 'set(h_sub4,''enable'',''on''),'); %Grid off菜單項使能 set(h_sub4,'callback',. %選中
35、Grid off菜單項,產生回調 'grid off,',. %消除坐標分格線 'set(h_sub3,''enable'',''on''),',. %Grid on菜單項使能 'set(h_sub4,''enable'',''off''),'); %Grid off菜單項失能 (2)在MATLAB指令窗中運行exm11334_1 ,得到圖11.3.3.4-1所示的界面 圖11.3.3.4-1 (3)選中【Option】
36、菜單項,界面呈現(xiàn)如圖11.3.3.4-2 所示。 圖11.3.3.4-2 (4)選中【Option:Axis on】后,界面呈現(xiàn)如圖11.3.3.4-3 所示。 圖11.3.3.4-3 (5)選中【Option:Grid on】后,界面呈現(xiàn)如圖11.3.3.4-4 所示。 圖11.3.3.4-4 11.3.4 現(xiàn)場菜單的制作 【*例11.3.4-1】目標:繪制一條Sa曲線,創(chuàng)建一個與之相聯(lián)系的現(xiàn)場菜單,用以控制Sa曲線的顏色。 (1)編寫腳本M文件exm1134_1.m exm1134_1.m t=(-3*pi:pi/50:3*pi)+eps; y=sin(t)./t; hline=plot(
37、t,y); %繪制Sa曲線 cm=uicontextmenu; %創(chuàng)建現(xiàn)場菜單 %制作具體菜單項,定義相應的回調 uimenu(cm,'label','Red','callback','set(hline,''color'',''r''),') uimenu(cm,'label','Blue','callback','set(hline,''color'',''b&
38、#39;'),') uimenu(cm,'label','Green','callback','set(hline,''color'',''g''),') set(hline,'uicontextmenu',cm) %使cm現(xiàn)場菜單與Sa曲線相聯(lián)系 (2)在指令窗中運行文件exm1134_1.m ,得到圖11.3.4-1所示的(但為藍色的)Sa曲線。 圖 11.3.4-1 Context菜單 (3)將鼠標指針指向線條,點擊鼠標右鍵的同時
39、彈出現(xiàn)場菜單,在選中某菜單項(如Red)后,Sa曲線就改變(為紅)顏色(如圖11.3.4-1所示)。11.4 用戶控件(uicontrol) 11.4.1 控件制作函數(shù) 11.4.2 用戶控件的種類 11.4.3 控件制作示例 11.4.3.1 雙位按鍵、無線電按鍵、控件區(qū)域框示例 【*例11.4.3.1-1】目標:創(chuàng)建一個界面包含4種控件:靜態(tài)文本、“無線電”選擇開關、雙位按鍵、控件區(qū)域框。 exm11431_1.m clf reset set(gcf,'menubar','none') set(gcf,'unit','normaliz
40、ed','position',0.2,0.2,0.64,0.32); set(gcf,'defaultuicontrolunits','normalized') %設置用戶缺省控件單位屬性值 h_axes=axes('position',0.05,0.2,0.6,0.6); t=0:pi/50:2*pi;y=sin(t);plot(t,y); set(h_axes,'xlim',0,2*pi); set(gcf,'defaultuicontrolhorizontal','left
41、39;); htitle=title('正弦曲線'); set(gcf,'defaultuicontrolfontsize',12); %設置用戶缺省控件字體屬性值 uicontrol('style','frame',. %創(chuàng)建用戶控件區(qū) <11> 'position',0.67,0.55,0.25,0.25); uicontrol('style','text',. %創(chuàng)建靜態(tài)文本框 <13> 'string','正斜體圖名:'
42、,. 'position',0.68,0.77,0.18,0.1,. 'horizontal','left'); hr1=uicontrol(gcf,'style','radio',. %創(chuàng)建“無線電”選擇按鍵 <17> 'string','正體',. %按鍵功能的文字標識'正體' 'position',0.7,0.69,0.15,0.08); %按鍵位置 set(hr1,'value',get(hr1,'Max
43、39;);%因圖名缺省使用正體,所以小圓圈應被點黑 <20> set(hr1,'callback',. % <21> 'set(hr1,''value'',get(hr1,''max''),',. %選中將小圓圈點黑 <22> 'set(hr2,''value'',get(hr2,''min''),',. %將“互斥”選項點白 <23> 'set(htitle,
44、39;'fontangle'',''normal''),',. %使圖名字體正體顯示 ); hr2=uicontrol(gcf,'style','radio',. %創(chuàng)建“無線電”選擇按鍵 <26> 'string','斜體',. %按鍵功能的文字標識'斜體' 'position',0.7,0.58,0.15,0.08,. %按鍵位置 'callback',. 'set(hr1,''v
45、alue'',get(hr1,''min''),',. % <30> 'set(hr2,''value'',get(hr2,''max''),',. % <31> 'set(htitle,''fontangle'',''italic'')',. %使圖名字體斜體顯示 ); % <33> ht=uicontrol(gcf,'style
46、9;,'toggle',. %制作雙位按鍵 <34> 'string','Grid',. 'position',0.67,0.40,0.15,0.12,. 'callback','grid'); 圖 11.4.3.1-1 靜態(tài)文本、選擇開關、雙位按鍵及控件區(qū)域框 11.4.3.2 靜態(tài)文本框、滑動鍵、檢錄框示例 【*例11.4.3.2-1】目標:制作演示“歸一化二階系統(tǒng)單位階躍響應”的交互界面。在該界面中,阻尼比可在0.02,2.02中連續(xù)調節(jié),標志當前阻尼比值;可標志峰值時間和大?。豢?/p>
47、標志(響應從0到0.95所需的)上升時間。本例涉及以下主要內容:(A)靜態(tài)文本的創(chuàng)建和實時改寫。(B)滑動鍵的創(chuàng)建;'Max' 和 'Min' 的設置;'Value' 的設置和獲取。(C)檢錄框的創(chuàng)建;'Value' 的獲取。(D)受多個控件影響的回調操作。 exm11432_1.m clf reset set(gcf,'unit','normalized','position',0.1,0.2,0.64,0.35); set(gcf,'defaultuicontroluni
48、ts','normalized'); set(gcf,'defaultuicontrolfontsize',12); set(gcf,'defaultuicontrolfontname','隸書'); set(gcf,'defaultuicontrolhorizontal','left'); str='歸一化二階系統(tǒng)階躍響應曲線' set(gcf,'name',str,'numbertitle','off'); %書寫圖形窗名
49、h_axes=axes('position',0.05,0.2,0.6,0.7); %定義軸位框位置 set(h_axes,'xlim',0,15); %設置時間軸長度 str1='當前阻尼比=' t=0:0.1:10;z=0.5;y=step(1,1 2*z 1,t); hline=plot(t,y); htext=uicontrol(gcf,'style','text',. %制作靜態(tài)說明文本框 <14> 'position',0.67,0.8,0.33,0.1,. 'str
50、ing',str1,sprintf('%1.4g',z); hslider=uicontrol(gcf,'style','slider',. %創(chuàng)建滑動鍵 <17> 'position',0.67,0.65,0.33,0.1,. 'max',2.02,'min',0.02,. %設最大阻尼比為2,最小阻尼比為0.02 <19> 'sliderstep',0.01,0.05,.%箭頭操縱滑動步長1%,游標滑動步長5% <20> 'Va
51、lue',0.5); %缺省取阻尼比等于0.5 <21> hcheck1=uicontrol(gcf,'style','checkbox',. %創(chuàng)建峰值檢錄框 <22> 'string','最大峰值' ,. 'position',0.67,0.50,0.33,0.11); vchk1=get(hcheck1,'value'); %獲得峰值檢錄框的狀態(tài)值 <25> hcheck2=uicontrol(gcf,'style','che
52、ckbox',. %創(chuàng)建上升時間檢錄框 <26> 'string','上升時間(0->0.95)',. 'position',0.67,0.35,0.33,0.11); vchk2=get(hcheck2,'value'); %獲得上升時間檢錄框的狀態(tài)值 <29> set(hslider,'callback',. %操作滑動鍵,引起回調 <30> 'z=get(gcbo,''value'');',. %獲得滑動鍵狀態(tài)值
53、 <31> 'callcheck(htext,str1,z,vchk1,vchk2)'); %被回調的函數(shù)文件 <32> set(hcheck1,'callback',. %操作峰值檢錄框,引起回調 <33> 'vchk1=get(gcbo,''value'');',. %獲得峰值檢錄框狀態(tài)值 <34> 'callcheck(htext,str1,z,vchk1,vchk2)'); %被回調的函數(shù)文件 <35> set(hcheck2,
54、39;callback',. %操作峰值檢錄框,引起回調 <36> 'vchk2=get(gcbo,''value'');',. %獲得峰值檢錄框狀態(tài)值 <37> 'callcheck(htext,str1,z,vchk1,vchk2)'); %被回調的函數(shù)文件 <38> callcheck.m function callcheck(htext,str1,z,vchk1,vchk2) cla,set(htext,'string',str1,sprintf('%1.
55、4g',z); %更新靜態(tài)文本框內容 <2> dt=0.1;t=0:dt:15;N=length(t);y=step(1,1 2*z 1,t);plot(t,y); if vchk1 %假如峰值框被選中 <4> ym,km=max(y); if km<(N-3) %假如在設定時間范圍內能插值 <6> k1=km-3;k2=km+3;k12=k1:k2;tt=t(k12); yy=spline(t(k12),y(k12),tt); %局部樣條插值 <8> yym,kkm=max(yy); %求更精確的峰值位置 line(tt(kkm)
56、,yym,'marker','.',. %畫峰值點 <10> 'markeredgecolor','r','markersize',20); ystr='ymax = ',sprintf('%1.4g',yym); tstr='tmax = ',sprintf('%1.4g',tt(kkm); text(tt(kkm),1.05*yym,ystr;tstr) else %假如在設定時間范圍內不能插值 <15> text(10,0
57、.4*y(end),'ymax -> 1''tmax -> inf') end end if vchk2 %假如上升時間框被選中 <19> k95=min(find(y>0.95);k952=(k95-1),k95; t95=interp1(y(k952),t(k952),0.95); %線性插值 <21> line(t95,0.95,'marker','o','markeredgecolor','k','markersize',6); ts
58、tr95='t95 = ',sprintf('%1.4g',t95); text(t95,0.65,tstr95) end 圖11.4.3.2-1 11.4.3.3 可編輯框、彈出框、列表框、按鍵示例 【*例11.4.3.3-1】目標:制作一個能繪制任意圖形的交互界面。它包括:可編輯文本框、彈出框、列表框。本例的關鍵內容是:如何使編輯框允許輸入多行指令。 exm11433_1.m clf reset % <1> set(gcf,'unit','normalized','position',0.1,0.4
59、,0.85,0.35);%設置圖形窗大小 set(gcf,'defaultuicontrolunits','normalized'); set(gcf,'defaultuicontrolfontsize',11); set(gcf,'defaultuicontrolfontname','隸書'); set(gcf,'defaultuicontrolhorizontal','left'); set(gcf,'menubar','none'); %刪除圖形
60、窗工具條 str='通過多行指令繪圖的交互界面' set(gcf,'name',str,'numbertitle','off'); %書寫圖形窗名 h_axes=axes('position',0.05,0.15,0.45,0.70,'visible','off');%定義軸位框位置 uicontrol(gcf,'Style','text',. %制作靜態(tài)文本框 'position',0.52,0.87,0.26,0.1,. '
61、String','繪圖指令輸入框'); hedit=uicontrol(gcf,'Style','edit',. %制作可編輯文本框 <14> 'position',0.52,0.05,0.26,0.8,. 'Max',2); %取2,使Max-Min>1,而允許多行輸入 <16> hpop=uicontrol(gcf,'style','popup',. %制作彈出菜單 <17> 'position',0.8,0.73
62、,0.18,0.12,. 'string','spring|summer|autumn|winter');%設置彈出框中選項名 <19> hlist=uicontrol(gcf,'Style','list',. %制作列表框 <20> 'position',0.8,0.23,0.18,0.37,. 'string','Grid on|Box on|Hidden off|Axis off',.%設置列表框中選項名 <22> 'Max'
63、,2); %取2,使Max-Min>1,而允許多項選擇 <23> hpush=uicontrol(gcf,'Style','push',. %制作與列表框配用的按鍵 <24> 'position',0.8,0.05,0.18,0.15,'string','Apply'); set(hedit,'callback','calledit(hedit,hpop,hlist)'); %編輯框輸入引起回調 <26> set(hpop,'call
64、back','calledit(hedit,hpop,hlist)'); %彈出框選擇引起回調 <27> set(hpush,'callback','calledit(hedit,hpop,hlist)'); %按鍵引起的回調 <28> calledit.m function calledit(hedit,hpop,hlist) ct=get(hedit,'string'); %獲得輸入的字符串函數(shù) <2> vpop=get(hpop,'value'); %獲得選項的位置
65、標識 <3> vlist=get(hlist,'value'); %獲得選項位置向量 <4> if isempty(ct) %可編輯框輸入非空時 <5> eval(ct') %運行從編輯文本框送入的指令 <6> popstr='spring','summer','autumn','winter' %彈出框色圖矩陣 <7> liststr='grid on','box on','hidden off',
66、'axis off'%列表框選項內容 <8> invstr='grid off','box off','hidden on','axis on'%列表框的逆指令 <9> colormap(eval(popstrvpop) %采用彈出框所選色圖 <10> vv=zeros(1,4);vv(vlist)=1; for k=1:4 if vv(k);eval(liststrk);else eval(invstrk);end %按列表選項影響圖形 end end 圖 11.4.3.3-1
67、 11.5 由M函數(shù)文件產生用戶菜單和控件 11.5.1 利用全局變量編寫用戶界面函數(shù)文件 【*例11.5.1-1】目標:利用M函數(shù)文件創(chuàng)建與例11.4.3.3-1相同的用戶界面。本例演示:如何依靠全局變量傳遞控件的圖柄,從而保證回調動作正確執(zhí)行。 (1)編寫M函數(shù)文件exm1151_1.m和calledit1.m exm1151_1.m function exm1151_1( ) global hedit hpop hlist (這中間是:原exm11433_1.m第1行到第25行的全部指令) set(hedit,'callback','calledit1')
68、; %編輯框輸入引起回調 <26> set(hpop,'callback','calledit1'); %彈出框選擇引起回調 <27> set(hpush,'callback','calledit1'); %按鍵引起的回調 <28> calledit1.m function calledit1( ) global hedit hpop hlist (下面續(xù)接內容是:原calledit.m第2行以下的全部指令) (2)在MATLAB指令窗中運行exm1151_1就可獲得題目所要求的圖形用戶界面。
69、11.5.2 利用 'UserData' 屬性編寫用戶界面函數(shù)文件 【*例11.5.2-1】目標:利用M函數(shù)文件創(chuàng)建與例11.4.3.3-1相同的用戶界面。本例演示:如何依靠圖形窗的'UserData' 屬性傳送用戶控件的圖柄,從而保證回調動作正確執(zhí)行。 (1)編寫M函數(shù)文件exm1152_1.m和calledit2.m exm1152_1.m function exm1152_1( ) (這中間是:原exm11433_1.m第1行到第25行的全部指令) set(hedit,'callback','calledit2'); %編輯
70、框輸入引起回調 <26> set(hpop,'callback','calledit2'); %彈出框選擇引起回調 <27> set(hpush,'callback','calledit2'); %按鍵引起的回調 <28> set(gcf,'UserData',hedit,hpop,hlist) calledit2.m function calledit2( ) H=get(gcf,'UserData'); ct=get(H(1),'string'
71、); %獲得輸入的字符串函數(shù) <2> vpop=get(H(2),'value'); %獲得選項的位置標識 <3> vlist=get(H(3),'value'); %獲得選項位置向量 <4> (下面續(xù)接內容是:原calledit.m第5行以下的全部指令) (2)在MATLAB指令窗中運行exm1152_1就可獲得題目所要求的圖形用戶界面。 11.5.3 利用遞歸法編寫用戶界面函數(shù)文件 【*例11.5.3-1】目標:利用M函數(shù)文件創(chuàng)建與例11.4.3.3-1相同的用戶界面。本例演示:如何依靠圖形窗'UserData
72、39; 屬性在遞歸調用中傳送用戶控件的圖柄,保證回調動作正確執(zhí)行。 (1)編寫M函數(shù)文件exm1153_1.m exm1153_1.m function exm1153_1(flag) if nargin<1;flag='startup'end %允許在無輸入宗量形式下調用該函數(shù) <2> if ischar(flag);error('flag must be character ''startup''.');end switch flag %切換控制 <4> case 'startup'
73、; % <5> clf reset % <6> set(gcf,'unit','normalized','position',0.1,0.4,0.85,0.35); set(gcf,'defaultuicontrolunits','normalized'); set(gcf,'defaultuicontrolfontsize',11); set(gcf,'defaultuicontrolfontname','隸書'); set(gcf,'
74、;defaultuicontrolhorizontal','left'); set(gcf,'menubar','none'); %刪除圖形窗工具條 str='通過多行指令繪圖的交互界面' set(gcf,'name',str,'numbertitle','off'); %書寫圖形窗名 h_axes=axes('position',0.05,0.15,0.45,0.70,'visible','off'); uicontrol(g
75、cf,'Style','text',. %制作靜態(tài)文本框 'position',0.52,0.87,0.26,0.1,. 'String','繪圖指令輸入框'); hedit=uicontrol(gcf,'Style','edit',. %制作可編輯文本框 <19> 'position',0.52,0.05,0.26,0.8,. % <20> 'Max',2); %取2,使Max-Min>1,而允許多行輸入 <21> hpop=uicontrol(gcf,'style','popup',. %制作彈出菜單 <22> 'position',0.8,0.73,0.18,0.12,. % <23> 'string','spr
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 北師大版道德與法治七年級下冊10.2《積極面對競爭》聽課評課記錄
- 粵人版地理七年級下冊《第一節(jié) 非洲概述》聽課評課記錄
- 2025年天文測量儀器合作協(xié)議書
- 加盟合作框架協(xié)議書范本
- 臨時棄土場土地租用協(xié)議書范本
- 2025年度網(wǎng)紅蛋糕店品牌授權轉讓合同
- 二零二五年度離婚協(xié)議書涉及子女醫(yī)療費用承擔合同
- 2025年度農業(yè)旅游租賃田地合同
- 2025年度期刊訂閱用戶信息保護合同
- 2025年度砍伐合同范文:林業(yè)砍伐與林業(yè)資源整合合作協(xié)議
- 前牙即刻種植的臨床應用
- 2024-2025學年初中七年級上學期數(shù)學期末綜合卷(人教版)含答案
- 體育活動策劃與組織課件
- 公司違規(guī)違紀連帶處罰制度模版(2篇)
- 2025屆高考物理二輪總復習第一編專題2能量與動量第1講動能定理機械能守恒定律功能關系的應用課件
- T型引流管常見并發(fā)癥的預防及處理
- 2024-2025學年人教新版九年級(上)化學寒假作業(yè)(九)
- 內業(yè)資料承包合同個人與公司的承包合同
- 【履職清單】2024版安全生產責任體系重點崗位履職清單
- 2022年全國醫(yī)學博士英語統(tǒng)一考試試題
- 《工業(yè)自動化技術》課件
評論
0/150
提交評論