Documentation of sumboard


Global Index (short | long) | Local contents | Local Index (short | long)


Function Synopsis

sumboard

Help text

SUMBOARD Creates the ident figure.

Cross-Reference Information

This function calls This function is called by

Listing of function sumboard

function sumboard

%	L. Ljung 4-4-94
%	Copyright (c) 1986-98 by The MathWorks, Inc.
%	$Revision: 3.15 $  $Date: 1998/10/09 22:26:46 $

global XIDhw XIDposd XIDposm XIDsbmen XIDplotprefs
global XIDplotw XIDsumb  XIDlayout XIDstatus XIDcounters XIDsessions
XIDplotw=-ones(16,3);
XIDcounters=[8,16,0,0];
layout
s1='iduipoin(1);';s2='iduipoin(1);iduistat(''Compiling ...'');eval(''';
s3='iduipoin(2);';s4='''),iduipoin(2);';
mStdButtonWidth=0.8*mStdButtonWidth;
mStdButtonHeight=mStdButtonHeight/0.85;
H0 = mEdgeToFrame;                % Mimimum measurement
Voff = 5*mEdgeToFrame;            % Uicontrol vertical/horizontal offset
CBWH = [1.8*mStdButtonWidth mStdButtonHeight];
PUWH = [1.8*mStdButtonWidth CBWH(2)];

% Make axes have appealling "golden" ratio
AxisW = (CBWH(1)-Voff)/2;
AWH = AxisW*[1 2/(1+sqrt(5))];

% Define figure width and height
FigW = 3*CBWH(1) + PUWH(1) + Voff + 4*mFrameToText;
FigH = 4*AWH(2) + 8*CBWH(2) + mFrameToText + 13*H0 + 7*Voff;

DefUIBgC = get(0,'DefaultUIcontrolBackgroundColor');
comp = computer;
%if all(comp(1:2)=='PC'),
%   DefUIBgC = [.7 .7 .7];
%end
figname=idlaytab('figname',16);
scrsize=get(0,'screensize');

fprintf('.') 
Plotcolors=idlayout('plotcol');
axescolor=Plotcolors(4,:);
framecolor=Plotcolors(5,:);
textcolor=Plotcolors(6,:);
fz=idlayout('fonts',50);
fz2=idlayout('fonts',100); % Larger fonts for the arrows
fig = figure('Unit','pix','Position',[10 scrsize(4)-FigH-45 FigW FigH], ...
 'Color',DefUIBgC,'MenuBar','none','ColorMap',[], ...
 'NumberTitle','off','Name',figname,'backingstore','on',...
 'DefaultAxesBox','on','DefaultAxesColor',DefUIBgC, ...
 'DefaultAxesDrawMode','fast','DefaultAxesUnit','pixel', ...
 'DefaultAxesYTick',[],'DefaultAxesYTickLabel',[], ...
 'DefaultAxesXTick',[],'DefaultAxesXTickLabel',[], ...
 'DefaultTextFontSize',fz,'Integerhandle','off', ...
 'DefaultTextHorizontalAlignment','center',...
 'DefaultAxesXColor',framecolor, 'DefaultAxesYColor',framecolor, ...
 'DefaultAxesZColor',framecolor,...
 'Defaulttextcolor',textcolor,...
 'CloseRequestFcn',[s1,'iduiedit(''close_all'');',s3], ...
 'Visible','off','tag','sitb16');     
XIDsumb(1)=fig;
fprintf('.') 
    [label,acc]=menulabel('&File');
f = uimenu(fig,'Label',label);
    [label,acc]=menulabel('&Open session... ^o');
    XIDsbmen(1)=uimenu(f,'Label',label,'Accel',acc,'callback',...
      [s2,'iduisess(''''load'''');',s4],'tag','open');
    [label,acc]=menulabel('&Close session');
    XIDsbmen(3)=uimenu(f,'Label',label,'Accel',acc,'callback',...
       [s2,'iduiedit(''''new'''');',s4],'interruptible','On',...
       'enable','off'); 
    [label,acc]=menulabel('&Save session ^s');
    XIDsbmen(4)=uimenu(f,'Label',label,'Accel',acc,'tag','save',...
    'callback',[s2,'iduisess(''''save'''');',s4],'enable','off','separator','on');
    [label,acc]=menulabel('Save session &as...');
    XIDsbmen(5)=uimenu(f,'Label',label,'tag','saveas',... 
        'callback',[s2,'iduisess(''''save_as'''');',s4],'enable','off');
    [label,acc]=menulabel(['&1 ',deblank(XIDsessions(1,:))]);
    XIDsbmen(6)=uimenu(f,'Label',label,...
      'userdata',deblank(XIDsessions(1,:)),'tag',deblank(XIDsessions(2,:)),...
        'separator','on',... 
        'callback',[s2,'iduisess(''''direct'''',6);',s4],'enable','on' );
    [label,acc]=menulabel(['&2 ',deblank(XIDsessions(3,:))]);
    XIDsbmen(7)=uimenu(f,'Label',label,...
      'userdata',deblank(XIDsessions(3,:)),'tag',deblank(XIDsessions(4,:)),...
        'callback',[s2,'iduisess(''''direct'''',7);',s4],'enable','on' );
    [label,acc]=menulabel(['&3 ',deblank(XIDsessions(5,:))]);
    XIDsbmen(8)=uimenu(f,'Label',label,...
      'userdata',deblank(XIDsessions(5,:)),'tag',deblank(XIDsessions(6,:)),...
        'callback',[s2,'iduisess(''''direct'''',8);',s4],'enable','on' );
    [label,acc]=menulabel(['&4 ',deblank(XIDsessions(7,:))]);
    XIDsbmen(9)=uimenu(f,'Label',label,...
      'userdata',deblank(XIDsessions(7,:)),'tag',deblank(XIDsessions(8,:)),...
        'callback',[s2,'iduisess(''''direct'''',9);',s4],'enable','on' );
    
    [label,acc]=menulabel('&Exit ident^w');
    uimenu(f,'Label',label,'Accel',acc,'callback',...
  [s1,'iduiedit(''close_all'');',s3],'interruptible','On','separator','on'); 

    [label,acc]=menulabel('&Options');
o = uimenu(fig,'Label',label);
    [label,acc]=menulabel('E&xtra model/data board ^x');
    uimenu(o,'Label',label,'Accel',acc,'callback',...
     [s1,'iddmtab;',s3]);
    [label,acc]=menulabel('&Empty trash');
    XIDsbmen(10)=uimenu(o,'label',label,'enable','off',...
              'callback',[s1,'iduiwast(''kill'');',s3],'tag','trashmenu');
    [label,acc]=menulabel('&Save preferences');
    uimenu(o,'Label',label,'separator','on','interruptible','On',...
              'callback',[s1,'idlaytab(''save'');idlaytab(''savepf'');',s3]);
    [label,acc]=menulabel('&Default preferences');
    uimenu(o,'label',label,'callback',[s1,'idlaytab(''def'');',s3],...
          'interruptible','On');
    [label,acc]=menulabel('&Window');    
w = uimenu(fig,'Label',label,'callback','winmenu','Tag','winmenu');
    winmenu(fig);
    [label,acc]=menulabel('&Help');
h = uimenu(fig,'Label',label);
    [label,acc]=menulabel('&System Identification');
    uimenu(h,'Label',label,'callback',...
             'iduihelp(''sitbgui.hlp'',''Help: The Big Picture'');')
    [label,acc]=menulabel('&Interactive demo');
    uimenu(h,'Label',label,'callback','iduidemo(0);') 
    [label,acc]=menulabel('&Using ident');
    uimenu(h,'Label',label,'callback',...
             'iduihelp(''idmw.hlp'',''Help: ident'');')
    [label,acc]=menulabel('&Help topics');
    uimenu(h,'Label',label,'callback',...
             'iduihelp(''idhtop.hlp'',''Help: File menu'');')
    [label,acc]=menulabel('&Don''t miss this');
    uimenu(h,'Label',label,'callback',...
             'iduihelp(''iduidmt.hlp'',''Help: Do not miss this'');')
    [label,acc]=menulabel('&Toolbox M-files');
    uimenu(h,'Label',label,'callback',...
             'helpwin(''ident'');')
    [label,acc]=menulabel('Ide&nt''s Web-site');
    uimenu(h,'Label',label,'callback',...
             'web(''http://www.mathworks.com/support/updates/sysid/index.shtml'');')

% Define a bunch of constants for offsets
H1 = mFrameToText;                % Left corner of Data Views checkbox
H2 = H1 + AxisW + Voff;           % Left corner of right axis under Data
H3 = H2 + AxisW + mFrameToText;   % Left corner of center column popup
H4 = H3 + PUWH(1) + mFrameToText; % Left corner of Model Views checkbox
H5 = H4 + AxisW + Voff;           % Left corner of 2nd axis under Models
H6 = H5 + AxisW + Voff;           % Left corner of 3rd axis under Models
H7 = H6 + AxisW + Voff;           % Left corner of 4th axis under Models

% Preallocate some memory
Text     = zeros(6,1);
CheckBox = zeros(8,1);
Axis     = zeros(28,1);
Popup    = zeros(4,1);
V1 = H0;

% Create the status line
StatusW = FigW -2*H0;
Text(1) = uicontrol(fig,'Style','text','String','Status line is here.', ...
 'BackgroundColor',DefUIBgC, ...
 'Position',[H0 V1 StatusW CBWH(2)]);
XIDstatus(16)=Text(1);
% Make Checkboxes and Popups
V3 = V1 + CBWH(2) + 10*H0;;
V4 = V3 + CBWH(2) + Voff;
V5 = V4 + CBWH(2) + Voff;
V6 = V5 + CBWH(2) + Voff;
CheckBox(1) = uicontrol('Style','check','String','Time plot', ...
 'HorizontalAlignment','left','BackgroundColor',DefUIBgC, ...
 'Position',[H1 V6 CBWH]);
CheckBox(2) = uicontrol('Style','check','String','Data spectra', ...
 'HorizontalAlignment','left','BackgroundColor',DefUIBgC, ...
 'Position',[H1 V5 CBWH]);

CheckBox(3) = uicontrol('Style','check','String','Model output', ...
 'HorizontalAlignment','left','BackgroundColor',DefUIBgC, ...
 'Position',[H4 V6 CBWH]);
CheckBox(4) = uicontrol('Style','check','String','Model resids', ...
 'HorizontalAlignment','left','BackgroundColor',DefUIBgC, ...
 'Position',[H4 V5 CBWH]);

CheckBox(5) = uicontrol('Style','check','String','Transient resp', ...
 'HorizontalAlignment','left','BackgroundColor',DefUIBgC, ...
 'Position',[H6 V6 CBWH]);
CheckBox(6) = uicontrol('Style','check','String','Frequency resp', ...
 'HorizontalAlignment','left','BackgroundColor',DefUIBgC, ...
 'Position',[H6 V5 CBWH]);
CheckBox(7) = uicontrol('Style','check','String','Zeros and poles', ...
 'HorizontalAlignment','left','BackgroundColor',DefUIBgC, ...
 'Position',[H6 V4 CBWH]);
CheckBox(8) = uicontrol('Style','check','String','Noise spectrum', ...
 'HorizontalAlignment','left','BackgroundColor',DefUIBgC, ...
 'Position',[H6 V3 CBWH]);
XIDplotw([1 13 3 6 5 2 4 7],2)=CheckBox(1:8);
% Make a Close button.  Actually adds some symmetry
Push = uicontrol('Style','push','String','Exit','Position',[H1 V3 CBWH], ...
 'Callback',[s1,'iduiedit(''close_all'');',s3],'interruptible','On',...
  'backgroundcolor',DefUIBgC);

% Make Data Views and Model Views text
V7 = V6 + CBWH(2) + H0;
Text(2) = uicontrol(fig,'Style','text','String','Data Views', ...
 'BackgroundColor',DefUIBgC, ...
 'Position',[H1 V7 CBWH]);
Text(3) = uicontrol(fig,'Style','text','String','Model Views', ...
 'BackgroundColor',DefUIBgC, ...
 'Position',[H5 V7 CBWH]);
SpecialAWH = AWH;%[(1+sqrt(5))/2 1]*(2*CBWH(2)+Voff);

Axis(26) = axes('Position',...
     [H4 V5-SpecialAWH(2)-H0 SpecialAWH],'tag','selva','color',axescolor);
Text(4)=get(Axis(26),'xlabel');
set(Text(4),'string','Validation Data','color','k')

text('pos',[0.5 0],'units','norm','tag','name',...
                      'verticalalignment','bottom');
line('color',textcolor,'vis','off','erasemode','normal','tag',...
             'selline');
XIDhw(4,1)=Axis(26);

% Make To Workspace icon
ToWSBottom = V6;
ToWSLeft = H3+(CBWH(1)-AWH(1))/2;
if ~exist('ltiview')
  pos27=[ToWSLeft-0.15*AWH(1) ToWSBottom 1.3*AWH(1) AWH(2)];
  axlist = [];
else
  pos27=[H3 ToWSBottom AWH];
  pos32=[H3+AWH(1)+Voff ToWSBottom AWH];
  Axis(32) = axes('Position',pos32,'Color',DefUIBgC, ...
 'XColor','k','YColor','k','Zcolor','k', ...
 'DefaultTextColor','k','tag','ltivi');
  text(0.5,0.5,{'To','LTI Viewer'});
  axlist = Axis(32);
end
Axis(27) = axes('Position',pos27,'Color',DefUIBgC, ...
 'XColor','k','YColor','k','Zcolor','k', ...
 'DefaultTextColor','k','tag','expor');
text(0.5,0.5,{'To','Workspace'});
idresizefont([axlist Axis(27)]);

% Make empty trashcan icon

TrashWH = 1.5*[20 30];
TrashLeft = H3 + (CBWH(1)-TrashWH(1))/2;
TrashBottom = V3 + 3*Voff;
Axis(28) = axes('Position',[TrashLeft TrashBottom TrashWH], ...
 'Box','off','Color',DefUIBgC,'xcolor',DefUIBgC,'ycolor',DefUIBgC, ...
 'zcolor','k',...
 'Xlim',[0 50],'Ylim',[0 100],'tag','waste');
text(25,-25,'Trash','Color','k')
xd = [18  18  32 32  0  0 50 50 32 NaN  1 1 49 49 NaN 10 12 12 10 NaN ...
      20 22 22 20 NaN 30 32 32 30 NaN 40 42 42 40];
yd = [95 100 100 95 95 90 90 95 95 NaN 90 0  0 90 NaN 80 75 15 10 NaN ...
      80 75 15 10 NaN 80 75 15 10 NaN 80 75 15 10];
lem = line(xd,yd,'Color','k','tag','empty');
% Here's a non-empty trashcan
xd = [18  18  32 32  0  0 50 50 32 NaN 10  0  0 10 40 50 50 40 NaN ...
      12  7  7 12 NaN ...
      22 17 17 22 NaN 28 33 33 28 NaN 38 43 43 38];
yd = [95 100 100 95 95 90 90 95 95 NaN 90 70 20  0  0 20 70 90 NaN ...
      80 70 20 10 NaN ...
      80 70 20 10 NaN 80 70 20 10 NaN 80 70 20 10];
lf = line(xd,yd,'Color','k','vis','off','tag','full');
set(Axis(28),'HandleVisibility','Callback');
fprintf('.') 

% Create the data and model axes
V2 = V7 + CBWH(2) + Voff + mFrameToText/2;
VVL = V2; % Level of lowermost axes
kd=8;km=16;map=idlayout('colors');
HPOS=[H1 H2 H3 H4 H5 H6 H7];
for i=4:-1:1,
   Axis(6*(i-1)+1) = axes('Position',[H2 V2 AWH],'NextPlot','add',...
      'tag',['data ',int2str(kd)]);
   text('pos',[0.5 0],'units','norm','tag','name',...
                      'verticalalignment','bottom');
   line('color',map(kd,:),'vis','off','erasemode','normal','tag',...
             'dataline0');kd=kd-1;
   Axis(6*(i-1)+2) = axes('Position',[H1 V2 AWH],'NextPlot','add',...
      'tag',['data ',int2str(kd)]);
   text('pos',[0.5 0],'units','norm','tag','name',...
                      'verticalalignment','bottom');
   line('color',map(kd,:),'vis','off','erasemode','normal','tag',...
             'dataline0');kd=kd-1;
   for kpos=6:-1:3
      Axis(6*(i-1)+kpos) = axes('Position',[HPOS(kpos+1) V2 AWH],...
        'NextPlot','add','tag',['model',int2str(km)]);
      text('pos',[0.5 0],'units','norm','tag','name',...
                      'verticalalignment','bottom');
      line('color',map(km,:),'vis','off','erasemode','normal','tag',...
             'modelline0');km=km-1;
   end
   V2 = V2 + AWH(2) + Voff;
end
VVU = V2 - AWH(2) - Voff; % Level of uppermost icon axes
fprintf('.') 

avert = V2-Voff+H0; asize = [CBWH(2) CBWH(2)]-H0;
apos = [H6-Voff/2-CBWH(2)/2 V2-Voff+H0 asize];
Axis(30) = axes('position',apos,'vis','off');
a1 = iddrawarrow(Axis(30),-90);
apos = [H2-Voff/2-CBWH(2)/2 V2-Voff+H0 asize];
Axis(31) = axes('position',apos,'vis','off');
a1 = iddrawarrow(Axis(31),-90);

% Make Data and Model popup and Operations text
V2 = V2 - Voff + 4*H0 + CBWH(2);

Popup(1) = uicontrol(fig,'Style','popup', ...
 'String','Data|Import...|Example...', ...
 'Position',[H1 V2 CBWH],'tag','sitbdatapop', ...
 'BackgroundColor',DefUIBgC, ...
 'Callback',[s2,'XIDh=findobj(0,''''tag'''',''''sitbdatapop'''');',...
          'if get(XIDh,''''value'''')==3,load dryer2,end,clear XIDh,',...
          'iduipop(''''data'''');',s4]);
Popup(2) = uicontrol(fig,'Style','popup','String','Models|Import...', ...
 'Position',[H5 V2 CBWH], ...
 'BackgroundColor',DefUIBgC, ...
 'Callback',[s2,'iduipop(''''model'''');',s4]);
Voper = V2-CBWH(2)-H0;
Text(6) = uicontrol(fig,'Style','text','String','Operations', ...
 'BackgroundColor',DefUIBgC, ...
 'Position',[H3 Voper CBWH]);

% Make popups and Current data axis
Vpop1   = VVU + AWH(2)/4;%Voper - H0 - AWH(2);
VCDaxes = Vpop1 - CBWH(2) - 1.25*AWH(2);
%Vpop2   = VVL + AWH(2)/4;%VCDaxes -3*CBWH(2);
Vpop2   = VVL;
Pop3Str = ['<-- Preprocess|Select channels...|Select range...|'...
           'Remove means|Remove trends|Filter...|Resample...|Quick start'];
Popup(3) = uicontrol('Style','popup','String',Pop3Str, ...
 'HorizontalAlignment','left', ...
 'Position',[H3 Vpop1 CBWH], ...
 'BackgroundColor',DefUIBgC,'Tag','sitbpreppop', ...
 'Callback',[s2,'iduipop(''''preprocess'''');',s4]);
Pop4Str = [' Estimate -->|Parametric models...|' ...
 'Spectral model...|Correlation model...|Quick start'];
Popup(4) = uicontrol('Style','popup','String',Pop4Str, ...
 'HorizontalAlignment','left','Tag','sitbestpop',...
 'Position',[H3 Vpop2 CBWH], ...
 'BackgroundColor',DefUIBgC, ...
 'Callback',[s2,'iduipop(''''estimate'''');',s4]);
XIDplotw(16,1)=Popup(4);
XIDplotw(15,2)=Popup(3);
XIDplotw(14,2)=Popup(2);
set(XIDplotw(16,1),'userdata',str2mat('[]','[]',int2str(1)));
    % usd(1) is cra-filter order usd(2) is spa-M usd(3) is spa-method
Axis(25) = axes('Position',[H3+(CBWH(1)-AWH(1))/2 VCDaxes AWH], ...
            'NextPlot','add','tag','seles','color',axescolor);
text('pos',[0.5 0],'units','norm','tag','name',...
                      'verticalalignment','bottom','color',textcolor);
line('vis','off','erasemode','normal','tag',...
             'selline');
Text(5)=get(Axis(25),'xlabel');
set(Text(5),'string','Working Data','color','k')
XIDhw(3,1) =Axis(25);

%Axis(29) = axes('Position',[H3+(CBWH(1)-AWH(1))/2 VCDaxes AWH],'vis','off');
%t1 = text('Unit','normal','Position',[-.1 .5],'String','-->', ...
% 'HorizontalAlignment','right','Color','k', ...
% 'FontSize',fz2,'FontWeight','bold','FontName','fixed');
%t2 = text('Unit','normal','Position',[.6 1.4],'String','-->', ...
% 'HorizontalAlignment','center', ...
% 'VerticalAlignment','bottom','Color','k','Rotation',90, ...
% 'FontSize',fz2,'FontWeight','bold','FontName','fixed');
%t3 = text('Unit','normal','Position',[.6 -.8],'String','-->', ...
% 'HorizontalAlignment','center', ...
% 'VerticalAlignment','top','Color','k','Rotation',-90, ...
% 'FontSize',fz2,'FontWeight','bold','FontName','fixed');

apos = [H3 VCDaxes+Voff asize];
Axis(29) = axes('position',apos,'vis','off');
t1 = iddrawarrow(Axis(29), 0);
apos = [H3+CBWH(1)/2-CBWH(2)/2 VVU-CBWH(2)+Voff asize];
Axis(33) = axes('position',apos,'vis','off');
t2 = iddrawarrow(Axis(33), 90);
apos = [H3+CBWH(1)/2-CBWH(2)/2 VVL+CBWH(2) asize];
Axis(34) = axes('position',apos,'vis','off');
t3 = iddrawarrow(Axis(34),-90);

if isempty(XIDplotprefs)
   pd=idlayout('plotdefs');pd=pd(:);
   pd=pd*ones(1,15);
else
  pd=XIDplotprefs;
end 

set(XIDplotw(1,2),'callback',[s2,'iduipw(1);',s4],'userdata',int2str(pd(12,1)));
set(XIDplotw(14,2),'userdata',int2str(pd(12,14)));
set(XIDplotw(2,2),'callback',[s2,'iduipw(2);',s4],...
 'UserData',str2mat(int2str(pd(2,2)),int2str(pd(3,2)),int2str(pd(1,2)),'[]'));
set(XIDplotw(3,2),'callback',[s2,'iduipw(3);',s4],...
 'UserData',str2mat(int2str(pd(4,3)),int2str(pd(5,3)),'[]',int2str(pd(6,3))));
set(XIDplotw(4,2),'callback',[s2,'iduipw(4);',s4]);
set(XIDplotw(5,2),'callback',[s2,'iduipw(5);',s4],...
      'UserData',str2mat(int2str(pd(8,5)),num2str(pd(9,5)),int2str(pd(7,5))));
set(XIDplotw(6,2),'callback',[s2,'iduipw(6);',s4],...
       'UserData',num2str(pd(10,6)));
set(XIDplotw(7,2),'callback',[s2,'iduipw(7);',s4],...
 'UserData',str2mat(int2str(pd(2,7)),int2str(pd(3,7)),int2str(pd(1,7)),'[]'));
set(XIDplotw(13,2),'userdata',...
     str2mat(int2str(pd(2,13)),int2str(pd(3,13)),...
             int2str(pd(1,13)),'[]',int2str(pd(11,13))),...
      'callback',[s2,'iduipw(13);',s4]);
set(XIDplotw(15,2),'userdata',...
     str2mat(int2str(pd(2,15)),int2str(pd(3,15)),int2str(pd(1,15)),'[]',...
            int2str(pd(11,15))));

set(XIDplotw([1:7,13],2),'visible','on','enable','off');


fprintf('.') 
% Make all the uicontrols and axes normalized

set([Text; CheckBox; Axis; Popup; Push],'Unit','norm')
XIDposd=[];XIDposm=[];
for ka=0:3
   XIDposd=[XIDposd;get(Axis(ka*6+1),'pos');get(Axis(ka*6+2),'pos')];
   for kk=3:6, XIDposm=[XIDposm;get(Axis(ka*6+kk),'pos')];end
end

% Make the figure visible

fprintf('.')
fprintf(' done. \n')
iduistat('Ready to start. Try the Data popup.')
set(XIDsumb(1),'windowbuttondownfcn',...
   ['iduipoin(1);[dat,dat_n,dat_i,do_com]=',...
   'idmwwb;eval(do_com);clear dat dat_n dat_i do_com,iduipoin(2);'],...
  'KeyPressfcn',[s2,'iduikeyp;',s4])
FigW=0.85*FigW;
FigH=0.85*FigH;
set(fig,'Position',[10 scrsize(4)-FigH-45 FigW FigH]);
if length(XIDlayout)>15
         if XIDlayout(16,3)
            eval('set(fig,''pos'',XIDlayout(16,1:4))','')
         end
end

set(XIDsumb(1),'vis','on')
set(fig,'HandleVisibility','Callback');

% begin local functions
%------------------------------------------------------------------------
function fsize = idresizefont(a)
% This function expects to find a single text object within
% each axes.  This text object is centered, and font-scaled
% to be (roughly) as large as possible without exceeding the
% axes boundaries.

if nargin < 1 | isempty(a)
  a = gca;
end

fontlist=[12 10 8 7 6 5 4];
xlist = [];
findex = 1;		% find one font for all axes

for j=1:length(a)
  aj = a(j);
  x = findobj(aj,'type','text');
  xlist = [xlist; x(:)];
  for k=1:length(x)
    xk = x(k);
    oldunits = get(xk,'units');
    set(xk,'units','normalized');
    done = 0;
    while ~done
      set(xk,'fontsize', fontlist(findex));
      set(xk,'position',[0.5 0.5 0]);
      ek = get(xk,'extent');
      done = (ek(3) < 0.85) & (ek(4) < 0.85) | (findex == length(fontlist));
      if ~done
        findex = findex + 1;
      end
    end
    set(xk,'units',oldunits);
  end
end

fsize = fontlist(findex);
set(xlist,'fontsize',fsize);

%------------------------------------------------------------------------
function ahan = iddrawarrow(a,rot)
% Given an axes handle, draw an arrow in the axes
% possibly rotated by rot degrees.

if nargin < 1 | isempty(a)
  a = gca;
end

if nargin < 2 | isempty(rot)
  rot = 0;
end

rot = pi*rot/180;
R = [cos(rot) -sin(rot); sin(rot) cos(rot)];

x0 = -0.4;
x1 =  0.1;
x2 =  0.4;
dy =  0.075;

% xy points defining a normalized arrow at
% the origin, pointing east
xy = [ x0  x1    x1  x2    x1  x1  x0  x0;...
      -dy -dy -3*dy   0  3*dy  dy  dy -dy];

z = R*xy + 0.5;
ahan = patch(z(1,:),z(2,:),[0.5 0.5 0.5]);

%------------------------------------------------------------------------

% end sumboard