www.gusucode.com > 《MATLAB神经网络仿真与应用》[张德丰]的所有[程序源代码] > 第10章/li10_5.m
function guiplot(action) if nargin<1 action='initialize'; end; %当输入参数为'initialize'时,执行相应程序,代码如下: if strcmp(action,'initialize'), oldFigNumber=watchon; %设置图形窗口的属性,定义'Name'、'NumberTitle'和'Visible'等属性,代码如下: figNumber=figure(... 'Visible','off',... 'NumberTitle','off',... 'Name','图形与线条对象'); axes(... 'Units','normalized',... 'Position',[0.07 0.45 0.60 0.50]); %给位置变量赋值,确定各个控件的位置,代码如下: top=0.35; left=0.05; right=0.70; bottom=0.05; labelHt=0.05; spacing=0.005; %建立代码窗口的frame框架,设置frame的位置和背景颜色等属性,代码如下: frmBorder=0/02; frmPos=[left-frmBorder bottom-frmBorder... (right-left)+2*frmBorder (top-bottom)+2*frmBorder]; uicontrol(... 'Style','frame',... %frame框架 'Units','normalized',... 'Position',frmPos,... 'BackgroundColor',[0.50 0.50 0.50]); %建立文本标签,设置文本标签的位置、前后景颜色和显示字符等属性,代码如下: labelPos=[left top-labelHt (right-left) labelHt]; uicontrol(... 'Style','text',... %文本标签 'Units','normalized',... 'Position',labelPos,... 'BackgroundColor',[0.50 0.50 0.50],... 'ForegroundColor',[1 1 1],... 'String','代码窗口'); mcwPos=[left bottom (right-left) top-bottom-labelHt-spacing]; mcwHndl=uicontrol(... 'Style','edit',... %文本标签 'HorizontalAlignment','left',... 'Units','normalized',... 'Max',10,... 'BackgroundColor',[1 1 1],... 'Position',mcwPos,... 'Callback','hndlgraf("quickeval")',... 'String','%Press buttons at the right for example plots'); set(gcf,'UserData','mcwHndl'); labelColor=[0.8 0.8 0.8]; top=0.95; bottom=0.05; left=0.75; yInitLabelIPos=0.90; left=0.75; labelWid=0.20; labelHt=0.05; btnWid=0.20; btnHt=0.05; btnOffset=0.003; %静态标签与按钮之间的距离 spacing=0.05; %按钮与下一个静态标签之间的距离 frmBorder=0.02; yPos=0.05-frmBorder; frmPos=[left-frmBorder yPos btnWid+2*frmBorder 0.9+2*frmBorder]; h=uicontrol(... 'Style','frame',... %frame框架 'Units','normalized',... 'Position',frmPos,... 'BackgroundColor',[0.50 0.50 0.50]); btnNumber=1; yLabelPos=top-(btnNumber-1)*(btnHt+labelHt+spacing); labelStr='线型'; labelList='-|--|:|-.|o|x|+|*|.'; cmdList=strvcat(... '','set(hndl,"LineStyle","--")',... 'set(hndl,"LineStyle",":")',... 'set(hndl,"LineStyle","-.")',... 'set(hndl,"Marker","o")',... 'set(hndl,"Marker","x")',... 'set(hndl,"Marker","+")',... 'set(hndl,"Marker","*")',... 'set(hndl,"Marker",".")'); callbackStr='hndlgraf eval'; labelPos=[left yLabelPos-labelHt labelWid labelHt]; uicontrol(... 'Style','text',... %静态标签 'Units','normalized',... 'Position',labelPos,... 'BackgroundColor',labelColor,... 'HorizontalAlignment','left',... 'String',labelStr); btnPos=[left yLabelPos-labelHt-btnHt-btnOffset btnWid btnHt]; hndl1=uicontrol(... 'Style','popup',... %下拉菜单 'Units','normalized',... 'Position',btnPos,... 'String',labelList,... 'Callback',callbackStr,... 'UserData',cmdList); btnNumber=2; yLabelPos=top-(btnNumber-1)*(btnHt+labelHt+spacing); labelStr='线宽'; labelList='0.5|1|2|3|4'; cmdList=strvcat(... '','set(hndl,"LineWidth",1)',... 'set(hndl,"LineWidth",2)',... 'set(hndl,"LineWidth",3)',... 'set(hndl,"LineWidth",4)',); callbackStr='hndlgraf eval'; labelPos=[left yLabelPos-labelHt labelWid labelHt]; uicontrol(... 'Style','text',... %静态标签 'Units','normalized',... 'Position',labelPos,... 'BackgroundColor',labelColor,... 'HorizontalAlignment','left',... 'String',labelStr); btnPos=[left yLabelPos-labelHt-btnHt-btnOffset btnWid btnHt]; hndl2=uicontrol(... 'Style','popup',... %下拉菜单 'Units','normalized',... 'Position',btnPos,... 'String',labelList,... 'Callback',callbackStr,... 'UserData',cmdList); btnNumber=3; yLabelPos=top-(btnNumber-1)*(btnHt+labelHt+spacing); labelStr='标记大小'; labelList='6|9|12|15|18'; cmdList=strvcat(... '','set(hndl,"MarkerSize",9)',... 'set(hndl,"MarkerSize",12)',... 'set(hndl,"MarkerSize",15)',... 'set(hndl,"MarkerSize",18)') callbackStr='hndlgraf eval'; labelPos=[left yLabelPos-labelHt labelWid labelHt]; uicontrol(... 'Style','text',... %静态标签 'Units','normalized',... 'Position',labelPos,... 'BackgroundColor',labelColor,... 'HorizontalAlignment','left',... 'String',labelStr); btnPos=[left yLabelPos-labelHt-btnHt-btnOffset btnWid btnHt]; hndl3=uicontrol(... 'Style','popup',... %下拉菜单 'Units','normalized',... 'Position',btnPos,... 'String',labelList,... 'Callback',callbackStr,... 'UserData',cmdList); btnNumber=4; yLabelPos=top-(btnNumber-1)*(btnHt+labelHt+spacing); labelStr='颜色'; labelList='cyan|red|green|blue|magenta|yellow'; cmdList=strvcat(... 'set(hndl,"Color","cyan")',... 'set(hndl,"Color","red")',... 'set(hndl,"Color","blue")',... 'set(hndl,"Color","magenta")',... 'set(hndl,"Color","yellow")',... 'set(hndl,"Color","white")') callbackStr='hndlgraf eval'; labelPos=[left yLabelPos-labelHt labelWid labelHt]; uicontrol(... 'Style','text',... %静态标签 'Units','normalized',... 'Position',labelPos,... 'BackgroundColor',labelColor,... 'HorizontalAlignment','left',... 'String',labelStr); btnPos=[left yLabelPos-labelHt-btnHt-btnOffset btnWid btnHt]; hndl4=uicontrol(... 'Style','popup',... %下拉菜单 'Units','normalized',... 'Position',btnPos,... 'String',labelList,... 'Callback',callbackStr,... 'UserData',cmdList); uicontrol(... 'Style','pushbutton',... 'Units','normalized',... 'Position',[left bottom+2*btnHt+spacing btnWid 2*btnHt],... 'String','信息',... 'Callback','hndlgraf("info")'); uicontrol(... 'Style','pushbutton',... 'Units','normalized',... 'Position',[left bottom btnWid 2*btnHt],... 'String','关闭',... 'Callback','close(gcf)'); %不覆盖图形 hndlList=[mcwHndl hndl1 hndl2 hndl3 hndl4]; watchoff(oldFigNumber); set(figNumber,'Visible','on',... 'UserData',hndlList); hndlgraf('eval'); elseif strcmp(action,'info'), helpwin(mfilename) elseif strcmp(action,'quickeval'), %执行代码窗口的代码程序 hndlList=get(gcf,'UserData'); mcwHndl=hndlList(1); evalmcw(mcwHndl); elseif strcmp(action,'eval'), % 组装和执行完成的命令 hndlList=get(gcf,'UserData'); n=length(hndlList); mcwHndl=hndlList(1); evalStr=strvcat('x=0:0.02:1;','hndl=plot(x,humps(x));'); for count=2:n, newStrList=get(hndlList(count),'UserData'); newStrVal=get(hndlList(count),'Value'); newStr=deblank(newStrList(newStrVar,:)); if~isempty(newStr),evalStr=strvcat(evalStr,newStr); end; set(mcwHndl,'String',evalStr); evalmcw(mcwHndl); end;