www.gusucode.com > nncontrol 工具箱 matlab 源码程序 > nncontrol/private/nndataimport.m
function nndataimport(cmd,arg1,arg2,arg3) %NNDATAIMPORT Data Import GUI for the Neural Network Controller Toolbox. % % Synopsis % % nndataimport(cmd,arg1,arg2,arg3) % % Warning!! % % This function may be altered or removed in future % releases of Neural Network Toolbox. We recommend % you do not write code which calls this function. % This function is generally being called from a Simulink block. % Orlando De Jesus, Martin Hagan, 1-25-00 % Copyright 1992-2011 The MathWorks, Inc. % CONSTANTS me = 'Import Data.'; % DEFAULTS if nargin == 0, cmd = ''; else cmd = lower(cmd); end % FIND WINDOW IF IT EXISTS fig = findall(0,'type','figure','name',me); if ~isempty(fig) && isempty(get(fig,'children')), fig = []; end if ~isempty(fig) ud = get(fig,'userdata'); end if strcmp(cmd,'init') if isempty(fig) StdColor = get(0,'DefaultFigureColor'); PointsToPixels = 72/get(0,'ScreenPixelsPerInch'); StdUnit = 'character'; ud.Handles.parent=arg1; ud.Handles.type_net=arg2; uipos = getuipos; fig = figure('Units','points', ... 'Interruptible','off', ... 'BusyAction','cancel', ... 'HandleVis','Callback', ... 'Color',StdColor, ... 'IntegerHandle','off', ... 'MenuBar','none', ... 'Name',me, ... 'NumberTitle','off', ... 'PaperUnits','points', ... 'Units', StdUnit, ... 'Position',uipos.fig, ... 'Tag','ImportIACfig', ... 'WindowStyle','modal'); h1 = uicontrol('Parent',fig, ... 'Unit',StdUnit, ... 'BackgroundColor',StdColor, ... 'Position',uipos.h1_1, ... 'Style','frame'); h1 = uicontrol('Parent',fig, ... 'Unit',StdUnit, ... 'BackgroundColor',StdColor, ... 'Position',uipos.h1_2, ... 'Style','frame'); h1 = uicontrol('Parent',fig, ... 'Unit',StdUnit, ... 'BackgroundColor',StdColor, ... 'Position',uipos.h1_3, ... 'String','Import From:', ... 'Style','text'); h1 = uicontrol('Parent',fig, ... 'Unit',StdUnit, ... 'BackgroundColor',StdColor, ... 'Position',uipos.h1_4, ... 'String','Type of Data:', ... 'Style','text'); ud.Handles.Sbutton = uicontrol('Parent',fig, ... 'Unit',StdUnit, ... 'BackgroundColor',StdColor, ... 'Callback','nncontrolutil(''nndataimport'',''radiobutton1'',gcbf);nncontrolutil(''nndataimport'',''structures'',gcbf);', ... 'ListboxTop',0, ... 'Position',uipos.Sbutton, ... 'String','Structures', ... 'Style','radiobutton', ... 'ToolTipStr','If selected, the data will be expected in structure form (e.g., tr_dat.U and tr_dat.Y).',... 'Tag','Mbutton',... 'Value',1); ud.Handles.Abutton = uicontrol('Parent',fig, ... 'Unit',StdUnit, ... 'BackgroundColor',StdColor, ... 'Callback','nncontrolutil(''nndataimport'',''radiobutton1'',gcbf);nncontrolutil(''nndataimport'',''arrays'',gcbf);', ... 'ListboxTop',0, ... 'Position',uipos.Abutton, ... 'String','Arrays', ... 'Style','radiobutton', ... 'Tag','Wbutton', ... 'ToolTipStr','If selected, the data will be expected in array form - one for input and one for output.'); set(ud.Handles.Abutton,'UserData',[ud.Handles.Sbutton]); set(ud.Handles.Sbutton,'UserData',[ud.Handles.Abutton]); ud.Handles.Wbutton = uicontrol('Parent',fig, ... 'Unit',StdUnit, ... 'BackgroundColor',StdColor, ... 'Callback','nncontrolutil(''nndataimport'',''radiobutton'',gcbf);nncontrolutil(''nndataimport'',''workspace'',gcbf);', ... 'ListboxTop',0, ... 'Position',uipos.Wbutton, ... 'String','Workspace', ... 'Style','radiobutton', ... 'Tag','Wbutton', ... 'ToolTipStr','If selected, the data will be taken from the MATLAB workspace.',... 'Value',1); ud.Handles.Mbutton = uicontrol('Parent',fig, ... 'Unit',StdUnit, ... 'BackgroundColor',StdColor, ... 'Callback','nncontrolutil(''nndataimport'',''radiobutton'',gcbf);nncontrolutil(''nndataimport'',''matfile'',gcbf);', ... 'ListboxTop',0, ... 'Position',uipos.Mbutton, ... 'String','MAT-file', ... 'Style','radiobutton', ... 'ToolTipStr','If selected, the data will be taken from a MAT-file.',... 'Tag','Mbutton'); set(ud.Handles.Wbutton,'UserData',[ud.Handles.Mbutton]); set(ud.Handles.Mbutton,'UserData',[ud.Handles.Wbutton]); ud.Handles.FileNameText = uicontrol('Parent',fig, ... 'Unit',StdUnit, ... 'BackgroundColor',StdColor, ... 'Enable','off', ... 'ListboxTop',0, ... 'Position',uipos.FileNameText, ... 'String','MAT-filename:', ... 'Style','text', ... 'ToolTipStr','Enter the name of the MAT-file containing the data.',... 'Tag','FileNameText'); ud.Handles.FileNameEdit = uicontrol('Parent',fig, ... 'Unit',StdUnit, ... 'BackgroundColor',[1 1 1], ... 'Enable','off', ... 'Callback','nncontrolutil(''nndataimport'',''clearpath'',gcbf);nncontrolutil(''nndataimport'',''matfile'',gcbf);', ... 'HorizontalAlignment','left', ... 'ListboxTop',0, ... 'Position',uipos.FileNameEdit, ... 'String','', ... 'Style','edit', ... 'ToolTipStr','Enter the name of the MAT-file containing the data.',... 'Tag','FileNameEdit'); ud.Handles.BrowseButton = uicontrol('Parent',fig, ... 'Unit',StdUnit, ... 'Enable','off', ... 'Callback','nncontrolutil(''nndataimport'',''browsemat'',gcbf);', ... 'ListboxTop',0, ... 'Position',uipos.BrowseButton, ... 'String','Browse', ... 'ToolTipStr','Browse the disk to select a MAT-file.',... 'Tag','BrowseButton'); h1 = uicontrol('Parent',fig, ... 'Unit',StdUnit, ... 'BackgroundColor',StdColor, ... 'ListboxTop',0, ... 'Position',uipos.h1_5, ... 'Style','frame'); ud.Handles.ModelText = uicontrol('Parent',fig, ... 'Unit',StdUnit, ... 'BackgroundColor',StdColor, ... 'ListboxTop',0, ... 'Position',uipos.ModelText, ... 'String','Workspace Contents', ... 'Style','text', ... 'Tag','ModelText'); ud.Handles.ModelList = uicontrol('Parent',fig, ... 'Unit',StdUnit, ... 'BackgroundColor',[1 1 1], ... 'Position',uipos.ModelList, ... 'Style','listbox', ... 'Tag','ModelList', ... 'ToolTipStr','Present the data found in the MATLAB workspace or MAT-file.',... 'Value',1); h1 = uicontrol('Parent',fig, ... 'Unit',StdUnit, ... 'BackgroundColor',StdColor, ... 'ListboxTop',0, ... 'Position',uipos.h1_6, ... 'Style','frame'); h1 = uicontrol('Parent',fig, ... 'Unit',StdUnit, ... 'BackgroundColor',StdColor, ... 'ListboxTop',0, ... 'Position',uipos.h1_7, ... 'String','Input Output Variables', ... 'Style','text'); EditUd = struct('ListIndex',0,'String',''); ud.Handles.DataText = uicontrol('Parent',fig, ... 'Unit',StdUnit, ... 'BackgroundColor',StdColor, ... 'HorizontalAlignment','left', ... 'ListboxTop',0, ... 'Position',uipos.DataText, ... 'String','Structure Name:', ... 'Style','text', ... 'Tag','DataText'); ud.Handles.DataEdit = uicontrol('Parent',fig, ... 'Unit',StdUnit, ... 'BackgroundColor',[1 1 1], ... 'Callback','nncontrolutil(''nndataimport'',''editcallback'',gcbf);', ... 'HorizontalAlignment','left', ... 'ListboxTop',0, ... 'Position',uipos.DataEdit, ... 'String','', ... 'Style','edit', ... 'UserData',EditUd,... 'ToolTipStr','Data object to be imported.',... 'Tag','DataEdit'); ud.Handles.DataButton = uicontrol('Parent',fig, ... 'Unit',StdUnit, ... 'Callback','nncontrolutil(''nndataimport'',''buttoncallback'',gcbf);', ... 'Position',uipos.DataButton, ... 'String','-->', ... 'UserData',ud.Handles.DataEdit,... 'ToolTipStr','Select the data object to be imported.',... 'Tag','DataButton'); ud.Handles.InputText = uicontrol('Parent',fig, ... 'Unit',StdUnit, ... 'BackgroundColor',StdColor, ... 'HorizontalAlignment','left', ... 'ListboxTop',0, ... 'Position',uipos.InputText, ... 'String','Input Array:', ... 'Style','text', ... 'Tag','InputText'); ud.Handles.InputEdit = uicontrol('Parent',fig, ... 'Unit',StdUnit, ... 'BackgroundColor',[1 1 1], ... 'Callback','nncontrolutil(''nndataimport'',''editcallback'',gcbf);', ... 'HorizontalAlignment','left', ... 'ListboxTop',0, ... 'Position',uipos.InputEdit, ... 'String','', ... 'Style','edit', ... 'UserData',EditUd,... 'ToolTipStr','Input data array to be imported.',... 'Tag','InputEdit'); ud.Handles.InputButton = uicontrol('Parent',fig, ... 'Unit',StdUnit, ... 'Callback','nncontrolutil(''nndataimport'',''buttoncallback'',gcbf);', ... 'Position',uipos.InputButton, ... 'String','-->', ... 'UserData',ud.Handles.InputEdit,... 'ToolTipStr','Select the input array to be imported.',... 'Tag','InputButton'); ud.Handles.OutputText = uicontrol('Parent',fig, ... 'Unit',StdUnit, ... 'BackgroundColor',StdColor, ... 'HorizontalAlignment','left', ... 'ListboxTop',0, ... 'Position',uipos.OutputText, ... 'String','Output Array:', ... 'Style','text', ... 'Tag','OutputText'); ud.Handles.OutputEdit = uicontrol('Parent',fig, ... 'Unit',StdUnit, ... 'BackgroundColor',[1 1 1], ... 'Callback','nncontrolutil(''nndataimport'',''editcallback'',gcbf);', ... 'HorizontalAlignment','left', ... 'ListboxTop',0, ... 'Position',uipos.OutputEdit, ... 'String','', ... 'Style','edit', ... 'UserData',EditUd,... 'ToolTipStr','Output data array to be imported.',... 'Tag','OutputEdit'); ud.Handles.OutputButton = uicontrol('Parent',fig, ... 'Unit',StdUnit, ... 'Callback','nncontrolutil(''nndataimport'',''buttoncallback'',gcbf);', ... 'Position',uipos.OutputButton, ... 'String','-->', ... 'UserData',ud.Handles.OutputEdit,... 'ToolTipStr','Select the output array to be imported.',... 'Tag','OutputButton'); h1 = uicontrol('Parent',fig, ... 'Unit',StdUnit, ... 'BackgroundColor',StdColor, ... 'ListboxTop',0, ... 'Position',uipos.h1_8, ... 'Visible', 'off',... 'Style','frame'); ud.Handles.HelpButton = uicontrol('Parent',fig, ... 'Unit',StdUnit, ... 'Callback','nncontrolutil(''nndataimport'',''windowstyle'',gcbf,''normal'');nncontrolutil(''nndataimporthelp'',''main'',gcbf);', ... 'ListboxTop',0, ... 'Position',uipos.HelpButton, ... 'String','Help', ... 'ToolTipStr','Call the Import Data help window.',... 'Tag','HelpButton'); ud.Handles.CancelButton = uicontrol('Parent',fig, ... 'Unit',StdUnit, ... 'Callback','nncontrolutil(''nndataimport'',''cancel'',gcbf);', ... 'ListboxTop',0, ... 'Position',uipos.CancelButton, ... 'String','Cancel', ... 'ToolTipStr','Discard the import action and close this menu',... 'Tag','CancelButton'); ud.Handles.OKButton = uicontrol('Parent',fig, ... 'Unit',StdUnit, ... 'Callback','nncontrolutil(''nndataimport'',''apply'',gcbf);', ... 'ListboxTop',0, ... 'Position',uipos.OKButton, ... 'String','OK', ... 'ToolTipStr','Import the data into the Plant Identification window.',... 'Tag','OKButton'); end set(fig,'UserData',ud,'visible','on','WindowStyle','modal') nncontrolutil('nndataimport','structures',gcbf); nncontrolutil('nndataimport','workspace',gcbf); elseif strcmp(cmd,'cancel') H=get(ud.Handles.parent,'userdata'); arg1=get(H.gcbh_ptr,'userdata'); arg2=get(H.gcb_ptr,'userdata'); if strcmp('ref',ud.Handles.type_net) nnmodref('',arg1,arg2,''); else nnident('',arg1,arg2,''); end delete(fig) return; elseif strcmp(cmd,'windowstyle') set(fig,'visible','on','WindowStyle',arg2) return; elseif strcmp(cmd,'radiobutton') val = get(gcbo,'Value'); sibs = get(gcbo,'UserData'); if ~val, set(gcbo,'Value',1); elseif val==1, set(sibs,'Value',0); set(ud.Handles.FileNameEdit,'String','', ... 'UserData',struct('FileName',[],'PathName',[])); set(ud.Handles.DataEdit,'String','','UserData',... struct('ListIndex',0,'String','')); set(ud.Handles.InputEdit,'String','','UserData',... struct('ListIndex',0,'String','')); set(ud.Handles.OutputEdit,'String','','UserData',... struct('ListIndex',0,'String','')); end % if/else val elseif strcmp(cmd,'radiobutton1') val = get(gcbo,'Value'); sibs = get(gcbo,'UserData'); if ~val, set(gcbo,'Value',1); elseif val==1, set(sibs,'Value',0); % set(ud.Handles.DataEdit,'String','','UserData',... % struct('ListIndex',0,'String','')); % set(ud.Handles.InputEdit,'String','','UserData',... % struct('ListIndex',0,'String','')); % set(ud.Handles.OutputEdit,'String','','UserData',... % struct('ListIndex',0,'String','')); end % if/else val elseif strcmp(cmd,'arrays') | strcmp(cmd,'structures'), if strcmp(cmd,'arrays') set(ud.Handles.InputText,'enable','on'); set(ud.Handles.InputEdit,'enable','on'); set(ud.Handles.InputButton,'enable','on'); set(ud.Handles.OutputText,'enable','on'); set(ud.Handles.OutputEdit,'enable','on'); set(ud.Handles.OutputButton,'enable','on'); set(ud.Handles.DataText,'enable','off'); set(ud.Handles.DataEdit,'enable','off'); set(ud.Handles.DataButton,'enable','off'); else set(ud.Handles.InputText,'enable','off'); set(ud.Handles.InputEdit,'enable','off'); set(ud.Handles.InputButton,'enable','off'); set(ud.Handles.OutputText,'enable','off'); set(ud.Handles.OutputEdit,'enable','off'); set(ud.Handles.OutputButton,'enable','off'); set(ud.Handles.DataText,'enable','on'); set(ud.Handles.DataEdit,'enable','on'); set(ud.Handles.DataButton,'enable','on'); end if get(ud.Handles.Wbutton,'Value'), nncontrolutil('nndataimport','workspace',gcbf); else nncontrolutil('nndataimport','matfile',gcbf); end elseif strcmp(cmd,'editcallback'), %---Callback for the Input, Output and Structure Edit boxes %---These boxes should contain an index into the List Box string %---The Index should be zero when an invalid name is entered TryString = get(gcbo,'String'); udEdit = get(gcbo,'UserData'); if isempty(TryString), % empty value, leave it that way udEdit.ListIndex=0; udEdit.String=''; else IndList = nnstring.first_match(TryString,ud.ListData.Names); if isempty(IndList), % Revert to last valid entry if isempty(udEdit.ListIndex), set(gcbo,'String',''); else set(gcbo,'String',udEdit.String); end, %if/else isempty(udEdit) WarnStr=['You must enter an array or structure from the list box.']; warndlg(WarnStr,'Import Warning','modal'); else, % Store the list index udEdit.ListIndex=IndList; udEdit.String=TryString; end % if/else isempty(IndList); end % if/else isempty(TryString); set(gcbo,'UserData',udEdit); elseif strcmp(cmd,'matfile'), set(ud.Handles.ModelText,'string','MAT-file Contents'); set([ud.Handles.FileNameText,... ud.Handles.FileNameEdit,... ud.Handles.BrowseButton],'enable','on'); set(ud.Handles.FileNameText,'String','MAT-filename:'); set(ud.Handles.BrowseButton,'Callback','nncontrolutil(''nndataimport'',''browsemat'',gcbf);'); set(ud.Handles.FileNameEdit,... 'Callback','nncontrolutil(''nndataimport'',''clearpath'',gcbf);nncontrolutil(''nndataimport'',''matfile'',gcbf);'); FileName = get(ud.Handles.FileNameEdit,'String'); if isempty(FileName), Data=struct('Names','','Objects',[]); else try if get(ud.Handles.Abutton,'Value'), type_data='double'; else type_data='struct'; end VAR=load(FileName); WorkspaceVars=whos('-file',FileName); sysvar=cell(size(WorkspaceVars)); s=0; for ct=1:size(WorkspaceVars,1), VarClass=WorkspaceVars(ct).class; if (strcmp(VarClass,type_data)) & isequal(2,length(WorkspaceVars(ct).size)) %& ~(strcmp(WorkspaceVars(ct).name,'ud')), % Only look for structure objects s=s+1; sysvar(s)={WorkspaceVars(ct).name}; end % if isa end % for ct sysvar=sysvar(1:s); DataObjects = cell(2,1); for ctud=1:s, DataObjects{ctud} = eval(cat(2,'VAR.',sysvar{ctud})); end % for Data = struct('Names',{sysvar},'Objects',{DataObjects}); catch me warndlg(me.message,'Import Warning','modal'); set(ud.Handles.FileNameEdit,'String',''); FileName=''; Data=struct('Names','','Objects',[]); end % try/catch end % if/else check on FileName LocalFinishLoad(fig,ud,FileName,Data) elseif strcmp(cmd,'workspace') set(ud.Handles.ModelText,'string','Workspace Contents'); set([ud.Handles.FileNameText,... ud.Handles.FileNameEdit,... ud.Handles.BrowseButton],'enable','off'); %----Look for all workspace variables of class 'ss', 'tf', or 'zpk' WorkspaceVars=evalin('base','whos'); sysvar=cell(size(WorkspaceVars)); s=0; if get(ud.Handles.Abutton,'Value'), type_data='double'; else type_data='struct'; end for ct=1:size(WorkspaceVars,1), VarClass=WorkspaceVars(ct).class; if (strcmp(VarClass,type_data)) & isequal(2,length(WorkspaceVars(ct).size)), % Only look for Non-array (TF, SS, and ZPK) LTI objects s=s+1; sysvar(s,1)={WorkspaceVars(ct).name}; end % if isa end % for ct sysvar=sysvar(1:s,1); DataObjects = cell(s,1); for ctud=1:s, DataObjects{ctud} = evalin('base',sysvar{ctud}); end Data = struct('Names',{sysvar},'Objects',{DataObjects}); set(ud.Handles.ModelList,'String',sysvar,'value',1) %---Update the Import Figure Userdata ud.ListData=Data; set(fig,'UserData',ud); elseif strcmp(cmd,'browsemat') filterspec = '*.mat'; udFileEdit = get(ud.Handles.FileNameEdit,'UserData'); LastPath = udFileEdit.PathName; CurrentPath=pwd; if ~isempty(LastPath), cd(LastPath); end [filename,pathname] = uigetfile(filterspec,'Import file:'); if ~isempty(LastPath), cd(CurrentPath); end if filename, if ~strcmpi(pathname(1:end-1),CurrentPath) ImportStr = [pathname,filename(1:end-4)]; else ImportStr = filename(1:end-4); end set(ud.Handles.FileNameEdit,'String',ImportStr); nncontrolutil('nndataimport','matfile',fig); set(ud.Handles.DataEdit,'String','','UserData',... struct('ListIndex',0,'String','')); set(ud.Handles.InputEdit,'String','','UserData',... struct('ListIndex',0,'String','')); set(ud.Handles.OutputEdit,'String','','UserData',... struct('ListIndex',0,'String','')); end elseif strcmp(cmd,'clearpath') && ~isempty(fig) %---Callback for the SImulink File box % Whenever a new name is entered, update the Userdata NewName = get(gcbo,'String'); indDot = strfind(NewName,'.'); if ~isempty(indDot), NewName=NewName(1:indDot(end)-1); set(ud.Handles.FileNameEdit,'String',NewName) end elseif strcmp(cmd,'buttoncallback') %---Callback for the Arrow Buttons EditBox = get(gcbo,'UserData'); AllNames = get(ud.Handles.ModelList,'String'); if ~isempty(AllNames), % Make sure these is something in the list SelectedName = get(ud.Handles.ModelList,'Value'); udEdit = get(EditBox ,'UserData'); udEdit.String = AllNames{SelectedName}; udEdit.ListIndex = SelectedName; set(EditBox,'String',AllNames{SelectedName},'UserData',udEdit); end elseif strcmp(cmd,'apply'), % Send the new Feedback structure to the Parent's Userdata if get(ud.Handles.Sbutton,'value') DataOK=0; %---Data udDataEdit = get(ud.Handles.DataEdit,'UserData'); if udDataEdit.ListIndex~=0, ud.ModelData.Data.Name = udDataEdit.String; ud.ModelData.Data.Object = ... ud.ListData.Objects{udDataEdit.ListIndex}; if ~isfield(ud.ModelData.Data.Object,'U') | ~isfield(ud.ModelData.Data.Object,'Y') warndlg('The data structure must at least have fields U and Y for Input and Output arrays.',... 'Import Warning','modal'); return end size_U=size(ud.ModelData.Data.Object.U(:),1); size_Y=size(ud.ModelData.Data.Object.Y(:),1); if size_U ~= size_Y warndlg('The Input and Output arrays (U and Y) inside the data structure must have the same dimensions.',... 'Import Warning','modal'); return end if isfield(ud.ModelData.Data.Object,'Ts') H=get(ud.Handles.parent,'userdata'); Ts=str2num(get(H.Sampling_time,'string')); if Ts~=ud.ModelData.Data.Object.Ts temp=questdlg({['Your data structure has a different sampling time than the simulink controller block.'] ... ['The simulink controller block will use the sampling time already configured.'] ... ['Do you want to continue ?']},... 'Import Warning','Yes','No','No'); if strcmp(temp,'No') return end end end ImportStr=get(ud.Handles.FileNameEdit,'String'); if strcmp(ud.Handles.type_net,'narma_l2') | strcmp(ud.Handles.type_net,'nnpredict') ... | strcmp(ud.Handles.type_net,'nnmodref') nnident('have_file',ImportStr,ud.ModelData.Data.Name); elseif strcmp(ud.Handles.type_net,'ref') nnmodref('have_file',ImportStr,ud.ModelData.Data.Name); end DataOK=1; end figure_variables=get(ud.Handles.parent,'userdata'); parent_simulink=get(figure_variables.gcbh_ptr,'userdata'); if DataOK H=get(ud.Handles.parent,'userdata'); arg1=get(H.gcbh_ptr,'userdata'); arg2=get(H.gcb_ptr,'userdata'); if strcmp('ref',ud.Handles.type_net) nnmodref('',arg1,arg2,''); else nnident('',arg1,arg2,''); end delete(fig) return end else U_OK=0; Y_OK=0; %---Data udInputEdit = get(ud.Handles.InputEdit,'UserData'); udOutputEdit = get(ud.Handles.OutputEdit,'UserData'); if udInputEdit.ListIndex==0 | udOutputEdit.ListIndex==0, warndlg('You must define the input and output variables to be imported.',... 'Import Warning','modal'); return end if udInputEdit.ListIndex~=0 & udOutputEdit.ListIndex~=0, ud.ModelData.DataU.Name = udInputEdit.String; ud.ModelData.DataU.Object = ... ud.ListData.Objects{udInputEdit.ListIndex}; ud.ModelData.DataY.Name = udOutputEdit.String; ud.ModelData.DataY.Object = ... ud.ListData.Objects{udOutputEdit.ListIndex}; size_U=size(ud.ModelData.DataU.Object); size_Y=size(ud.ModelData.DataY.Object); if (size_U(1)>1 & size_U(2)>1) | (size_Y(1)>1 & size_Y(2)>1) warndlg('The Input and Output arrays must be row (1xN) or column (Nx1) variables.',... 'Import Warning','modal'); return end size_U=size(ud.ModelData.DataU.Object,1); if size_U<=1 size_U=size(ud.ModelData.DataU.Object,2); if size_U<=1 warndlg('The Input Array must be empty or have only one element.',... 'Import Warning','modal'); return end end size_Y=size(ud.ModelData.DataY.Object,1); if size_Y<=1 size_Y=size(ud.ModelData.DataY.Object,2); if size_Y<=1 warndlg('The Output Array must be empty or have only one element.',... 'Import Warning','modal'); return end end if size_U ~= size_Y warndlg('The Input and Output arrays must have the same dimensions.',... 'Import Warning','modal'); return end ImportStr=get(ud.Handles.FileNameEdit,'String'); if strcmp(ud.Handles.type_net,'narma_l2') | strcmp(ud.Handles.type_net,'nnpredict') ... | strcmp(ud.Handles.type_net,'nnmodref') nnident('have_file',ImportStr,ud.ModelData.DataU.Name,ud.ModelData.DataY.Name); elseif strcmp(ud.Handles.type_net,'ref') nnmodref('have_file',ImportStr,ud.ModelData.DataU.Name,ud.ModelData.DataY.Name); end DataOK=1; end figure_variables=get(ud.Handles.parent,'userdata'); parent_simulink=get(figure_variables.gcbh_ptr,'userdata'); if DataOK H=get(ud.Handles.parent,'userdata'); arg1=get(H.gcbh_ptr,'userdata'); arg2=get(H.gcb_ptr,'userdata'); if strcmp('ref',ud.Handles.type_net) nnmodref('',arg1,arg2,''); else nnident('',arg1,arg2,''); end delete(fig) return end end warndlg('You must define the variables to be imported.',... 'Import Warning','modal'); set(fig,'UserData',ud) uiresume(fig) end %-----------------------------Internal Functions-------------------------- %%%%%%%%%%%%%%%%%%%%%%% %%% LocalFinishLoad %%% %%%%%%%%%%%%%%%%%%%%%%% function LocalFinishLoad(ImportFig,ud,FileName,Data) %---Update the FileNameEdit Userdata [P,F]=fileparts(FileName); udNames = get(ud.Handles.FileNameEdit,'UserData'); udNames.PathName=P; udNames.FileName=F; set(ud.Handles.FileNameEdit,'UserData',udNames) %---Update the Import Figure Userdata set(ud.Handles.ModelList,'String',Data.Names,'value',1) ud.ListData=Data; set(ImportFig,'UserData',ud); function uipos = getuipos sunits = get(0, 'Units'); set (0, 'Units', 'character'); ssinchar = get(0, 'ScreenSize'); set (0, 'Units', sunits); outborder = 1.3333; inborder = 1; framew = 33; butwsmall = 6; butwbig = framew-(inborder*2); butwmed = 12; labelh = 1.53846; labelw = framew - (2*outborder); figw = (3*framew) + (2*outborder) + (3*inborder) + butwsmall; figh = 16.53846; figl = (ssinchar(3) - figw) / 2; figb = (ssinchar(4) - figh) / 2; uipos.fig = [figl,figb,figw,figh]; uipos.h1_1 = [outborder,0.692308,framew,9.61538]; % frame1 : Type of Data uipos.h1_2 = [outborder,10.9231,framew,4.23077]; % frame 2 : Import From uipos.h1_5 = [outborder+framew+inborder,3.38462,framew,11.7692]; %frame3 : Workspace Contents uipos.h1_6 = [outborder+framew*2+inborder*3+butwsmall,3.38462,framew,11.7692]; %frame4 % Input Output Variables uipos.h1_8 = [uipos.h1_5(1),0.692308,(2*framew)+(2*inborder)+butwsmall,2.15385]; %frame5 : Bottom Frame uipos.h1_3 = [uipos.h1_1(1)+((framew-17)/2),9.23077,17,labelh]; uipos.h1_4 = [uipos.h1_2(1)+((framew-16)/2),14,16,labelh]; uipos.ModelText = [uipos.h1_5(1)+((framew-22)/2),14.1538,22,labelh]; uipos.h1_7 = [uipos.h1_6(1)+((framew-26)/2),14.1538,26,labelh]; uipos.Sbutton = [2*outborder,12.8462,labelw,labelh]; uipos.Abutton = [2*outborder,11.0769,labelw,labelh]; uipos.Wbutton = [2*outborder,8.07692,labelw,labelh]; uipos.Mbutton = [2*outborder,6.23077,labelw,labelh]; uipos.FileNameText = [2*outborder,4.46154,labelw,labelh]; uipos.FileNameEdit = [2*outborder,3,labelw,labelh]; uipos.BrowseButton = [2*outborder,1.07692,labelw,labelh]; uipos.ModelList = [outborder+framew+(2*inborder),3.76923,framew-(2*inborder),10.6923]; tcl = (2*outborder)+(2*framew)+(3*inborder)+butwsmall; uipos.DataText = [tcl,11.7692,labelw,labelh]; uipos.DataEdit = [tcl,10.6923,labelw,labelh]; uipos.DataButton = [tcl-(2*inborder)-butwsmall,10.6923,butwsmall,labelh]; uipos.InputText = [tcl,8.46154,labelw,labelh]; uipos.InputEdit = [tcl,7.38462,labelw,labelh]; uipos.InputButton = [tcl-(2*inborder)-butwsmall,7.38462,butwsmall,labelh]; uipos.OutputText = [tcl,5.15385,labelw,labelh]; uipos.OutputEdit = [tcl,4.07692,labelw,labelh]; uipos.OutputButton = [tcl-(2*inborder)-butwsmall,4.07692,butwsmall,labelh]; uipos.CancelButton = [figw-(2*outborder)-butwmed,1,butwmed,labelh]; uipos.OKButton = [uipos.CancelButton(1)-inborder-butwmed,1,butwmed,labelh]; uipos.HelpButton = [uipos.OKButton(1)-inborder-butwmed,1,butwmed,labelh];