www.gusucode.com > mbctools 工具箱 matlab 源码程序 > mbctools/+xregdatagui/exportWorkspaceDialog.m
function exportWorkspaceDialog(data,Owner) %exportWorkspaceDialog export data to workspace % Copyright 2015-2015 The MathWorks, Inc. and Ford Global Technologies, Inc. if nargin<2 Owner = []; else Owner = ancestor(Owner,'figure'); end dlg = mbcgui.container.Dialog(... 'Owner',Owner,... 'Name','Export to Workspace',... 'Size',[400 200],... 'HelpCode','mbcExportData'); [dlg.Content,ud]= createLayout(dlg.Figure); initialise(ud,data) dlg.ValidationFcn = @() validateVariableName(ud); closeMode = dlg.showDialog(); if strcmp(closeMode,'OK') % raw or processed data if ud.ExportRawData.Value % get original data ss = info(getOriginal(data)); else ss = sweepset(data); end % export type switch ud.VariableType.Selected case 1 d = exporttable(ss,ud.IncludeTestNumber.Value); case 2 d = sweepset2struct(ss,ud.IncludeTestNumber.Value); otherwise error('Unknown format') end % assign variable to base workspace varname = ud.VariableName.String; assignin('base', varname, d); fprintf('Data set ''%s'' exported to workspace from MBC Model Fitting app.\n',varname); end delete(dlg); function OK = validateVariableName(ud) %validateVariableName check if the base variable is being overwritten varname = ud.VariableName.String; if evalin('base',sprintf('exist(''%s'',''var'')',varname)) % check if variable exists in base workspace before stomping on it. resp = questdlg(sprintf('%s exists in the base workspace. Do you want to overwrite?',varname),... 'Overwrite Variable',... 'Yes','No','No'); OK = strcmp(resp,'Yes'); else OK = true; end function [lyt,ud]=createLayout(Parent) %createLayout create main layout % project and data selector ud.VariableName = uicontrol('Parent',Parent,... 'Style','edit',... 'Callback',@cbEditVarName,... 'HorizontalAlignment','left'); VarNameLabel = xregGui.labelcontrol( 'Parent', Parent,... 'String', 'Variable name: ',... 'ControlSizeMode', 'relative',... 'LabelSizeMode', 'absolute',... 'LabelSize', 80,... 'ControlSize', 1,... 'Control', ud.VariableName ); % radio group to select data format rbPanel = mbcgui.container.layoutpanel('Parent',Parent,... 'BorderType','etchedin',... 'LayoutBorder',[5 5 5 5],... 'Title','Data Format'); rbGroup = xregGui.rbgroup('parent', rbPanel,... 'nx', 1,... 'ny', 2,... 'String', {'Table' 'MBC data structure'},... 'Selected',1); rbPanel.LayoutComponent = rbGroup; ud.VariableType = rbGroup; % check boxes for test number and raw data ud.IncludeTestNumber = uicontrol('Parent',Parent,... 'Style','checkbox',... 'String','Include test number',... 'Tag','IncludeTestNumber',... 'HorizontalAlignment','left'); ud.ExportRawData = uicontrol('Parent',Parent,... 'Style','checkbox',... 'String','Export raw data',... 'Tag','ExportRaw',... 'HorizontalAlignment','left'); lyt = xreggridbaglayout(Parent,... 'dimension',[4,1],... 'rowsizes',[25 60 20 20],... 'gapy',3,... 'elements',{VarNameLabel,rbPanel,ud.IncludeTestNumber,ud.ExportRawData}); function initialise(ud,data) %initialise initialise dialog if isa(data,'sweepset') % no processing for sweepsets set(ud.ExportRawData,'Enable','off','Value',0); % hard code the variable name for sweepsets varname = 'data'; else varname = matlab.lang.makeValidName(get(data,'Label')); end set(ud.VariableName,'String',varname); if isOneStage(data) % test numbers are only relevant for two-stage data set(ud.IncludeTestNumber,'Enable','off','Value',0); end if isa(data,'sweepset') % no processing for sweepsets set(ud.ExportRawData,'Enable','off','Value',0); end function cbEditVarName(h,~) %cbEditVarName check for valid variable name in edit callback [varname,modified] = matlab.lang.makeValidName(h.String); if modified % change the variable name and warn user h.String = varname; warndlg(sprintf('Invalid MATLAB variable name. The variable name is modified to ''%s''.',varname),'Invalid Variable Name','modal') end