www.gusucode.com > mbcdesign 工具箱 matlab 源码程序 > mbcdesign/@des_respsurf/gui_augmethods.m

    function [s,defnum]=gui_augmethods(d)
%GUI_AUGMETHODS  Return structure of augmentation methods
%
%  [S,DEFAULT]=GUI_AUGMETHODS(D)
%
%  See also:  GUI_ADDPOINTS

%  Copyright 2000-2015 The MathWorks, Inc. and Ford Global Technologies, Inc.



[s,defnum]=gui_augmethods(d.xregdesign);
[OK,d]=rankcheck(d);
if isoptimcapable(d) && OK
   [tp,info]=DesignType(d);
   if tp==1
      % redefine defnum
      if isempty(info)
         x=1;
      else
         x=find( strcmp( info,{ 'D-optimal', 'V-optimal', 'A-optimal' } ) );
         if isempty(x)
            x=1;
         end
      end
      defnum=[length(s)+1 x];
   end
   s=[s struct('Name',{{'D-Optimal','V-Optimal','A-Optimal'}},...
         'CreateFcn',{@i_createoptim},...
         'FinaliseFcn',{@i_finaliseoptim},...
         'NPointsFcn',{@i_NPoptim})];
end
return





function L = i_createoptim(F,pD)

udh=xregGui.RunTimePointer;
udh.LinkToObject(F);

ud.despointer=pD;

ud.Npts=xregGui.labelcontrol('parent',F,...
   'visible','off',...
   'string','Number of points:',...
   'labelsizemode','absolute',...
   'labelsize',100,...
   'controlsizemode','absolute',...
   'controlsize',60,...
   'gap',5,...
   'Control',mbcgui.widget.Spinner('Parent',F,...
   'Value',1,...
   'ClickIncrement',1,...
   'Min',1,...
   'Max',1000,...
   'Rule','int',...
   'Visible','off'));
ud.candset=xregGui.labelcontrol('parent',F,...
   'visible','off',...
   'string','Candidate Set:  ',...
   'controlsize',65,...
   'gap',5,...
   'Control',uicontrol('Parent',F,...
   'Style','pushbutton',...
   'String','Edit...',...
   'Visible','off',...
   'Callback',{@i_editcset,udh}));
L=xreggridbaglayout(F,'dimension',[2 1],...
   'packstatus','off',...
   'rowsizes',[20 25],...
   'gapy',5,...
   'elements',{ud.Npts,ud.candset},...
   'userdata',udh);

ud=i_setcstext(ud);
udh.info=ud;



function ud=i_setcstext(ud)
des=ud.despointer.info;
str=['Candidate set:  ' CandidateSetInformation(candspace(des)) ', ' sprintf('%d',ncand(des)) ' points.'];
set(ud.candset,'String',str);


function i_editcset(~,~,udh)
ud=udh.info;
des=ud.despointer.info;
des=gui_candspace(des);
ud.despointer.info=des;
ud=i_setcstext(ud);



function i_finaliseoptim(L,pD,sel)
udh=get(L,'UserData');
ud=udh.info;

des=pD.info;
np=get(ud.Npts.Control,'Value');
switch sel
case 1
   des=daugment(des,np);
case 2   
   des=vaugment(des,np);
case 3
   des=aaugment(des,np);
end
pD.info=des;


function np=i_NPoptim(L,~,np)
udh=get(L,'UserData');
ud=udh.info;
if nargin>2
   ud.Npts.Control.Value=np;
else
   np=ud.Npts.Control.Value;
end