📄 preprocess.m
字号:
set(pre_h,'UserData',preh_udata);end man_h=findobj(get(0,'Children'),'Tag','Management');if ~isempty(man_h) figure(man_h); return;endh0 = figure('BackingStore','off', ... 'Color',[0.8 0.8 0.8], ... 'Name','Data Set Management', ... 'PaperPosition',[18 180 576 432], ... 'PaperUnits','points', ... 'Position',[753 523 324 470], ... 'RendererMode','manual', ... 'Tag','Management');h1 = uicontrol('Parent',h0, ... 'Units','normalized', ... 'BackgroundColor',[1 1 1], ... 'FontWeight','demi', ... 'HorizontalAlignment','left', ... 'ListboxTop',0, ... 'Max',2, ... 'Position',[0.02777777777777778 0.0723404255319149 0.7716049382716049 0.1914893617021277], ... 'String',' ', ... 'Style','edit', ... 'Tag','EditText1');data.new_c_name_h = h1;h1 = uicontrol('Parent',h0, ... 'Callback','preprocess rename comp',... 'Units','normalized', ... 'FontSize',6, ... 'FontWeight','demi', ... 'ListboxTop',0, ... 'Position',[0.8240740740740741 0.2106382978723404 0.154320987654321 0.05319148936170213], ... 'String','RENAME', ... 'Tag','Pushbutton1');h1 = uicontrol('Parent',h0, ... 'Callback','preprocess close_sD',... 'Units','normalized', ... 'FontWeight','demi', ... 'ListboxTop',0, ... 'Position',[0.8240740740740741 0.01914893617021277 0.154320987654321 0.05319148936170213], ... 'String','CLOSE', ... 'Tag','Pushbutton2');h1 = uicontrol('Parent',h0, ... 'Units','normalized', ... 'BackgroundColor',[0.8 0.8 0.8], ... 'FontWeight','demi', ... 'HorizontalAlignment','left', ... 'ListboxTop',0, ... 'Position',[0.02777777777777778 0.2680851063829787 0.345679012345679 0.02978723404255319], ... 'String','COMPONENTS:', ... 'Style','text', ... 'Tag','StaticText1');h1 = uicontrol('Parent',h0, ... 'Units','normalized', ... 'BackgroundColor',[1 1 1], ... 'HorizontalAlignment','left', ... 'Position',[0.02777777777777778 0.3170212765957447 0.3549382716049382 0.5319148936170213], ... 'String',' ', ... 'Style','listbox', ... 'Tag','Listbox1', ... 'Value',1);data.sets_h=h1;h1 = uicontrol('Parent',h0, ... 'Units','normalized', ... 'BackgroundColor',[1 1 1], ... 'HorizontalAlignment','left', ... 'Position',[0.6234567901234568 0.3170212765957447 0.3549382716049382 0.5319148936170213], ... 'String',' ', ... 'Style','listbox', ... 'Tag','Listbox2', ... 'Value',1);data.variables_h = h1;h1 = uicontrol('Parent',h0, ... 'Callback','preprocess export',... 'Units','normalized', ... 'FontWeight','demi', ... 'ListboxTop',0, ... 'Position',[0.4259259259259259 0.551063829787234 0.154320987654321 0.0425531914893617], ... 'String','->', ... 'Tag','Pushbutton4');h1 = uicontrol('Parent',h0, ... 'Callback','preprocess import',... 'Units','normalized', ... 'FontWeight','demi', ... 'ListboxTop',0, ... 'Position',[0.4259259259259259 0.625531914893617 0.154320987654321 0.0425531914893617], ... 'String','<-', ... 'Tag','Pushbutton3');h1 = uicontrol('Parent',h0, ... 'Units','normalized', ... 'BackgroundColor',[0.8 0.8 0.8], ... 'FontWeight','demi', ... 'HorizontalAlignment','left', ... 'ListboxTop',0, ... 'Position',[0.02777777777777778 0.8531914893617022 0.2993827160493827 0.02978723404255319], ... 'String','DATA SETS', ... 'Style','text', ... 'Tag','StaticText2');h1 = uicontrol('Parent',h0, ... 'Units','normalized', ... 'BackgroundColor',[0.8 0.8 0.8], ... 'FontWeight','demi', ... 'HorizontalAlignment','left', ... 'ListboxTop',0, ... 'Position',[0.6234567901234568 0.8531914893617022 0.2561728395061728 0.02978723404255319], ... 'String','WORKSPACE', ... 'Style','text', ... 'Tag','StaticText3');h1 = uicontrol('Parent',h0, ... 'Callback','preprocess rename set',... 'Units','normalized', ... 'BackgroundColor',[1 1 1], ... 'HorizontalAlignment','left', ... 'ListboxTop',0, ... 'Position',[0.1820987654320987 0.9127659574468086 0.7808641975308641 0.0425531914893617], ... 'Style','edit', ... 'Tag','EditText2');data.new_name_h = h1;h1 = uicontrol('Parent',h0, ... 'Units','normalized', ... 'BackgroundColor',[0.8 0.8 0.8], ... 'FontWeight','demi', ... 'HorizontalAlignment','left', ... 'ListboxTop',0, ... 'Position',[0.02777777777777778 0.9127659574468086 0.1388888888888889 0.02978723404255319], ... 'String','NAME:', ... 'Style','text', ... 'Tag','StaticText4');ui_h=uimenu('Label','&Tools');uimenu(ui_h,'Label','Copy','Callback','preprocess copy_delete copy');uimenu(ui_h,'Label','Delete','Callback','preprocess copy_delete delete');uimenu(ui_h,'Label','Refresh','Callback','preprocess refresh');set(gcf,'UserData',data);set_var_names;sD_names;sD_stats;%%% Subfunction: set_var_names %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%function set_var_namesvariables_h=getfield(get(gcf,'UserData'),'variables_h');value=get(variables_h,'Value');len=evalin('base','length(who)');names=cell(len,1);for i=1:len string=cat(2,'getfield(who,{',num2str(i),'})'); names(i)=evalin('base',string);endset(variables_h,'String',names);if(value > length(names)) set(variables_h,'Value',1);end%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Subfunction: sD_names %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%function sD_namessets_h=getfield(get(gcf,'UserData'),'sets_h');pre_h=findobj(get(0,'Children'),'Tag','Preprocess');sD_set = getfield(get(pre_h,'UserData'),'sD_set');for i=1:length(sD_set) names{i,1}=cat(2,sprintf('#%d: ',i),sD_set(i).name);endset(sets_h,'String',names);%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Subfunction: sD_stats %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%function sD_statsman_h=findobj(get(0,'Children'),'Tag','Management');c_names_h=getfield(get(man_h,'UserData'),'new_c_name_h');sD_name_h=getfield(get(man_h,'UserData'),'new_name_h');pre_h=findobj(get(0,'Children'),'Tag','Preprocess');INDEX=getfield(getfield(get(pre_h,'UserData'),'sData'),'INDEX');MODIFIED=getfield(getfield(get(pre_h,'UserData'),'sData'),'MODIFIED');value=get(getfield(get(man_h,'UserData'),'sets_h'),'Value'); if value==INDEX data=get(pre_h,'UserData'); sData=rmfield(data.sData,[{'INDEX'};{'MODIFIED'}]); data.sD_set(INDEX)=sData; data.sData.MODIFIED=0; set(pre_h,'UserData',data);end sData=getfield(getfield(get(pre_h,'UserData'),'sD_set'),{value});string1=[{sData.name}];set(sD_name_h,'String',string1);set(c_names_h,'String',sData.comp_names);%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Subfunction: import %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%function import(varargin)if nargin==1 LOG=1; man_h=findobj(get(0,'Children'),'Tag','Management'); set(0,'CurrentFigure',man_h); name=varargin;else LOG=0;endvariables_h=getfield(get(gcf,'UserData'),'variables_h');pre_h=findobj(get(0,'Children'),'Tag','Preprocess');if ~LOG name=getfield(get(variables_h,'String'),{get(variables_h,'Value')});enderrstr='Data to be imported must be real matrix or ''som_data_struct''.';new_sD=evalin('base',name{1});if isempty(pre_h) errordlg('''Preprocess'' -figure does not exist. Terminating program...'); close_preprocess; return;endif isstr(new_sD) | (~isstruct(new_sD) & ~isreal(new_sD)) errordlg(errstr); return;elseif isstruct(new_sD) & length(new_sD) > 1 errordlg(errstr) return;elseif ~isstruct(new_sD) new_sD=som_data_struct(new_sD); new_sD.name=name{1};endnew_sD_names=fieldnames(new_sD);right_names=fieldnames(som_data_struct(1));for i=1:length(new_sD_names) if ~any(strcmp(new_sD_names(i),right_names)); errordlg(errstr); return; endenddata=get(pre_h,'UserData');data.sD_set(length(data.sD_set) + 1)=new_sD;if ~LOG data.LOG{length(data.LOG)+1}='% Import a data set from the workspace.'; data.LOG{length(data.LOG)+1}=cat(2,'preprocess(''import'',''',... name{1},''');');endset(pre_h,'UserData',data);sD_names;sD_stats;old =gcf;set(0,'CurrentFigure',pre_h);set_sD_stats;set(0,'CurrentFigure',old);%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Subfunction: export %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%function export(varargin)if nargin == 1 LOG=1; man_h=findobj(get(0,'Children'),'Tag','Management'); set(0,'CurrentFigure',man_h); index=str2num(varargin{1}); else LOG=0;endsets_h=getfield(get(gcf,'UserData'),'sets_h');pre_h=findobj(get(0,'Children'),'Tag','Preprocess');if ~LOG index=get(sets_h,'Value');endif isempty(pre_h) errordlg('''Preprocess''-figure does not exist. Terminating program...'); close(findobj(get(0,'Children'),'Tag','Management')); close(findobj(get(0,'Children'),'Tag','PlotWin')); return;endsData=getfield(getfield(get(pre_h,'UserData'),'sD_set'),{index});if ~isvalid_var_name({sData.name}) return;endassignin('base',sData.name,sData);disp(sprintf('Data set ''%s'' is set to the workspace.',sData.name));if ~LOG data=get(pre_h,'UserData'); data.LOG{length(data.LOG)+1}='% Export a data set to the workspace.'; data.LOG{length(data.LOG)+1}=cat(2,'preprocess(''export'',''',... num2str(index),''');'); set(pre_h,'UserData',data);endset_var_names;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Subfunction: rename %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%function rename(arg)i=1;while i <= length(arg) & arg(i) ~= ' ' i=i+1;endarg2=arg(i+1:length(arg));arg=arg(1:i-1);if ~isempty(arg2) LOG=1; i=1; if arg2(1) ~= '{' while i <= length(arg2) & arg2(i) ~= ' ' i=i+1; end index=str2num(arg2(i+1:length(arg2))); arg2=arg2(1:i-1); else while i <= length(arg2) & arg2(i) ~= '}' i=i+1; end index=str2num(arg2(i+1:length(arg2))); arg2=arg2(1:i); endelse LOG=0;endnew_name_h=getfield(get(gcf,'UserData'),'new_name_h');new_c_name_h=getfield(get(gcf,'UserData'),'new_c_name_h');pre_h=findobj(get(0,'Children'),'Tag','Preprocess');if isempty(pre_h) errordlg('''Preprocess'' -figure does not exist. Terminating program...'); close_preprocess; return;endswitch arg case 'set' if LOG name={arg2}; else name=get(new_name_h,'String'); end if ~isempty(name{1}) & ~any(isspace(name{1})) if ~isvalid_var_name(name) sD_stats; return; end if ~LOG index=get(getfield(get(gcf,'UserData'),'sets_h'),'Value'); end data=get(pre_h,'UserData'); tmp_set.name=name{1}; data.sD_set(index).name=name{1}; if data.sData.INDEX == index data.sData.name=name{1}; end if ~LOG data.LOG{length(data.LOG)+1}='% Rename a data set.'; data.LOG{length(data.LOG)+1}=cat(2,'preprocess(''rename'',''set ',... name{1},' ',... num2str(index),... ''');'); end set(pre_h,'UserData',data); sD_names; string=get(data.sD_set_h,'String'); string{index}=cat(2,sprintf('#%d: ',index),name{1}); set(data.sD_set_h,'String',string); string=get(data.sD_name_h,'String'); string{1}=cat(2,'Name: ',name{1}); if index==data.sData.INDEX set(data.sD_name_h,'String',string); end else sD_stats; end case 'comp' if ~LOG names=get(new_c_name_h,'String'); index=get(getfield(get(gcf,'UserData'),'sets_h'),'Value'); else names=eval(arg2); end if check_cell_names(names) data=get(pre_h,'UserData'); sData=data.sD_set(index); if length(sData.comp_names)==length(names) data.sD_set(index).comp_names=names; if index == data.sData.INDEX for i=1:length(names) names{i}=cat(2,sprintf('#%d: ',i),names{i}); end set(data.comp_names_h,'String',names); set(data.sel_comp_h,'String',names); end if ~LOG data.LOG{length(data.LOG)+1}='% Rename components.'; str='preprocess(''rename'',''comp {'; for i=1:length(names)-1 str=cat(2,str,'''''',names{i},''''','); end str=cat(2,str,'''''',names{length(names)},'''''} ',... num2str(index),''');'); data.LOG{length(data.LOG)+1}=str; else set(new_c_name_h,'String',names); end set(pre_h,'UserData',data); else errordlg('There are less components in data.'); sD_stats; return; end else sD_stats; endend%%% Subfunction: check_cell_names %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%function bool=check_cell_names(names)bool = 1;if isempty(names) bool= 0; return;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -