編程中文參考手冊_第1頁
編程中文參考手冊_第2頁
編程中文參考手冊_第3頁
編程中文參考手冊_第4頁
編程中文參考手冊_第5頁
已閱讀5頁,還剩15頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、Matlab GUI編程中文參考手冊用戶界面(或接口)是指:人與機器(或程序)之間交互作用的工具和方法。如鍵盤、鼠標、跟蹤球、話筒都可成為與計算機交換信息的接口。 圖形用戶界面(Graphical User Interfaces  ,GUI)則是由窗口、光標、按鍵、菜單、文字說明等對象(Objects)構(gòu)成的一個用戶界面。用戶通過一定的方法(如鼠標或鍵盤)選擇、激活這些圖形對象,使計算機產(chǎn)生某種動作或變化,比如實現(xiàn)計算、繪圖等。 假如讀者所從事的數(shù)據(jù)分析、解方程、計算結(jié)果可視工作比較單一,那么一般不會考慮GUI的制作。但是如果讀者想向

2、別人提供應(yīng)用程序,想進行某種技術(shù)、方法的演示,想制作一個供反復(fù)使用且操作簡單的專用工具,那么圖形用戶界面也許是最好的選擇之一。 MATLAB為表現(xiàn)其基本功能而設(shè)計的演示程序demo 是使用圖形界面的最好范例。MATLAB的用戶,在指令窗中運行demo 打開那圖形界面后,只要用鼠標進行選擇和點擊,就可瀏覽那豐富多彩的內(nèi)容。 即便比較熟悉MATLAB的讀者,在他初次編寫GUI程序時,也會感到棘手。為使讀者獲得制作自己GUI的體驗,本章“入門”節(jié)提供了一個簡單的示例。讀者只要輸入所提供的程序,就可引出相應(yīng)的界面。 本章第2節(jié)敘述圖形用戶界面的設(shè)計原則

3、和一般制作步驟。第3、4節(jié)分別介紹用戶菜單、用戶控件的制作。出于“由淺入深”的考慮,前4節(jié)制作GUI是通過M腳本文件實現(xiàn)的。利用M函數(shù)文件制作GUI ,需要解決數(shù)據(jù)傳遞問題,為此專設(shè)第5節(jié)給予闡述和示例。MATLAB 5.x版為方便用戶制作圖形界面,提供了一個交互式的設(shè)計工具guide 。關(guān)于該工具的使用方法,被放在第6節(jié)中,以一個綜合例題為設(shè)計目標逐步展開。 在此提醒讀者,假如要比較準確的理解本章程序和掌握本章內(nèi)容,請先閱讀第10章關(guān)于圖柄的內(nèi)容。11.1 入門【*例11.1-1】對于傳遞函數(shù)為 的歸一化二階系統(tǒng),制作一個能繪制該系

4、統(tǒng)單位階躍響應(yīng)的圖形用戶界面。本例演示:(A)圖形界面的大致生成過程;(B)靜態(tài)文本和編輯框的生成;(C)坐標方格控制鍵的形成;(D)如何使用該界面。(1)產(chǎn)生圖形窗和軸位框:clf resetH=axes('unit','normalized','position',0,0,1,1,'visible','off');set(gcf,'currentaxes',H);str='fontname隸書歸一化二階系統(tǒng)的階躍響應(yīng)曲線'text(0.12,0.93,str,'

5、fontsize',13);h_fig=get(H,'parent');set(h_fig,'unit','normalized','position',0.1,0.2,0.7,0.4);h_axes=axes('parent',h_fig,.   'unit','normalized','position',0.1,0.15,0.55,0.7,.   'xlim',0 15

6、,'ylim',0 1.8,'fontsize',8); 圖 11.1-1 產(chǎn)生坐標軸(2)在坐標框右側(cè)生成作解釋用的“靜態(tài)文本”和可接受輸入的“編輯框”:h_text=uicontrol(h_fig,'style','text',.   'unit','normalized','position',0.67,0.73,0.25,0.14,.   'horizontal'

7、;,'left','string','輸入阻尼比系數(shù)','zeta =');h_edit=uicontrol(h_fig,'style','edit',.   'unit','normalized','position',0.67,0.59,0.25,0.14,.   'horizontal','left',.   

8、9;callback',.      'z=str2num(get(gcbo,''string'');',.      't=0:0.1:15;',.      'for k=1:length(z);',.      's2=tf(1,1 2*

9、z(k) 1); ',.      'y(:,k)=step(s2,t);',.      'plot(t,y(:,k);',.      'if (length(z)>1) ,hold on,end,',.      'end;'

10、,.     'hold off,'); 圖 11.1-2  在圖形界面中添加編輯框和文本框(3)形成坐標方格控制按鍵:h_push1=uicontrol(h_fig,'style','push',.   'unit','normalized','position',0.67,0.37,0.12,0.15,.   'string

11、9;,'grid on','callback','grid on');h_push2=uicontrol(h_fig,'style','push',.   'unit','normalized','position',0.67,0.15,0.12,0.15,.   'string','grid off','callback',

12、9;grid off'); 圖 11.1-3  添加了兩個按鍵的圖形界面(4)輸入阻尼比系數(shù) ,可得單位階躍響應(yīng)曲線: 圖 11.1-4  輸入標量阻尼比所得到的響應(yīng)曲線 圖 11.1-5  輸入阻尼比數(shù)組所得到的一組響應(yīng)曲線11.2 圖形用戶界面的設(shè)計原則和一般步驟 設(shè)計原則11.2.2  一般制作步驟11.3 界面菜單(uimenu)11.3.1 圖形窗的標準菜單【例11.3.1-1】

13、本例說明:如何隱藏和恢復(fù)標準菜單的顯示。(1)獲得缺省設(shè)置的標準菜單 figure(2)隱去標準菜單的兩種方法set(H_fig , 'MenuBar','none');set(gcf,'menubar',menubar);(3)恢復(fù)圖形窗上標準菜單set(gcf,'menubar','figure'); 圖 -1  含有菜單條的圖形窗  圖 11.3.1-2  移去菜單條的圖形窗 自制

14、的用戶菜單【*例11.3.2-1】本例演示:如何自制一個帶下拉菜單表的用戶菜單(如圖11.3.2-1所示)。該菜單能使圖形窗背景顏色設(shè)置為蘭色或紅色。figure            %創(chuàng)建一個圖形窗h_menu=uimenu(gcf,'label','Color');   %制作用戶頂層菜單項Color  <2>h_submenu1=uimenu(h_menu,'labe

15、l','Blue',. %制作下拉菜單項Blue    <3> 'callback','set(gcf,''Color'',''blue'')');        %<4>h_submenu2=uimenu(h_menu,'label','Red',. %制作下拉菜單Red

16、     <5> 'callback','set(gcf,''Color'',''red'')');        %<6> 圖 11.3.2-1  創(chuàng)建用戶菜單示例   用戶菜單的屬性11.3.3.1 回調(diào)屬性和菜單名【*例11.3.3.1-1】本例的目標是

17、:在圖形窗上自制一個名為【Test】的“頂層菜單項”;當用鼠標點動該菜單項時,將產(chǎn)生一個帶分格的封閉坐標軸。通過本例說明:(A)回調(diào)屬性的運作機理;(B)用戶頂層菜單項的制作(C)uimenu屬性的設(shè)置方法;(D)復(fù)雜字符串的構(gòu)成方法和注意事項。(1)在MATLAB指令窗中運行以下程序可產(chǎn)生帶分格的封閉坐標軸(見圖11.3.3.1-1)grid on,set(gca,'box','on')  圖.1-1  帶分格的封閉坐標軸(2)在MATLAB指令窗中用以下eval指令可產(chǎn)生與圖.1-1相同的界面eval(

18、9;grid on,set(gca,''box'',''on'')')  (3)產(chǎn)生圖.1-2界面的uimenu的書寫格式一:直接連續(xù)表示法uimenu('Label','Test','Callback','grid on,set(gca,''box'',''on''),')   圖11.3.3.1-2  通

19、過頂層菜單Test形成的帶分格的封閉坐標軸(4)產(chǎn)生圖.1-2界面的uimenu的書寫格式二:方括號續(xù)行號表示法uimenu('Label','Test', .  'Callback','grid on,' , .       'set(gca,''box'',''on'');')  (5)產(chǎn)生圖.1-2

20、界面的uimenu的書寫格式三:串變量法Lpv='Test'Cpv='grid on,','set(gca,''box'',''on''),'uimenu('Label', Lpv, 'Callback' , Cpv)  (6)產(chǎn)生圖.1-2界面的uimenu的書寫格式四:構(gòu)架表示法PS.Label='Test'PS.Callback='grid o

21、n;','set(gca,''box'',''on'');'uimenu(PS)  .2 設(shè)置簡捷鍵或快捷鍵【*例11.3.3.2-1】本例目標:使圖11.3.2-1所示菜單成為圖11.3.3.2-1那樣,Color菜單項及其下拉的Blue菜單各帶一個簡捷鍵,而另一項下拉菜單Red帶一個快捷鍵。exm11332_1.mfigureh_menu=uimenu(gcf,'Label','&Color');   %

22、帶簡捷鍵C的用戶菜單Color <2>h_submenu1=uimenu(h_menu,'Label','&Blue',. %帶簡捷鍵B的的下拉菜單Blue <3> 'Callback','set(gcf,''color'',''blue'')');h_submenu2=uimenu(h_menu,'label','Red',. %制作另一個下拉菜單Red

23、 'Callback','set(gcf,''color'',''red'')',. 'Accelerator','r');       %為Red菜單設(shè)置快捷鍵R  <7> 圖 11.3.3.2-1  為用戶菜單設(shè)置快捷鍵()位置屬性的獲取Pos_O=get(h_menu,'position'

24、;),     %查詢Option菜單位置值Pos_BoxOn=get(h_sub3,'position')    %查詢box ob子菜單位置值Pos_Red=get(h_subsub1,'position')   %查詢red子菜單的位置值  Pos_O =     3Pos_BoxOn =    &#

25、160;3Pos_Red =     1  【*例.3-2】本例演示:當某菜單項選中后,如何使該菜單項貼上檢錄符“”。exm11333_2.mfigureh_menu=uimenu('label','Option');h_sub1=uimenu(h_menu,'label','Grid on',.        %<3> 'callb

26、ack',.  'grid on,',.  'set(h_sub1,''checked'',''on''),',.  'set(h_sub2,''checked'',''off''),',. );h_sub2=uimenu(h_menu,'label','Grid off',. &#

27、160;      %<4> 'callback',.  'grid off,',.  'set(h_sub2,''checked'',''on''),',.  'set(h_sub1,''checked'',''off''),',.  

28、;);  圖 11.3.3.3-2   Grid on菜單選中后出現(xiàn)檢錄符(3)選中【Option】菜單項,界面呈現(xiàn)如圖(4)選中【Option:Axis on】后,界面呈現(xiàn)如圖(5)選中【Option:Grid on】后,界面呈現(xiàn)如圖  現(xiàn)場菜單的制作【*例11.3.4-1】目標:繪制一條Sa曲線,創(chuàng)建一個與之相聯(lián)系的現(xiàn)場菜單,用以控制Sa曲線的顏色。(1)編寫腳本M文件exm1134_1.mexm1134_1.mt=(-3*pi:pi/50:3*pi)+eps;y=sin(t)./

29、t;hline=plot(t,y);         %繪制Sa曲線cm=uicontextmenu;         %創(chuàng)建現(xiàn)場菜單%制作具體菜單項,定義相應(yīng)的回調(diào)uimenu(cm,'label','Red','callback','set(hline,''color'',''r''),'

30、;)uimenu(cm,'label','Blue','callback','set(hline,''color'',''b''),')uimenu(cm,'label','Green','callback','set(hline,''color'',''g''),')set(hline,'uicontextmenu',cm)

31、      %使cm現(xiàn)場菜單與Sa曲線相聯(lián)系(2)在指令窗中運行文件exm1134_1.m ,得到圖-1所示的(但為藍色的)Sa曲線。 圖 11.3.4-1  Context菜單(3)將鼠標指針指向線條,點擊鼠標右鍵的同時彈出現(xiàn)場菜單,在選中某菜單項(如Red)后,Sa曲線就改變(為紅)顏色(如圖11.3.4-1所示)。11.4 用戶控件(uicontrol)  控件制作函數(shù)11.4.2  用戶控件的種類11.4.3 

32、0;控件制作示例11.4.3.1 雙位按鍵、無線電按鍵、控件區(qū)域框示例【*例11.4.3.1-1】目標:創(chuàng)建一個界面包含4種控件:靜態(tài)文本、“無線電”選擇開關(guān)、雙位按鍵、控件區(qū)域框。exm11431_1.mclf resetset(gcf,'menubar','none')set(gcf,'unit','normalized','position',0.2,0.2,0.64,0.32); set(gcf,'defaultuicontrolunits','norm

33、alized') %設(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');htitle=title('正弦曲線');set(gcf,'defaultuicontrolfontsize',12);&#

34、160;  %設(shè)置用戶缺省控件字體屬性值uicontrol('style','frame',.      %創(chuàng)建用戶控件區(qū)   <11>   'position',0.67,0.55,0.25,0.25);    uicontrol('style','text',.     &

35、#160;%創(chuàng)建靜態(tài)文本框   <13>   'string','正斜體圖名:',.   'position',0.68,0.77,0.18,0.1,.   'horizontal','left');       hr1=uicontrol(gcf,'style','radio',.&

36、#160;   %創(chuàng)建“無線電”選擇按鍵 <17>   'string','正體',.        %按鍵功能的文字標識'正體'   'position',0.7,0.69,0.15,0.08);        %按鍵位置set(hr1,'value&#

37、39;,get(hr1,'Max');%因圖名缺省使用正體,所以小圓圈應(yīng)被點黑 <20>set(hr1,'callback',.          %     <21>   'set(hr1,''value'',get(hr1,''max''),',. %選中將小

38、圓圈點黑  <22>   'set(hr2,''value'',get(hr2,''min''),',. %將“互斥”選項點白 <23>   'set(htitle,''fontangle'',''normal''),',. %使圖名字體正體顯示  );  

39、0;      hr2=uicontrol(gcf,'style','radio',.    %創(chuàng)建“無線電”選擇按鍵 <26>  'string','斜體',.        %按鍵功能的文字標識'斜體'  'position',0.7,0.58,0.15,0

40、.08,.   %按鍵位置  'callback',.   'set(hr1,''value'',get(hr1,''min''),',. %      <30>   'set(hr2,''value'',get(hr2,''max''),

41、',. %      <31>   'set(htitle,''fontangle'',''italic'')',. %使圖名字體斜體顯示  );               %   

42、60;  <33>   ht=uicontrol(gcf,'style','toggle',.   %制作雙位按鍵    <34>      'string','Grid',.      'position',0.67,0.40,0.15,0.12,.&#

43、160;     'callback','grid'); 圖 11.4.3.1-1  靜態(tài)文本、選擇開關(guān)、雙位按鍵及控件區(qū)域框.2 靜態(tài)文本框、滑動鍵、檢錄框示例【*例11.4.3.2-1】目標:制作演示“歸一化二階系統(tǒng)單位階躍響應(yīng)”的交互界面。在該界面中,阻尼比可在0.02,2.02中連續(xù)調(diào)節(jié),標志當前阻尼比值;可標志峰值時間和大小;可標志(響應(yīng)從0到0.95所需的)上升時間。本例涉及以下主要內(nèi)容:(A)靜態(tài)文本的創(chuàng)建和實時改寫。(B)滑動鍵的創(chuàng)建;'M

44、ax' 和 'Min' 的設(shè)置;'value' 的設(shè)置和獲取。(C)檢錄框的創(chuàng)建;'value' 的獲取。(D)受多個控件影響的回調(diào)操作。exm11432_1.mclf resetset(gcf,'unit','normalized','position',0.1,0.2,0.64,0.35);set(gcf,'defaultuicontrolunits','normalized');set(gcf,

45、'defaultuicontrolfontsize',12);set(gcf,'defaultuicontrolfontname','隸書');set(gcf,'defaultuicontrolhorizontal','left');str='歸一化二階系統(tǒng)階躍響應(yīng)曲線'set(gcf,'name',str,'numbertitle','off');  %書寫圖形窗名h_axes=axes('position',0.

46、05,0.2,0.6,0.7); %定義軸位框位置  set(h_axes,'xlim',0,15);      %設(shè)置時間軸長度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

47、>   'position',0.67,0.8,0.33,0.1,.   'string',str1,sprintf('%1.4g',z);hslider=uicontrol(gcf,'style','slider',. %創(chuàng)建滑動鍵     <17>   'position',0.67,0.65,0.33,0.1,. &#

48、160; 'max',2.02,'min',0.02,.  %設(shè)最大阻尼比為2,最小阻尼比為0.02  <19>   'sliderstep',0.01,0.05,.%箭頭操縱滑動步長1%,游標滑動步長5%  <20>   'value',0.5);     %缺省取阻尼比等于0.5    

49、     <21>hcheck1=uicontrol(gcf,'style','checkbox',. %創(chuàng)建峰值檢錄框    <22>   'string','最大峰值' ,.   'position',0.67,0.50,0.33,0.11);vchk1=get(hcheck1,'value');

50、0;     %獲得峰值檢錄框的狀態(tài)值  <25>hcheck2=uicontrol(gcf,'style','checkbox',. %創(chuàng)建上升時間檢錄框   <26>   'string','上升時間(0->0.95)',.   'position',0.67,0.35,0.33,0.11);vchk2=get(h

51、check2,'value');      %獲得上升時間檢錄框的狀態(tài)值 <29>set(hslider,'callback',.      %操作滑動鍵,引起回調(diào)   <30>   'z=get(gcbo,''value'');',.    %獲得滑動鍵狀態(tài)值&#

52、160;   <31>   'callcheck(htext,str1,z,vchk1,vchk2)'); %被回調(diào)的函數(shù)文件    <32>set(hcheck1,'callback',.      %操作峰值檢錄框,引起回調(diào) <33>   'vchk1=get(gcbo,''value'

53、;');',.   %獲得峰值檢錄框狀態(tài)值  <34>   'callcheck(htext,str1,z,vchk1,vchk2)'); %被回調(diào)的函數(shù)文件    <35>set(hcheck2,'callback',.      %操作峰值檢錄框,引起回調(diào) <36>   '

54、vchk2=get(gcbo,''value'');',.   %獲得峰值檢錄框狀態(tài)值  <37>   'callcheck(htext,str1,z,vchk1,vchk2)'); %被回調(diào)的函數(shù)文件    <38>callcheck.mfunction callcheck(htext,str1,z,vchk1,vchk2)cla,set(htext,'string&

55、#39;,str1,sprintf('%1.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); 

56、;  if km<(N-3)       %假如在設(shè)定時間范圍內(nèi)能插值   <6>      k1=km-3;k2=km+3;k12=k1:k2;tt=t(k12);      yy=spline(t(k12),y(k12),tt);      %局部樣條插值 

57、  <8>      yym,kkm=max(yy);        %求更精確的峰值位置      line(tt(kkm),yym,'marker','.',.    %畫峰值點    <10>    

58、;     'markeredgecolor','r','markersize',20);      ystr='ymax = ',sprintf('%1.4g',yym);      tstr='tmax = ',sprintf('%1.4g',tt(kkm); &

59、#160;    text(tt(kkm),1.05*yym,ystr;tstr)   else         %假如在設(shè)定時間范圍內(nèi)不能插值  <15>      text(10,0.4*y(end),'ymax -> 1''tmax -> inf')

60、0;  endendif vchk2         %假如上升時間框被選中    <19>   k95=min(find(y>0.95);k952=(k95-1),k95;   t95=interp1(y(k952),t(k952),0.95);     %線性插值   

61、0;<21>   line(t95,0.95,'marker','o','markeredgecolor','k','markersize',6);   tstr95='t95 = ',sprintf('%1.4g',t95);   text(t95,0.65,tstr95)end   圖.2-1.3 可編輯框、彈出框、列表

62、框、按鍵示例【*例11.4.3.3-1】目標:制作一個能繪制任意圖形的交互界面。它包括:可編輯文本框、彈出框、列表框。本例的關(guān)鍵內(nèi)容是:如何使編輯框允許輸入多行指令。exm11433_1.mclf reset             %      <1>set(gcf,'unit','normalized','position',0.1,

63、0.4,0.85,0.35);%設(shè)置圖形窗大小set(gcf,'defaultuicontrolunits','normalized');set(gcf,'defaultuicontrolfontsize',11);set(gcf,'defaultuicontrolfontname','隸書');set(gcf,'defaultuicontrolhorizontal','left');set(gcf,'menubar','none'); &#

64、160;      %刪除圖形窗工具條str='通過多行指令繪圖的交互界面'set(gcf,'name',str,'numbertitle','off');    %書寫圖形窗名h_axes=axes('position',0.05,0.15,0.45,0.70,'visible','off');%定義軸位框位置  uicontrol(gcf,'Style&

65、#39;,'text',.      %制作靜態(tài)文本框   'position',0.52,0.87,0.26,0.1,.   'String','繪圖指令輸入框');hedit=uicontrol(gcf,'Style','edit',.    %制作可編輯文本框  <14>   

66、;'position',0.52,0.05,0.26,0.8,.   'Max',2);       %取2,使Max-Min>1,而允許多行輸入  <16>hpop=uicontrol(gcf,'style','popup',.    %制作彈出菜單   <17>   'po

67、sition',0.8,0.73,0.18,0.12,.   'string','spring|summer|autumn|winter');%設(shè)置彈出框中選項名   <19>hlist=uicontrol(gcf,'Style','list',.    %制作列表框   <20>   'position',0.8,0.23,

68、0.18,0.37,.   'string','Grid on|Box on|Hidden off|Axis off',.%設(shè)置列表框中選項名 <22>   'Max',2);       %取2,使Max-Min>1,而允許多項選擇  <23>hpush=uicontrol(gcf,'Style',&#

69、39;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,'callback','calledit(hedit,hpo

70、p,hlist)'); %彈出框選擇引起回調(diào) <27>set(hpush,'callback','calledit(hedit,hpop,hlist)'); %按鍵引起的回調(diào)  <28>calledit.mfunction calledit(hedit,hpop,hlist)ct=get(hedit,'string');    %獲得輸入的字符串函數(shù)     <

71、2>vpop=get(hpop,'value');    %獲得選項的位置標識      <3>vlist=get(hlist,'value');   %獲得選項位置向量       <4>if isempty(ct)      %可編輯框輸入非空時 

72、60;    <5>   eval(ct')       %運行從編輯文本框送入的指令    <6>    popstr='spring','summer','autumn','winter'  %彈出框色圖矩陣 <7>  

73、; liststr='grid on','box on','hidden off','axis off'%列表框選項內(nèi)容 <8>    invstr='grid off','box off','hidden on','axis on'%列表框的逆指令 <9>   co

74、lormap(eval(popstrvpop)  %采用彈出框所選色圖     <10>   vv=zeros(1,4);vv(vlist)=1;     for k=1:4      if vv(k);eval(liststrk);else eval(invstrk);end %按列表選項影響圖形   e

75、ndend    圖 .3-111.5 由M函數(shù)文件產(chǎn)生用戶菜單和控件 利用全局變量編寫用戶界面函數(shù)文件【*例11.5.1-1】目標:利用M函數(shù)文件創(chuàng)建與例11.4.3.3-1相同的用戶界面。本例演示:如何依靠全局變量傳遞控件的圖柄,從而保證回調(diào)動作正確執(zhí)行。(1)編寫M函數(shù)文件exm1151_1.m和calledit1.mexm1151_1.mfunction exm1151_1( )global hedit hpop hlist(這中間是:原exm11433_1.m第1行

76、到第25行的全部指令)set(hedit,'callback','calledit1');      %編輯框輸入引起回調(diào) <26>set(hpop,'callback','calledit1');      %彈出框選擇引起回調(diào) <27>set(hpush,'callback','calledit1');  

77、0;   %按鍵引起的回調(diào)  <28>calledit1.mfunction calledit1( )global hedit hpop hlist(下面續(xù)接內(nèi)容是:原calledit.m第2行以下的全部指令)(2)在MATLAB指令窗中運行exm1151_1就可獲得題目所要求的圖形用戶界面。 利用 'UserData' 屬性編寫用戶界面函數(shù)文件【*例11.5.2-1】目標:利用M函數(shù)文件創(chuàng)建與例11.4.3.3-1相同的用戶界面。本例演

78、示:如何依靠圖形窗的'UserData' 屬性傳送用戶控件的圖柄,從而保證回調(diào)動作正確執(zhí)行。(1)編寫M函數(shù)文件exm1152_1.m和calledit2.mexm1152_1.mfunction exm1152_1( )(這中間是:原exm11433_1.m第1行到第25行的全部指令)set(hedit,'callback','calledit2');      %編輯框輸入引起回調(diào) <26>set(hpop,'callbac

79、k','calledit2');      %彈出框選擇引起回調(diào) <27>set(hpush,'callback','calledit2');      %按鍵引起的回調(diào)  <28>set(gcf,'UserData',hedit,hpop,hlist)calledit2.mfunction calledit2( )H=get(gc

80、f,'UserData');ct=get(H(1),'string');    %獲得輸入的字符串函數(shù)     <2>vpop=get(H(2),'value');    %獲得選項的位置標識      <3>vlist=get(H(3),'value');   %獲得選項位置向量 

81、;      <4>(下面續(xù)接內(nèi)容是:原calledit.m第5行以下的全部指令)(2)在MATLAB指令窗中運行exm1152_1就可獲得題目所要求的圖形用戶界面。 利用遞歸法編寫用戶界面函數(shù)文件【*例11.5.3-1】目標:利用M函數(shù)文件創(chuàng)建與例11.4.3.3-1相同的用戶界面。本例演示:如何依靠圖形窗'UserData' 屬性在遞歸調(diào)用中傳送用戶控件的圖柄,保證回調(diào)動作正確執(zhí)行。(1)編寫M函數(shù)文件exm1153_1.mexm1153_1.mfunction exm11

82、53_1(flag)if nargin<1;flag='startup'end  %允許在無輸入宗量形式下調(diào)用該函數(shù)  <2>if ischar(flag);error('flag must be character ''startup''.');endswitch flag       %切換控制   &

83、#160;     <4>case 'startup'           %      <5>clf reset             %    

84、  <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,'defaultuicon

85、trolhorizontal','left');set(gcf,'menubar','none');        %刪除圖形窗工具條str='通過多行指令繪圖的交互界面'set(gcf,'name',str,'numbertitle','off');    %書寫圖形窗名h_axes=axes('position',0.05,0.15,0.

86、45,0.70,'visible','off');  uicontrol(gcf,'Style','text',.      %制作靜態(tài)文本框   'position',0.52,0.87,0.26,0.1,.   'String','繪圖指令輸入框');hedit=uicontrol(gcf,'Style','edit&

87、#39;,.    %制作可編輯文本框  <19>   'position',0.52,0.05,0.26,0.8,.        %  <20>   'Max',2);       %取2,使Max-Min>1,而允許多行輸入 

88、60;<21>hpop=uicontrol(gcf,'style','popup',.    %制作彈出菜單   <22>   'position',0.8,0.73,0.18,0.12,.        %  <23>   'string','spring|s

89、ummer|autumn|winter');%設(shè)置彈出框中選項名   <24>hlist=uicontrol(gcf,'Style','list',.    %制作列表框   <25>   'position',0.8,0.23,0.18,0.37,.        %  <26&g

90、t;   'string','Grid on|Box on|Hidden off|Axis off',.%設(shè)置列表框中選項名 <27>   'Max',2);       %取2,使Max-Min>1,而允許多項選擇  <28>hpush=uicontrol(gcf,'Style','push&#

91、39;,. %制作與列表框配用的按鍵   <29>   'position',0.8,0.05,0.18,0.15,'string','Apply');set(hedit,'callback','exm1153_1(''set'')');   %編輯框輸入引起回調(diào) <31>set(hpop,'callback','exm1153

92、_1(''set'')');   %彈出框選擇引起回調(diào) <32>set(hpush,'callback','exm1153_1(''set'')');   %按鍵引起的回調(diào)  <33>set(gcf,'UserData',hedit,hpop,hlist); %向'UserData'存放圖柄   <34

93、>case 'set'        %以下是回調(diào)函數(shù)       <35>H=get(gcf,'UserData');    %從'UserData'獲取圖柄     <36>ct=get(H(1),'string');   

94、; %獲得輸入的字符串函數(shù)     <37>vpop=get(H(2),'value');    %獲得選項的位置標識      <38>vlist=get(H(3),'value');   %獲得選項位置向量       <39>if isempty(ct)&

95、#160;        eval(ct')       %運行從編輯文本框送入的指令    popstr='spring','summer','autumn','winter'  %彈出框色圖矩陣   liststr='grid on','box

96、60;on','hidden off','axis off'%列表框選項內(nèi)容    invstr='grid off','box off','hidden on','axis on'%列表框的逆指令   colormap(eval(popstrvpop)  %采用彈出框所選色圖   vv=zeros(1,4);vv

97、(vlist)=1;     for k=1:4      if vv(k);eval(liststrk);else eval(invstrk);end %按列表選項影響圖形   endend                   

98、   % <50>end(2)在MATLAB指令窗中運行exm1153_1就可獲得題目所要求的圖形用戶界面(即圖11.4.3.3-1無圖形時的初始界面)。【*例-2】目標:利用M函數(shù)文件創(chuàng)建與例11.4.3.3-1相同的用戶界面。本例演示:如何依靠 'Tag'屬性 與findobj指令的配合使用獲取回調(diào)操作所必須的控件圖柄,保證回調(diào)動作正確執(zhí)行。 本例的程序可由exm1153_1.m做如下修改而得:(1)刪去exm1153_1.m的指令<34><36>。(2)在exm1153_1.m的<20>和<21>行之間增添一行   'Tag','H_edit',.(3)在exm1153_1.m的<23>和<24>行之間增添一行   'Tag','H_popup',.(4)在exm1153_1.m的<27>和<28>行之間增添一

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論