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;