www.gusucode.com > mbcmodels 工具箱 matlab 源码程序 > mbcmodels/@xreggpr/gui_globalmodsetup.m
function [mout,ok]=gui_globalmodsetup(m,action,varargin) %gui_globalmodsetup setup layout for GPM % [mout,ok]=gui_globalmodsetup(m,action,varargin) % Copyright 2015-2015 The MathWorks, Inc. if nargin<2 action='figure'; end switch lower(action) case 'figure' [mout,ok] = gui_ModelDialog(m,'Gaussian Process Model Settings', varargin{:}); case 'layout' figh = varargin{1}; p = varargin{2}; mout = i_createlyt(figh,p); case 'getclasslevel' mout=mfilename('class'); case 'finalise' % called when ok button is pressed mout = m; pUD = get(varargin{1},'UserData'); ud = pUD.info; basis = get(ud.PolyOrder,'Value'); mout.Basis = ud.PolyOrder.String{basis}; ok = true; KernelChoices = ud.KernelChoices; mout.Kernel= KernelChoices{get(ud.Kernel,'Value')}; % large scale fit parameters mout.LargeScale.Threshold = ud.Threshold.Value; mout.LargeScale.ActiveSetSize = ud.ActiveSetSize.Value; mout.LargeScale.ActiveSetMethod = ud.ActiveSetMethods{ud.ActiveSetMethod.Value}; mout.LargeScale.FitMethod = ud.FitMethods{ud.LargeFitMethod.Value}; mout.LargeScale.PredictMethod = ud.PredictMethods{ud.LargePredictMethod.Value}; otherwise error('mbc:xreggpr:InvalidArgument1','Invalid dialog option'); end function lyt = i_createlyt(Parent,p) if ~isa(Parent,'xregcontainer') m = p.info; pUD = xregGui.RunTimePointer; pUD.LinkToObject(Parent); ud.pointer = p; ud.figure = Parent; ud.PolyOrder = uicontrol('Parent',Parent,... 'Style','popup',... 'String',classreg.learning.modelparams.GPParams.BuiltInBasisFunctions,... 'Value',1); hBasisLabel = xregGui.labelcontrol('parent', Parent, ... 'String', 'Explicit basis function:', ... 'LabelSizeMode', 'absolute', ... 'ControlSizeMode', 'absolute', ... 'LabelSize', 120, ... 'ControlSize', 150, ... 'Control', ud.PolyOrder); ud.KernelChoices = classreg.learning.modelparams.GPParams.BuiltInKernelFunctions; ud.Kernel = uicontrol('Parent',Parent,... 'Style','popup',... 'String',ud.KernelChoices,... 'Value',1); hKernelLabel = xregGui.labelcontrol('parent', Parent, ... 'String', 'Kernel function:', ... 'LabelSizeMode', 'absolute', ... 'ControlSizeMode', 'absolute', ... 'LabelSize', 120, ... 'ControlSize', 150, ... 'Control', ud.Kernel); ud.ShowLargeScale = uicontrol('Parent',Parent,... 'Style','checkbox',... 'String','Show large data fit options',... 'Callback',{@iShowLargescale,pUD},... 'Value',0); % large data options pnl = mbcgui.container.layoutpanel('Parent',Parent,... 'Title','Large data fit options',... 'LayoutBorder',[10 10 10 10],... 'BorderType','etchedin'); % threshold to switch to large scale ud.Threshold = mbcgui.widget.Spinner('Parent',pnl,... 'Rule','int'); largeScale{1} = xregGui.labelcontrol('Parent', pnl, ... 'String', 'Threshold:', ... 'LabelSizeMode', 'absolute', ... 'ControlSizeMode', 'absolute', ... 'LabelSize', 100, ... 'ControlSize', 150, ... 'Control', ud.Threshold); % active set size ud.ActiveSetSize = mbcgui.widget.Spinner('Parent',pnl,... 'Rule','int'); largeScale{2} = xregGui.labelcontrol('parent', pnl, ... 'String', 'Active set size:', ... 'LabelSizeMode', 'absolute', ... 'ControlSizeMode', 'absolute', ... 'LabelSize', 100, ... 'ControlSize', 150, ... 'Control', ud.ActiveSetSize); % active set method ud.ActiveSetMethods = classreg.learning.modelparams.GPParams.BuiltInActiveSetMethods; ud.ActiveSetMethod = uicontrol('Parent',pnl,... 'Style','popupmenu',... 'String',ud.ActiveSetMethods,... 'Value',2); largeScale{3} = xregGui.labelcontrol('Parent', pnl, ... 'String', 'Active set method:', ... 'LabelSizeMode', 'absolute', ... 'ControlSizeMode', 'absolute', ... 'LabelSize', 100, ... 'ControlSize', 150, ... 'Control', ud.ActiveSetMethod); % large scale fit method ud.FitMethods = {'SD','FIC','SR'}; ud.LargeFitMethod = uicontrol('Parent',pnl,... 'Style','popupmenu',... 'String',ud.FitMethods,... 'Value',2); largeScale{4} = xregGui.labelcontrol('Parent', pnl, ... 'String', 'Fit method:', ... 'LabelSizeMode', 'absolute', ... 'ControlSizeMode', 'absolute', ... 'LabelSize', 100, ... 'ControlSize', 150, ... 'Control', ud.LargeFitMethod); % predict method ud.PredictMethods = classreg.learning.modelparams.GPParams.BuiltInPredictMethods; ud.LargePredictMethod = uicontrol('Parent',pnl,... 'Style','popupmenu',... 'String', ud.PredictMethods,... 'Value',2); largeScale{5} = xregGui.labelcontrol('Parent', pnl, ... 'String', 'Predict method:', ... 'LabelSizeMode', 'absolute', ... 'ControlSizeMode', 'absolute', ... 'LabelSize', 100, ... 'ControlSize', 150, ... 'Control', ud.LargePredictMethod); pnllyt = xreggridbaglayout(pnl, ... 'Dimension',[5 1],... 'RowSizes',[20 20 20 20 20],... 'gapy',5,... 'Elements',largeScale); pnl.LayoutComponent = pnllyt; ud.LargeScaleCard = xregcardlayout(Parent,'NumCards',2); attach(ud.LargeScaleCard,pnl,2); lyt = xreggridbaglayout(Parent, ... 'UserData',pUD,... 'Dimension',[6 1],... 'RowSizes',[25 25 10,20,160,-1],... 'gapy',2,... 'Elements',{hKernelLabel,hBasisLabel,[],ud.ShowLargeScale,ud.LargeScaleCard,[]}); pUD.info = ud; else lyt = Parent; pUD = get(lyt, 'UserData'); ud = pUD.info; ud.pointer = p; m = ud.pointer.info; end set(ud.PolyOrder,'Value',find(strcmpi(m.Basis,ud.PolyOrder.String))); set(ud.Kernel,'Value',find(strcmpi(m.Kernel,ud.KernelChoices))) set(ud.Threshold,'Value',m.LargeScale.Threshold); set(ud.ActiveSetSize,'Value',m.LargeScale.ActiveSetSize); set(ud.LargeFitMethod,'Value',find(strcmpi(m.LargeScale.FitMethod,ud.FitMethods))) set(ud.ActiveSetMethod,'Value',find(strcmpi(m.LargeScale.ActiveSetMethod,ud.ActiveSetMethods))) set(ud.LargePredictMethod,'Value',find(strcmpi(m.LargeScale.PredictMethod,ud.PredictMethods))) mdef = xreggpr; if ~isequal(mdef.LargeScale,m.LargeScale) % display large data options if different from defaults set(ud.LargeScaleCard,'CurrentCard',2); set(ud.ShowLargeScale,'Value',1); end function iShowLargescale(h,~,pUD) ud = pUD.info; if get(h,'Value') set(ud.LargeScaleCard,'CurrentCard',2); else set(ud.LargeScaleCard,'CurrentCard',1); end