




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、圖形用戶界面(GUI)制作<P>大家看看,有什么心得貼上來(lái)討論討論</P><P>用戶界面(或接口)是指:人與機(jī)器(或程序)之間交互作用的工具和方法。如鍵盤、鼠標(biāo)、跟蹤球、話筒都可成為與計(jì)算機(jī)交換信息的接口。 <BR>圖形用戶界面(Graphical User Interfaces ,GUI)則是由窗口、光標(biāo)、按鍵、菜單、文字說(shuō)明等對(duì)象(Objects)構(gòu)成的一個(gè)用戶界面。用戶通過(guò)一定的方法(如鼠標(biāo)或鍵盤)選擇、激活這些圖形對(duì)象,使計(jì)算機(jī)產(chǎn)生某種動(dòng)作或變化,比如實(shí)現(xiàn)計(jì)算、繪圖等。 <BR>假如讀者所從事的數(shù)據(jù)分析、解方程、計(jì)算結(jié)果可視工
2、作比較單一,那么一般不會(huì)考慮GUI的制作。但是如果讀者想向別人提供應(yīng)用程序,想進(jìn)行某種技術(shù)、方法的演示,想制作一個(gè)供反復(fù)使用且操作簡(jiǎn)單的專用工具,那么圖形用戶界面也許是最好的選擇之一。 <BR>MATLAB為表現(xiàn)其基本功能而設(shè)計(jì)的演示程序demo 是使用圖形界面的最好范例。MATLAB的用戶,在指令窗中運(yùn)行demo 打開(kāi)那圖形界面后,只要用鼠標(biāo)進(jìn)行選擇和點(diǎn)擊,就可瀏覽那豐富多彩的內(nèi)容。 <BR>即便比較熟悉MATLAB的讀者,在他初次編寫GUI程序時(shí),也會(huì)感到棘手。為使讀者獲得制作自己GUI的體驗(yàn),本章“入門”節(jié)提供了一個(gè)簡(jiǎn)單的示例。讀者只要輸入所提供的程序,就可引出相
3、應(yīng)的界面。 <BR>本章第2節(jié)敘述圖形用戶界面的設(shè)計(jì)原則和一般制作步驟。第3、4節(jié)分別介紹用戶菜單、用戶控件的制作。出于“由淺入深”的考慮,前4節(jié)制作GUI是通過(guò)M腳本文件實(shí)現(xiàn)的。利用M函數(shù)文件制作GUI ,需要解決數(shù)據(jù)傳遞問(wèn)題,為此專設(shè)第5節(jié)給予闡述和示例。MATLAB 5.x版為方便用戶制作圖形界面,提供了一個(gè)交互式的設(shè)計(jì)工具guide 。關(guān)于該工具的使用方法,被放在第6節(jié)中,以一個(gè)綜合例題為設(shè)計(jì)目標(biāo)逐步展開(kāi)。 <BR>在此提醒讀者,假如要比較準(zhǔn)確的理解本章程序和掌握本章內(nèi)容,請(qǐng)先閱讀第10章關(guān)于圖柄的內(nèi)容。 <BR>11.1 入門 <BR>
4、【*例11.1-1】對(duì)于傳遞函數(shù)為 的歸一化二階系統(tǒng),制作一個(gè)能繪制該系統(tǒng)單位階躍響應(yīng)的圖形用戶界面。本例演示:(A)圖形界面的大致生成過(guò)程;(B)靜態(tài)文本和編輯框的生成;(C)坐標(biāo)方格控制鍵的形成;(D)如何使用該界面。 <BR>(1)產(chǎn)生圖形窗和軸位框: <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)的階躍響應(yī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 產(chǎn)生坐標(biāo)軸 <BR><BR>(2)在坐標(biāo)框右側(cè)生成作解釋用的“靜態(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)形成坐標(biāo)方格控制按鍵: <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 添加了兩個(gè)按鍵的圖形界面 <BR><BR>(4)輸入阻尼比系數(shù) ,可得單位階躍響應(yīng)曲線: <BR><BR>圖 11.1-4 輸入標(biāo)量阻尼比所得到的響應(yīng)
12、曲線 <BR><BR><BR><BR>圖 11.1-5 輸入阻尼比數(shù)組所得到的一組響應(yīng)曲線 <BR><BR><BR><BR>11.2 圖形用戶界面的設(shè)計(jì)原則和一般步驟 <BR>11.2.1 設(shè)計(jì)原則 <BR>11.2.2 一般制作步驟 <BR>11.3 界面菜單(uimenu) <BR>11.3.1 圖形窗的標(biāo)準(zhǔn)菜單 <BR>【例11.3.1-1】本例說(shuō)明:如何隱藏和恢復(fù)標(biāo)準(zhǔn)菜單的顯示。 <BR>(1)獲得缺省設(shè)置的標(biāo)準(zhǔn)菜單 &
13、lt;BR>figure <BR><BR>(2)隱去標(biāo)準(zhǔn)菜單的兩種方法 <BR>set(H_fig , 'MenuBar','none'); <BR>set(gcf,'menubar',menubar); <BR><BR>(3)恢復(fù)圖形窗上標(biāo)準(zhǔn)菜單 <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】本例演示:如何自制一個(gè)帶下拉菜單表的用戶菜單(如圖11.3.2-1所示)。該菜單能使圖形窗背景顏色設(shè)置為蘭色或紅色。 figure %創(chuàng)建一個(gè)圖形窗 h_menu=uimenu(gcf,'label','Color'); %制作用戶頂層菜單項(xiàng)Color <2> h_submenu1=uimenu(h_menu,'label','Blue',. %制作下拉菜單項(xiàng)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 回調(diào)屬性和菜單名 【*例11.3.3.1-1】本例的目標(biāo)是:在圖形窗上自制一個(gè)名為【Test】的“頂層菜單項(xiàng)”;當(dāng)用鼠標(biāo)點(diǎn)動(dòng)該菜單項(xiàng)時(shí),將產(chǎn)生一個(gè)帶分格的封閉坐標(biāo)軸。通過(guò)本例說(shuō)明:(A)回調(diào)屬性的運(yùn)作機(jī)理;(B)用戶頂層菜單項(xiàng)的制作(C)uimenu屬性的設(shè)置方法;(D)復(fù)雜字符串的構(gòu)成方法和注意事項(xiàng)。 (1)在MATLAB指令窗中運(yùn)行以下程序可產(chǎn)生帶分格的封閉坐標(biāo)軸(見(jiàn)圖11.3.3.1-1) grid on,set(gca,'box','on') 圖11.3.3.1-1 帶分格的封閉坐標(biāo)軸 (2)在MATLAB指令窗中用以下eval指令
17、可產(chǎn)生與圖11.3.3.1-1相同的界面 eval('grid on,set(gca,''box'',''on'')') (3)產(chǎn)生圖11.3.3.1-2界面的uimenu的書寫格式一:直接連續(xù)表示法 uimenu('Label','Test','Callback','grid on,set(gca,''box'',''on''),') 圖11.3.3.1-2 通過(guò)頂層菜單Test形成的帶
18、分格的封閉坐標(biāo)軸 (4)產(chǎn)生圖11.3.3.1-2界面的uimenu的書寫格式二:方括號(hào)續(xù)行號(hào)表示法 uimenu('Label','Test', . 'Callback','grid on,' , . 'set(gca,''box'',''on'');') (5)產(chǎn)生圖11.3.3.1-2界面的uimenu的書寫格式三:串變量法 Lpv='Test' Cpv='grid on,','set(gca,'&
19、#39;box'',''on''),' uimenu('Label', Lpv, 'Callback' , Cpv) (6)產(chǎn)生圖11.3.3.1-2界面的uimenu的書寫格式四:構(gòu)架表示法 PS.Label='Test' PS.Callback='grid on;','set(gca,''box'',''on'');' uimenu(PS) 11.3.3.2 設(shè)置簡(jiǎn)捷鍵或快捷鍵 【*例11.3
20、.3.2-1】本例目標(biāo):使圖11.3.2-1所示菜單成為圖11.3.3.2-1那樣,Color菜單項(xiàng)及其下拉的Blue菜單各帶一個(gè)簡(jiǎn)捷鍵,而另一項(xiàng)下拉菜單Red帶一個(gè)快捷鍵。 exm11332_1.m figure h_menu=uimenu(gcf,'Label','&Color'); %帶簡(jiǎn)捷鍵C的用戶菜單Color <2> h_submenu1=uimenu(h_menu,'Label','&Blue',. %帶簡(jiǎn)捷鍵B的的下拉菜單Blue <3> 'Callback'
21、,'set(gcf,''color'',''blue'')'); h_submenu2=uimenu(h_menu,'label','Red',. %制作另一個(gè)下拉菜單Red 'Callback','set(gcf,''color'',''red'')',. 'Accelerator','r'); %為Red菜單設(shè)置快捷鍵R <7> 圖 11.3
22、.3.2-1 為用戶菜單設(shè)置快捷鍵 11.3.3.3 用戶菜單的外觀設(shè)計(jì) 【*例11.3.3.3-1】本例演示:()把用戶菜單 'Option' 設(shè)置為頂層的第菜單項(xiàng);()下拉菜單被兩條分隔線分為三個(gè)菜單區(qū);()最下菜單項(xiàng)又有兩個(gè)子菜單組成。 ()編寫程序,生成如圖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') %查詢r(jià)ed子菜單的位置值 Pos_O = 3 Pos_BoxOn = 3 Pos_Red = 1 【*例11.3.3.3-2】本例演示:當(dāng)某菜單項(xiàng)選中后,如何使該菜單項(xiàng)貼上檢錄符“”。 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)與可見(jiàn)性(Visible)屬性 【*例11.3.3.4-1】 本例目標(biāo):制作一個(gè)帶四個(gè)子菜單項(xiàng)的頂層菜單項(xiàng);該下拉菜單分為兩個(gè)功能區(qū);
29、每個(gè)功能區(qū)的兩個(gè)菜單項(xiàng)是相互對(duì)立的,因此采用使能屬性處理;當(dāng)圖形窗坐標(biāo)軸消隱時(shí),整個(gè)坐標(biāo)分隔控制功能區(qū)不可見(jiàn)。 (1)編寫如下腳本M文件exm11334_1.m exm11334_1.m clf h_menu=uimenu('label','Option'); %產(chǎn)生頂層菜單項(xiàng)Option h_sub1=uimenu(h_menu,'label','Axis on'); %產(chǎn)生Axis on菜單項(xiàng),由缺省設(shè)置而使能 h_sub2=uimenu(h_menu,'label','Axis off',.
30、'enable','off'); %產(chǎn)生Axis off菜單項(xiàng),但失能 h_sub3=uimenu(h_menu,'label','Grid on',. 'separator','on','visible','off'); %產(chǎn)生與上分隔的Grid on菜單項(xiàng),但不可見(jiàn) h_sub4=uimenu(h_menu,'label','Grid off',. 'visible','off'); %產(chǎn)生Grid
31、off菜單項(xiàng),但不可見(jiàn) set(h_sub1,'callback',. %選中Axis on菜單項(xiàng)后,產(chǎn)生回調(diào)操作 'Axis on,',. %畫坐標(biāo) 'set(h_sub1,''enable'',''off''),',. %Axis on菜單項(xiàng)失能 'set(h_sub2,''enable'',''on''),',. %Axis off菜單項(xiàng)使能 'set(h_sub3,''vi
32、sible'',''on''),',. %Grid on菜單項(xiàng)可見(jiàn) 'set(h_sub4,''visible'',''on''),'); %Grid off菜單項(xiàng)可見(jiàn) set(h_sub2,'callback',. % %選中Axis off菜單項(xiàng)后,產(chǎn)生回調(diào)操作 'axis off,',. %使坐標(biāo)消失 'set(h_sub1,''enable'',''on'&
33、#39;),',. %Axis on菜單項(xiàng)使能 'set(h_sub2,''enable'',''off''),',. %Axis off菜單項(xiàng)失能 'set(h_sub3,''visible'',''off''),',. %Grid on菜單項(xiàng)不可見(jiàn) 'set(h_sub4,''visible'',''off''),'); %Grid off菜單項(xiàng)
34、不可見(jiàn) set(h_sub3,'callback',. %選中Grid on菜單項(xiàng)后,產(chǎn)生回調(diào) 'grid on,',. %畫坐標(biāo)分格線 'set(h_sub3,''enable'',''off''),',. %Grid on菜單項(xiàng)失能 'set(h_sub4,''enable'',''on''),'); %Grid off菜單項(xiàng)使能 set(h_sub4,'callback',. %選中
35、Grid off菜單項(xiàng),產(chǎn)生回調(diào) 'grid off,',. %消除坐標(biāo)分格線 'set(h_sub3,''enable'',''on''),',. %Grid on菜單項(xiàng)使能 'set(h_sub4,''enable'',''off''),'); %Grid off菜單項(xiàng)失能 (2)在MATLAB指令窗中運(yùn)行exm11334_1 ,得到圖11.3.3.4-1所示的界面 圖11.3.3.4-1 (3)選中【Option】
36、菜單項(xiàng),界面呈現(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)場(chǎng)菜單的制作 【*例11.3.4-1】目標(biāo):繪制一條Sa曲線,創(chuàng)建一個(gè)與之相聯(lián)系的現(xiàn)場(chǎng)菜單,用以控制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)場(chǎng)菜單 %制作具體菜單項(xiàng),定義相應(yīng)的回調(diào) 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)場(chǎng)菜單與Sa曲線相聯(lián)系 (2)在指令窗中運(yùn)行文件exm1134_1.m ,得到圖11.3.4-1所示的(但為藍(lán)色的)Sa曲線。 圖 11.3.4-1 Context菜單 (3)將鼠標(biāo)指針指向線條,點(diǎn)擊鼠標(biāo)右鍵的同時(shí)
39、彈出現(xiàn)場(chǎng)菜單,在選中某菜單項(xiàng)(如Red)后,Sa曲線就改變(為紅)顏色(如圖11.3.4-1所示)。11.4 用戶控件(uicontrol) 11.4.1 控件制作函數(shù) 11.4.2 用戶控件的種類 11.4.3 控件制作示例 11.4.3.1 雙位按鍵、無(wú)線電按鍵、控件區(qū)域框示例 【*例11.4.3.1-1】目標(biāo):創(chuàng)建一個(gè)界面包含4種控件:靜態(tài)文本、“無(wú)線電”選擇開(kāi)關(guān)、雙位按鍵、控件區(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') %設(shè)置用戶缺省控件單位屬性值 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); %設(shè)置用戶缺省控件字體屬性值 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)建“無(wú)線電”選擇按鍵 <17> 'string','正體',. %按鍵功能的文字標(biāo)識(shí)'正體' 'position',0.7,0.69,0.15,0.08); %按鍵位置 set(hr1,'value',get(hr1,'Max
43、39;);%因圖名缺省使用正體,所以小圓圈應(yīng)被點(diǎn)黑 <20> set(hr1,'callback',. % <21> 'set(hr1,''value'',get(hr1,''max''),',. %選中將小圓圈點(diǎn)黑 <22> 'set(hr2,''value'',get(hr2,''min''),',. %將“互斥”選項(xiàng)點(diǎn)白 <23> 'set(htitle,
44、39;'fontangle'',''normal''),',. %使圖名字體正體顯示 ); hr2=uicontrol(gcf,'style','radio',. %創(chuàng)建“無(wú)線電”選擇按鍵 <26> 'string','斜體',. %按鍵功能的文字標(biāo)識(shí)'斜體' '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)文本、選擇開(kāi)關(guān)、雙位按鍵及控件區(qū)域框 11.4.3.2 靜態(tài)文本框、滑動(dòng)鍵、檢錄框示例 【*例11.4.3.2-1】目標(biāo):制作演示“歸一化二階系統(tǒng)單位階躍響應(yīng)”的交互界面。在該界面中,阻尼比可在0.02,2.02中連續(xù)調(diào)節(jié),標(biāo)志當(dāng)前阻尼比值;可標(biāo)志峰值時(shí)間和大小;可
47、標(biāo)志(響應(yīng)從0到0.95所需的)上升時(shí)間。本例涉及以下主要內(nèi)容:(A)靜態(tài)文本的創(chuàng)建和實(shí)時(shí)改寫。(B)滑動(dòng)鍵的創(chuàng)建;'Max' 和 'Min' 的設(shè)置;'Value' 的設(shè)置和獲取。(C)檢錄框的創(chuàng)建;'Value' 的獲取。(D)受多個(gè)控件影響的回調(diào)操作。 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)階躍響應(yī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); %設(shè)置時(shí)間軸長(zhǎng)度 str1='當(dāng)前阻尼比=' 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)說(shuō)明文本框 <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)建滑動(dòng)鍵 <17> 'position',0.67,0.65,0.33,0.1,. 'max',2.02,'min',0.02,. %設(shè)最大阻尼比為2,最小阻尼比為0.02 <19> 'sliderstep',0.01,0.05,.%箭頭操縱滑動(dòng)步長(zhǎng)1%,游標(biāo)滑動(dòng)步長(zhǎng)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)建上升時(shí)間檢錄框 <26> 'string','上升時(shí)間(0->0.95)',. 'position',0.67,0.35,0.33,0.11); vchk2=get(hcheck2,'value'); %獲得上升時(shí)間檢錄框的狀態(tài)值 <29> set(hslider,'callback',. %操作滑動(dòng)鍵,引起回調(diào) <30> 'z=get(gcbo,''value'');',. %獲得滑動(dòng)鍵狀態(tài)值
53、 <31> 'callcheck(htext,str1,z,vchk1,vchk2)'); %被回調(diào)的函數(shù)文件 <32> set(hcheck1,'callback',. %操作峰值檢錄框,引起回調(diào) <33> 'vchk1=get(gcbo,''value'');',. %獲得峰值檢錄框狀態(tài)值 <34> 'callcheck(htext,str1,z,vchk1,vchk2)'); %被回調(diào)的函數(shù)文件 <35> set(hcheck2,
54、39;callback',. %操作峰值檢錄框,引起回調(diào) <36> 'vchk2=get(gcbo,''value'');',. %獲得峰值檢錄框狀態(tài)值 <37> 'callcheck(htext,str1,z,vchk1,vchk2)'); %被回調(diào)的函數(shù)文件 <38> callcheck.m function callcheck(htext,str1,z,vchk1,vchk2) cla,set(htext,'string',str1,sprintf('%1.
55、4g',z); %更新靜態(tài)文本框內(nè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) %假如在設(shè)定時(shí)間范圍內(nèi)能插值 <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','.',. %畫峰值點(diǎn) <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 %假如在設(shè)定時(shí)間范圍內(nèi)不能插值 <15> text(10,0
57、.4*y(end),'ymax -> 1''tmax -> inf') end end if vchk2 %假如上升時(shí)間框被選中 <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】目標(biāo):制作一個(gè)能繪制任意圖形的交互界面。它包括:可編輯文本框、彈出框、列表框。本例的關(guān)鍵內(nèi)容是:如何使編輯框允許輸入多行指令。 exm11433_1.m clf reset % <1> set(gcf,'unit','normalized','position',0.1,0.4
59、,0.85,0.35);%設(shè)置圖形窗大小 set(gcf,'defaultuicontrolunits','normalized'); set(gcf,'defaultuicontrolfontsize',11); set(gcf,'defaultuicontrolfontname','隸書'); set(gcf,'defaultuicontrolhorizontal','left'); set(gcf,'menubar','none'); %刪除圖形
60、窗工具條 str='通過(guò)多行指令繪圖的交互界面' 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');%設(shè)置彈出框中選項(xiàng)名 <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',.%設(shè)置列表框中選項(xiàng)名 <22> 'Max'
63、,2); %取2,使Max-Min>1,而允許多項(xiàng)選擇 <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)'); %編輯框輸入引起回調(diào) <26> set(hpop,'call
64、back','calledit(hedit,hpop,hlist)'); %彈出框選擇引起回調(diào) <27> set(hpush,'callback','calledit(hedit,hpop,hlist)'); %按鍵引起的回調(diào) <28> calledit.m function calledit(hedit,hpop,hlist) ct=get(hedit,'string'); %獲得輸入的字符串函數(shù) <2> vpop=get(hpop,'value'); %獲得選項(xiàng)的位置
65、標(biāo)識(shí) <3> vlist=get(hlist,'value'); %獲得選項(xiàng)位置向量 <4> if isempty(ct) %可編輯框輸入非空時(shí) <5> eval(ct') %運(yùn)行從編輯文本框送入的指令 <6> popstr='spring','summer','autumn','winter' %彈出框色圖矩陣 <7> liststr='grid on','box on','hidden off',
66、'axis off'%列表框選項(xiàng)內(nèi)容 <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 %按列表選項(xiàng)影響圖形 end end 圖 11.4.3.3-1
67、 11.5 由M函數(shù)文件產(chǎn)生用戶菜單和控件 11.5.1 利用全局變量編寫用戶界面函數(shù)文件 【*例11.5.1-1】目標(biāo):利用M函數(shù)文件創(chuàng)建與例11.4.3.3-1相同的用戶界面。本例演示:如何依靠全局變量傳遞控件的圖柄,從而保證回調(diào)動(dòng)作正確執(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、; %編輯框輸入引起回調(diào) <26> set(hpop,'callback','calledit1'); %彈出框選擇引起回調(diào) <27> set(hpush,'callback','calledit1'); %按鍵引起的回調(diào) <28> calledit1.m function calledit1( ) global hedit hpop hlist (下面續(xù)接內(nèi)容是:原calledit.m第2行以下的全部指令) (2)在MATLAB指令窗中運(yùn)行exm1151_1就可獲得題目所要求的圖形用戶界面。
69、11.5.2 利用 'UserData' 屬性編寫用戶界面函數(shù)文件 【*例11.5.2-1】目標(biāo):利用M函數(shù)文件創(chuàng)建與例11.4.3.3-1相同的用戶界面。本例演示:如何依靠圖形窗的'UserData' 屬性傳送用戶控件的圖柄,從而保證回調(diào)動(dòng)作正確執(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、框輸入引起回調(diào) <26> set(hpop,'callback','calledit2'); %彈出框選擇引起回調(diào) <27> set(hpush,'callback','calledit2'); %按鍵引起的回調(diào) <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'); %獲得選項(xiàng)的位置標(biāo)識(shí) <3> vlist=get(H(3),'value'); %獲得選項(xiàng)位置向量 <4> (下面續(xù)接內(nèi)容是:原calledit.m第5行以下的全部指令) (2)在MATLAB指令窗中運(yùn)行exm1152_1就可獲得題目所要求的圖形用戶界面。 11.5.3 利用遞歸法編寫用戶界面函數(shù)文件 【*例11.5.3-1】目標(biāo):利用M函數(shù)文件創(chuàng)建與例11.4.3.3-1相同的用戶界面。本例演示:如何依靠圖形窗'UserData
72、39; 屬性在遞歸調(diào)用中傳送用戶控件的圖柄,保證回調(diào)動(dòng)作正確執(zhí)行。 (1)編寫M函數(shù)文件exm1153_1.m exm1153_1.m function exm1153_1(flag) if nargin<1;flag='startup'end %允許在無(wú)輸入宗量形式下調(diào)用該函數(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='通過(guò)多行指令繪圖的交互界面' 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. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 西安建筑科技大學(xué)華清學(xué)院《安裝工程計(jì)量與計(jì)價(jià)實(shí)訓(xùn)》2023-2024學(xué)年第二學(xué)期期末試卷
- 鄭州輕工業(yè)大學(xué)《數(shù)據(jù)分析與大數(shù)據(jù)技術(shù)的數(shù)學(xué)基礎(chǔ)》2023-2024學(xué)年第二學(xué)期期末試卷
- 做賬實(shí)操-快遞公司加盟商保證金的賬務(wù)處理分錄
- 2025年江西省建筑安全員考試題庫(kù)附答案
- 四川建筑職業(yè)技術(shù)學(xué)院《建筑材料(B)》2023-2024學(xué)年第二學(xué)期期末試卷
- 中國(guó)地質(zhì)大學(xué)(北京)《熱力系統(tǒng)工程與仿真》2023-2024學(xué)年第二學(xué)期期末試卷
- 濟(jì)寧職業(yè)技術(shù)學(xué)院《植物營(yíng)養(yǎng)與肥料學(xué)》2023-2024學(xué)年第二學(xué)期期末試卷
- 河南水利與環(huán)境職業(yè)學(xué)院《栽培與耕作學(xué)》2023-2024學(xué)年第二學(xué)期期末試卷
- 楊凌職業(yè)技術(shù)學(xué)院《飛行控制系統(tǒng)》2023-2024學(xué)年第二學(xué)期期末試卷
- 廣東文理職業(yè)學(xué)院《輻射防護(hù)課程設(shè)計(jì)》2023-2024學(xué)年第二學(xué)期期末試卷
- HRBP工作總結(jié)與計(jì)劃
- 八大危險(xiǎn)作業(yè)安全培訓(xùn)考試試題及答案
- 2025年湖南高速鐵路職業(yè)技術(shù)學(xué)院高職單招語(yǔ)文2018-2024歷年參考題庫(kù)頻考點(diǎn)含答案解析
- 2025年上半年中電科太力通信科技限公司招聘易考易錯(cuò)模擬試題(共500題)試卷后附參考答案
- 2025年沙洲職業(yè)工學(xué)院高職單招語(yǔ)文2018-2024歷年參考題庫(kù)頻考點(diǎn)含答案解析
- DB3502T052-2019 家政服務(wù)規(guī)范 家庭搬家
- 會(huì)計(jì)學(xué)專業(yè)數(shù)智化轉(zhuǎn)型升級(jí)實(shí)踐
- JJG 1204-2025電子計(jì)價(jià)秤檢定規(guī)程(試行)
- 中國(guó)糖尿病防治指南(2024版)解讀-1
- 2024年計(jì)算機(jī)二級(jí)WPS考試題庫(kù)(共380題含答案)
- 2024年德州職業(yè)技術(shù)學(xué)院?jiǎn)握新殬I(yè)適應(yīng)性測(cè)試題庫(kù)
評(píng)論
0/150
提交評(píng)論