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