wolffd@0: function preprocess(sData,arg2) wolffd@0: wolffd@0: %PREPROCESS A GUI for data preprocessing. wolffd@0: % wolffd@0: % preprocess(sData) wolffd@0: % wolffd@0: % preprocess(sData) wolffd@0: % wolffd@0: % Launches a preprocessing GUI. The optional input argument can be wolffd@0: % either a data struct or a struct array of such. However, primarily wolffd@0: % the processed data sets are loaded to the application using the wolffd@0: % tools in the GUI. Also, the only way to get the preprocessed data wolffd@0: % sets back into the workspace is to use the tools in the GUI (press wolffd@0: % the button DATA SET MANAGEMENT). wolffd@0: % wolffd@0: % For a more throughout description, see online documentation. wolffd@0: % See also SOM_GUI. wolffd@0: wolffd@0: %%%%%%%%%%%% DETAILED DESCRIPTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% wolffd@0: % wolffd@0: % IN FILES: preprocess.html,preproc.jpg,sDman.jpg,clip.jpg,delay.jpg,window.jpg,selVect.jpg wolffd@0: wolffd@0: % Contributed to SOM Toolbox vs2, February 2nd, 2000 by Juha Parhankangas wolffd@0: % Copyright (c) by Juha Parhankangas and the SOM Toolbox team wolffd@0: wolffd@0: % http://www.cis.hut.fi/projects/somtoolbox/ wolffd@0: wolffd@0: % Juha Parhankangas 050100 wolffd@0: wolffd@0: global no_of_sc % every Nth component in 'relative values' is drawn stronger. wolffd@0: no_of_sc=5; wolffd@0: wolffd@0: if nargin < 1 | nargin > 2 wolffd@0: error('Invalid number of input arguments'); wolffd@0: return; wolffd@0: end wolffd@0: wolffd@0: if nargin == 1, arg2=[]; end wolffd@0: wolffd@0: if ~isstr(sData) %%% Preprocess is started... wolffd@0: data.LOG{1}='% Starting the ''Preprocess'' -window...'; wolffd@0: data.LOG{2}=cat(2,'preprocess(',... wolffd@0: sprintf('%s);',inputname(1))); wolffd@0: wolffd@0: pre_h=findobj(get(0,'Children'),'Tag','Preprocess'); wolffd@0: if ~isempty(pre_h) wolffd@0: figure(pre_h); wolffd@0: msgbox('''Preprocess''-figure already exists.'); wolffd@0: return; wolffd@0: end wolffd@0: wolffd@0: h0 = figure('Color',[0.8 0.8 0.8], ... wolffd@0: 'PaperPosition',[18 180 576 432], ... wolffd@0: 'PaperUnits','points', ... wolffd@0: 'Position',[595 216 600 775], ... wolffd@0: 'Tag','Preprocess'); wolffd@0: wolffd@0: h1 = uicontrol('Parent',h0, ... wolffd@0: 'Units','normalized', ... wolffd@0: 'BackgroundColor',[0.752941176470588 0.752941176470588 0.752941176470588], ... wolffd@0: 'FontWeight','demi', ... wolffd@0: 'HorizontalAlignment','left', ... wolffd@0: 'ListboxTop',0, ... wolffd@0: 'Position',[0.015 0.06064516129032258 0.9550000000000001 0.1458064516129032], ... wolffd@0: 'Style','text', ... wolffd@0: 'Tag','StaticText1'); wolffd@0: wolffd@0: data.results_h = h1; wolffd@0: wolffd@0: h1 = uicontrol('Parent',h0, ... wolffd@0: 'Units','normalized', ... wolffd@0: 'BackgroundColor',[0.752941176470588 0.752941176470588 0.752941176470588], ... wolffd@0: 'Callback','preprocess close', ... wolffd@0: 'FontWeight','demi', ... wolffd@0: 'ListboxTop',0, ... wolffd@0: 'Position',[0.8067 0.0142 0.1667 0.0348],... wolffd@0: 'String','CLOSE', ... wolffd@0: 'Tag','Pushbutton1'); wolffd@0: wolffd@0: h1 = uicontrol('Parent',h0, ... wolffd@0: 'Units','normalized', ... wolffd@0: 'BackgroundColor',[0.8 0.8 0.8], ... wolffd@0: 'FontWeight','demi', ... wolffd@0: 'HorizontalAlignment','left', ... wolffd@0: 'ListboxTop',0, ... wolffd@0: 'Position',[0.01833333333333333 0.2141935483870968 0.07000000000000001 0.01806451612903226], ... wolffd@0: 'String','LOG', ... wolffd@0: 'Style','text', ... wolffd@0: 'Tag','StaticText2'); wolffd@0: wolffd@0: h1 = uicontrol('Parent',h0, ... wolffd@0: 'Units','normalized', ... wolffd@0: 'BackgroundColor',[0.752941176470588 0.752941176470588 0.752941176470588], ... wolffd@0: 'Callback','preprocess sel_comp',... wolffd@0: 'FontWeight','demi', ... wolffd@0: 'ListboxTop',0, ... wolffd@0: 'Position',[0.7983333333333333 0.2090322580645161 0.1666666666666667 0.03483870967741935], ... wolffd@0: 'String',' ', ... wolffd@0: 'Style','popupmenu', ... wolffd@0: 'Tag','sel_comp_h', ... wolffd@0: 'Value',1); wolffd@0: wolffd@0: data.sel_comp_h=h1; wolffd@0: wolffd@0: h1 = uicontrol('Parent',h0, ... wolffd@0: 'Units','normalized', ... wolffd@0: 'BackgroundColor',[1 1 1], ... wolffd@0: 'ListboxTop',0, ... wolffd@0: 'Position',[0.0183 0.2568 0.2133 0.1290], ... wolffd@0: 'Style','text', ... wolffd@0: 'Tag','StaticText3'); wolffd@0: wolffd@0: data.sel_cdata_h=h1; wolffd@0: wolffd@0: h1 = axes('Parent',h0, ... wolffd@0: 'CameraUpVector',[0 1 0], ... wolffd@0: 'CameraUpVectorMode','manual', ... wolffd@0: 'Color',[1 1 1], ... wolffd@0: 'Position',[0.2583 0.2568 0.2133 0.1290], ... wolffd@0: 'Tag','Axes1', ... wolffd@0: 'XColor',[0 0 0], ... wolffd@0: 'XTickLabel',['0 ';'0.5';'1 '], ... wolffd@0: 'XTickLabelMode','manual', ... wolffd@0: 'XTickMode','manual', ... wolffd@0: 'YColor',[0 0 0], ... wolffd@0: 'YTickMode','manual', ... wolffd@0: 'ZColor',[0 0 0]); wolffd@0: wolffd@0: data.sel_chist_h=h1; wolffd@0: wolffd@0: h2 = text('Parent',h1, ... wolffd@0: 'Color',[0 0 0], ... wolffd@0: 'HandleVisibility','off', ... wolffd@0: 'HorizontalAlignment','center', ... wolffd@0: 'Position',[0.4960629921259843 -0.08080808080808044 9.160254037844386], ... wolffd@0: 'Tag','Axes1Text4', ... wolffd@0: 'VerticalAlignment','cap'); wolffd@0: set(get(h2,'Parent'),'XLabel',h2); wolffd@0: h2 = text('Parent',h1, ... wolffd@0: 'Color',[0 0 0], ... wolffd@0: 'HandleVisibility','off', ... wolffd@0: 'HorizontalAlignment','center', ... wolffd@0: 'Position',[-0.0551181102362206 0.4848484848484853 9.160254037844386], ... wolffd@0: 'Rotation',90, ... wolffd@0: 'Tag','Axes1Text3', ... wolffd@0: 'VerticalAlignment','baseline'); wolffd@0: set(get(h2,'Parent'),'YLabel',h2); wolffd@0: h2 = text('Parent',h1, ... wolffd@0: 'Color',[0 0 0], ... wolffd@0: 'HandleVisibility','off', ... wolffd@0: 'HorizontalAlignment','right', ... wolffd@0: 'Position',[-1.2283 5.7980 9.1603], ... wolffd@0: 'Tag','Axes1Text2', ... wolffd@0: 'Visible','off'); wolffd@0: set(get(h2,'Parent'),'ZLabel',h2); wolffd@0: h2 = text('Parent',h1, ... wolffd@0: 'Color',[0 0 0], ... wolffd@0: 'HandleVisibility','off', ... wolffd@0: 'HorizontalAlignment','center', ... wolffd@0: 'Position',[0.4960629921259843 1.070707070707071 9.160254037844386], ... wolffd@0: 'Tag','Axes1Text1', ... wolffd@0: 'VerticalAlignment','bottom'); wolffd@0: set(get(h2,'Parent'),'Title',h2); wolffd@0: wolffd@0: h1 = axes('Parent',h0, ... wolffd@0: 'CameraUpVector',[0 1 0], ... wolffd@0: 'CameraUpVectorMode','manual', ... wolffd@0: 'Color',[0.7529 0.7529 0.7529], ... wolffd@0: 'Position',[0.4950000000000001 0.2567741935483871 0.4766666666666667 0.1290322580645161], ... wolffd@0: 'Tag','Axes2', ... wolffd@0: 'XColor',[0 0 0], ... wolffd@0: 'XTickMode','manual', ... wolffd@0: 'YColor',[0 0 0], ... wolffd@0: 'YTick',[0 0.5 1], ... wolffd@0: 'YTickMode','manual', ... wolffd@0: 'ZColor',[0 0 0]); wolffd@0: wolffd@0: data.vector_h=h1; wolffd@0: wolffd@0: h2 = text('Parent',h1, ... wolffd@0: 'Color',[0 0 0], ... wolffd@0: 'HandleVisibility','off', ... wolffd@0: 'HorizontalAlignment','center', ... wolffd@0: 'Position',[0.4982456140350879 -0.08080808080808044 9.160254037844386], ... wolffd@0: 'Tag','Axes2Text4', ... wolffd@0: 'VerticalAlignment','cap'); wolffd@0: set(get(h2,'Parent'),'XLabel',h2); wolffd@0: h2 = text('Parent',h1, ... wolffd@0: 'Color',[0 0 0], ... wolffd@0: 'HandleVisibility','off', ... wolffd@0: 'HorizontalAlignment','center', ... wolffd@0: 'Position',[-0.1018 0.4848 9.1603], ... wolffd@0: 'Rotation',90, ... wolffd@0: 'Tag','Axes2Text3', ... wolffd@0: 'VerticalAlignment','baseline'); wolffd@0: set(get(h2,'Parent'),'YLabel',h2); wolffd@0: h2 = text('Parent',h1, ... wolffd@0: 'Color',[0 0 0], ... wolffd@0: 'HandleVisibility','off', ... wolffd@0: 'HorizontalAlignment','right', ... wolffd@0: 'Position',[-1.045614035087719 5.797979797979799 9.160254037844386], ... wolffd@0: 'Tag','Axes2Text2', ... wolffd@0: 'Visible','off'); wolffd@0: set(get(h2,'Parent'),'ZLabel',h2); wolffd@0: h2 = text('Parent',h1, ... wolffd@0: 'Color',[0 0 0], ... wolffd@0: 'HandleVisibility','off', ... wolffd@0: 'HorizontalAlignment','center', ... wolffd@0: 'Position',[0.4982456140350879 1.070707070707071 9.160254037844386], ... wolffd@0: 'Tag','Axes2Text1', ... wolffd@0: 'VerticalAlignment','bottom'); wolffd@0: set(get(h2,'Parent'),'Title',h2); wolffd@0: wolffd@0: h1 = uicontrol('Parent',h0, ... wolffd@0: 'Units','normalized', ... wolffd@0: 'BackgroundColor',[0.8 0.8 0.8], ... wolffd@0: 'FontWeight','demi', ... wolffd@0: 'HorizontalAlignment','left', ... wolffd@0: 'ListboxTop',0, ... wolffd@0: 'Position',[0.01833333333333333 0.3922580645161291 0.17 0.01806451612903226], ... wolffd@0: 'String','STATISTICS', ... wolffd@0: 'Style','text', ... wolffd@0: 'Tag','StaticText4'); wolffd@0: wolffd@0: h1 = uicontrol('Parent',h0, ... wolffd@0: 'Units','normalized', ... wolffd@0: 'BackgroundColor',[0.8 0.8 0.8], ... wolffd@0: 'FontWeight','demi', ... wolffd@0: 'HorizontalAlignment','left', ... wolffd@0: 'ListboxTop',0, ... wolffd@0: 'Position',[0.2583333333333334 0.3922580645161291 0.1633333333333333 0.01806451612903226], ... wolffd@0: 'String','HISTOGRAM', ... wolffd@0: 'Style','text', ... wolffd@0: 'Tag','StaticText5'); wolffd@0: wolffd@0: h1 = uicontrol('Parent',h0, ... wolffd@0: 'Units','normalized', ... wolffd@0: 'BackgroundColor',[0.8 0.8 0.8], ... wolffd@0: 'FontWeight','demi',... wolffd@0: 'FontSize',6,... wolffd@0: 'HorizontalAlignment','left',... wolffd@0: 'String',{'LEFT: NEW SELECTION';'RIGHT: ADD TO SELECTION'}, ... wolffd@0: 'ListboxTop',0, ... wolffd@0: 'Position',[0.5016666666666667 0.38 0.235 0.03741935483870968], ... wolffd@0: 'Style','text', ... wolffd@0: 'Tag','StaticText6', ... wolffd@0: 'UserData','[ ]'); wolffd@0: wolffd@0: h1 = uicontrol('Parent',h0, ... wolffd@0: 'Units','normalized', ... wolffd@0: 'BackgroundColor',[0.752941176470588 0.752941176470588 0.752941176470588], ... wolffd@0: 'Callback','preprocess selall', ... wolffd@0: 'FontWeight','demi', ... wolffd@0: 'ListboxTop',0, ... wolffd@0: 'Position',[0.8066666666666668 0.3922580645161291 0.1666666666666667 0.03483870967741935], ... wolffd@0: 'String','SELECT ALL', ... wolffd@0: 'Tag','Pushbutton2', ... wolffd@0: 'UserData','[ ]'); wolffd@0: wolffd@0: h1 = uicontrol('Parent',h0, ... wolffd@0: 'Units','normalized', ... wolffd@0: 'BackgroundColor',[0.7529 0.7529 0.7529], ... wolffd@0: 'Position',[0.01833333333333333 0.4503225806451613 0.23 0.3225806451612903], ... wolffd@0: 'String',' ', ... wolffd@0: 'Style','listbox', ... wolffd@0: 'Tag','Listbox1', ... wolffd@0: 'Value',1); wolffd@0: wolffd@0: data.comp_names_h=h1; wolffd@0: wolffd@0: h1 = uicontrol('Parent',h0, ... wolffd@0: 'Units','normalized', ... wolffd@0: 'BackgroundColor',[1 1 1], ... wolffd@0: 'Position',[0.4950000000000001 0.4503225806451613 0.2333333333333333 0.3225806451612903], ... wolffd@0: 'String',' ', ... wolffd@0: 'Style','listbox', ... wolffd@0: 'Tag','Listbox2', ... wolffd@0: 'Value',1); wolffd@0: wolffd@0: data.vect_mean_h = h1; wolffd@0: wolffd@0: h1 = axes('Parent',h0, ... wolffd@0: 'CameraUpVector',[0 1 0], ... wolffd@0: 'CameraUpVectorMode','manual', ... wolffd@0: 'Color',[1 1 1], ... wolffd@0: 'Position',[0.7383333333333334 0.4503225806451613 0.2333333333333333 0.3225806451612903], ... wolffd@0: 'Tag','Axes3', ... wolffd@0: 'XColor',[0 0 0], ... wolffd@0: 'XTickMode','manual', ... wolffd@0: 'YColor',[0 0 0], ... wolffd@0: 'YTickMode','manual', ... wolffd@0: 'ZColor',[0 0 0]); wolffd@0: wolffd@0: data.sel_cplot_h = h1; wolffd@0: wolffd@0: h2 = text('Parent',h1, ... wolffd@0: 'Color',[0 0 0], ... wolffd@0: 'HandleVisibility','off', ... wolffd@0: 'HorizontalAlignment','center', ... wolffd@0: 'Position',[0.4964028776978418 -0.03212851405622486 9.160254037844386], ... wolffd@0: 'Tag','Axes3Text4', ... wolffd@0: 'VerticalAlignment','cap'); wolffd@0: set(get(h2,'Parent'),'XLabel',h2); wolffd@0: h2 = text('Parent',h1, ... wolffd@0: 'Color',[0 0 0], ... wolffd@0: 'HandleVisibility','off', ... wolffd@0: 'HorizontalAlignment','center', ... wolffd@0: 'Position',[-0.05035971223021596 0.493975903614458 9.160254037844386], ... wolffd@0: 'Rotation',90, ... wolffd@0: 'Tag','Axes3Text3', ... wolffd@0: 'VerticalAlignment','baseline'); wolffd@0: set(get(h2,'Parent'),'YLabel',h2); wolffd@0: h2 = text('Parent',h1, ... wolffd@0: 'Color',[0 0 0], ... wolffd@0: 'HandleVisibility','off', ... wolffd@0: 'HorizontalAlignment','right', ... wolffd@0: 'Position',[-3.1942 1.7028 9.1603], ... wolffd@0: 'Tag','Axes3Text2', ... wolffd@0: 'Visible','off'); wolffd@0: set(get(h2,'Parent'),'ZLabel',h2); wolffd@0: h2 = text('Parent',h1, ... wolffd@0: 'Color',[0 0 0], ... wolffd@0: 'HandleVisibility','off', ... wolffd@0: 'HorizontalAlignment','center', ... wolffd@0: 'Position',[0.4964028776978418 1.028112449799197 9.160254037844386], ... wolffd@0: 'Tag','Axes3Text1', ... wolffd@0: 'VerticalAlignment','bottom'); wolffd@0: set(get(h2,'Parent'),'Title',h2); wolffd@0: wolffd@0: h1 = uicontrol('Parent',h0, ... wolffd@0: 'Units','normalized', ... wolffd@0: 'BackgroundColor',[0.752941176470588 0.752941176470588 0.752941176470588], ... wolffd@0: 'Callback','preprocess plxy', ... wolffd@0: 'FontWeight','demi', ... wolffd@0: 'ListboxTop',0, ... wolffd@0: 'Position',[0.265 0.4683870967741936 0.125 0.03483870967741935], ... wolffd@0: 'String','XY-PLOT', ... wolffd@0: 'Tag','Pushbutton3'); wolffd@0: wolffd@0: h1 = uicontrol('Parent',h0, ... wolffd@0: 'Units','normalized', ... wolffd@0: 'BackgroundColor',[0.752941176470588 0.752941176470588 0.752941176470588], ... wolffd@0: 'Callback','preprocess hist', ... wolffd@0: 'FontWeight','demi', ... wolffd@0: 'ListboxTop',0, ... wolffd@0: 'Position',[0.265 0.5303225806451613 0.125 0.03483870967741935], ... wolffd@0: 'String','HISTOGRAM', ... wolffd@0: 'Tag','Pushbutton4'); wolffd@0: wolffd@0: h1 = uicontrol('Parent',h0, ... wolffd@0: 'Units','normalized', ... wolffd@0: 'BackgroundColor',[0.752941176470588 0.752941176470588 0.752941176470588], ... wolffd@0: 'Callback','preprocess bplo', ... wolffd@0: 'FontWeight','demi', ... wolffd@0: 'ListboxTop',0, ... wolffd@0: 'Position',[0.265 0.5922580645161291 0.125 0.03483870967741935], ... wolffd@0: 'String','BOX PLOT', ... wolffd@0: 'Tag','Pushbutton5'); wolffd@0: wolffd@0: h1 = uicontrol('Parent',h0, ... wolffd@0: 'Units','normalized', ... wolffd@0: 'BackgroundColor',[0.752941176470588 0.752941176470588 0.752941176470588], ... wolffd@0: 'Callback','preprocess plot', ... wolffd@0: 'FontWeight','demi', ... wolffd@0: 'ListboxTop',0, ... wolffd@0: 'Position',[0.265 0.654195483870968 0.125 0.03483870967741935], ... wolffd@0: 'String','PLOT', ... wolffd@0: 'Tag','Pushbutton6'); wolffd@0: wolffd@0: h1 = uicontrol('Parent',h0, ... wolffd@0: 'Units','normalized', ... wolffd@0: 'BackgroundColor',[1 1 1], ... wolffd@0: 'ListboxTop',0, ... wolffd@0: 'Position',[0.4088888888888889 0.5333333333333333 0.06 0.03268817204301075], ... wolffd@0: 'String','30', ... wolffd@0: 'Style','edit', ... wolffd@0: 'Tag','EditText1'); wolffd@0: wolffd@0: data.no_of_bins_h = h1; wolffd@0: wolffd@0: wolffd@0: h1 = uicontrol('Parent',h0, ... wolffd@0: 'Units','normalized', ... wolffd@0: 'BackgroundColor',[0.8 0.8 0.8], ... wolffd@0: 'FontWeight','demi', ... wolffd@0: 'HorizontalAlignment','left', ... wolffd@0: 'ListboxTop',0, ... wolffd@0: 'Position',[0.01833333333333333 0.775483870967742 0.2016666666666667 0.01806451612903226], ... wolffd@0: 'String','COMPONENT LIST', ... wolffd@0: 'Style','text', ... wolffd@0: 'Tag','StaticText7'); wolffd@0: wolffd@0: h1 = uicontrol('Parent',h0, ... wolffd@0: 'Units','normalized', ... wolffd@0: 'BackgroundColor',[0.8 0.8 0.8], ... wolffd@0: 'FontWeight','demi', ... wolffd@0: 'HorizontalAlignment','left', ... wolffd@0: 'ListboxTop',0, ... wolffd@0: 'Position',[0.4950000000000001 0.775483870967742 0.1966666666666667 0.01806451612903226], ... wolffd@0: 'String','AVERAGE', ... wolffd@0: 'Style','text', ... wolffd@0: 'Tag','StaticText8'); wolffd@0: wolffd@0: h1 = uicontrol('Parent',h0, ... wolffd@0: 'Units','normalized', ... wolffd@0: 'BackgroundColor',[0.8 0.8 0.8], ... wolffd@0: 'FontWeight','demi', ... wolffd@0: 'HorizontalAlignment','left', ... wolffd@0: 'ListboxTop',0, ... wolffd@0: 'Position',[0.7383333333333334 0.775483870967742 0.225 0.01806451612903226], ... wolffd@0: 'String','RELATIVE VALUES', ... wolffd@0: 'Style','text', ... wolffd@0: 'Tag','StaticText9'); wolffd@0: wolffd@0: h1 = uicontrol('Parent',h0, ... wolffd@0: 'Units','normalized', ... wolffd@0: 'BackgroundColor',[0.8 0.8 0.8], ... wolffd@0: 'FontSize',10, ... wolffd@0: 'FontWeight','demi', ... wolffd@0: 'HorizontalAlignment','left', ... wolffd@0: 'ListboxTop',0, ... wolffd@0: 'Position',[0.01833333333333333 0.8154838709677419 0.2033333333333333 0.0232258064516129], ... wolffd@0: 'String','COMPONENTS', ... wolffd@0: 'Style','text', ... wolffd@0: 'Tag','StaticText10'); wolffd@0: wolffd@0: h1 = uicontrol('Parent',h0, ... wolffd@0: 'Units','normalized', ... wolffd@0: 'BackgroundColor',[0.8 0.8 0.8], ... wolffd@0: 'FontSize',10, ... wolffd@0: 'FontWeight','demi', ... wolffd@0: 'HorizontalAlignment','left', ... wolffd@0: 'ListboxTop',0, ... wolffd@0: 'Position',[0.4950000000000001 0.8154838709677419 0.2 0.0232258064516129], ... wolffd@0: 'String','VECTORS', ... wolffd@0: 'Style','text', ... wolffd@0: 'Tag','StaticText11'); wolffd@0: wolffd@0: h1 = uicontrol('Parent',h0, ... wolffd@0: 'Units','normalized', ... wolffd@0: 'BackgroundColor',[0.752941176470588 0.752941176470588 0.752941176470588], ... wolffd@0: 'Callback','preprocess sD_management', ... wolffd@0: 'FontSize',5, ... wolffd@0: 'FontWeight','demi', ... wolffd@0: 'ListboxTop',0, ... wolffd@0: 'Position',[0.01833333333333333 0.8503225806451613 0.1666666666666667 0.03483870967741935], ... wolffd@0: 'String','DATA SET MANAGEMENT', ... wolffd@0: 'Tag','Pushbutton7'); wolffd@0: wolffd@0: h1 = uicontrol('Parent',h0, ... wolffd@0: 'Units','normalized', ... wolffd@0: 'Callback','preprocess sel_sD', ... wolffd@0: 'ListboxTop',0, ... wolffd@0: 'Position',[0.01833333333333333 0.8890322580645161 0.1666666666666667 0.03483870967741935], ... wolffd@0: 'String',' ', ... wolffd@0: 'Style','popupmenu', ... wolffd@0: 'Tag','PopupMenu2', ... wolffd@0: 'Value',1); wolffd@0: wolffd@0: data.sD_set_h = h1; wolffd@0: wolffd@0: h1 = uicontrol('Parent',h0, ... wolffd@0: 'Units','normalized', ... wolffd@0: 'BackgroundColor',[1 1 1], ... wolffd@0: 'ListboxTop',0, ... wolffd@0: 'Position',[0.2516666666666667 0.8503225806451613 0.7216666666666667 0.07354838709677419], ... wolffd@0: 'Style','text', ... wolffd@0: 'Tag','StaticText12'); wolffd@0: wolffd@0: data.sD_name_h = h1; wolffd@0: wolffd@0: h1 = uicontrol('Parent',h0, ... wolffd@0: 'Units','normalized', ... wolffd@0: 'BackgroundColor',[0.8 0.8 0.8], ... wolffd@0: 'FontSize',10, ... wolffd@0: 'FontWeight','demi', ... wolffd@0: 'HorizontalAlignment','left', ... wolffd@0: 'ListboxTop',0, ... wolffd@0: 'Position',[0.01833333333333333 0.9341935483870968 0.1616666666666667 0.02064516129032258], ... wolffd@0: 'String','DATA SETS', ... wolffd@0: 'Style','text', ... wolffd@0: 'Tag','StaticText13'); wolffd@0: wolffd@0: h1 = uicontrol('Parent',h0, ... wolffd@0: 'Units','normalized', ... wolffd@0: 'BackgroundColor',[0.8 0.8 0.8], ... wolffd@0: 'FontSize',10, ... wolffd@0: 'FontWeight','demi', ... wolffd@0: 'HorizontalAlignment','left', ... wolffd@0: 'ListboxTop',0, ... wolffd@0: 'Position',[0.2516666666666667 0.9341935483870968 0.2833333333333333 0.02064516129032258], ... wolffd@0: 'String','SELECTED DATA SET', ... wolffd@0: 'Style','text', ... wolffd@0: 'Tag','StaticText14'); wolffd@0: wolffd@0: if ~isstruct(sData), wolffd@0: sData=som_data_struct(sData); wolffd@0: end wolffd@0: wolffd@0: ui_h=uimenu('Label','&Normalization'); wolffd@0: uimenu(ui_h,'Label','Scale [0,1]','Callback','preprocess zscale'); wolffd@0: uimenu(ui_h,'Label','Scale var=1','Callback','preprocess vscale'); wolffd@0: uimenu(ui_h,'Label','HistD','Callback','preprocess histeq'); wolffd@0: uimenu(ui_h,'Label','HistC','Callback','preprocess histeq2'); wolffd@0: uimenu(ui_h,'Label','Log','Callback','preprocess log'); wolffd@0: uimenu(ui_h,'Label','Eval (1-comp)','Callback','preprocess eval1'); wolffd@0: wolffd@0: ui_h=uimenu('Label','&Components'); wolffd@0: uimenu(ui_h,'Label','Move component','Callback','preprocess move'); wolffd@0: uimenu(ui_h,'Label','Copy component','Callback','preprocess copy'); wolffd@0: uimenu(ui_h,'Label','Add: N binary types','Callback','preprocess oneo'); wolffd@0: uimenu(ui_h,'Label','Add: zeros','Callback','preprocess zero'); wolffd@0: uimenu(ui_h,'Label','Remove component','Callback','preprocess remove'); wolffd@0: uimenu(ui_h,'Label','Remove selected vectors',... wolffd@0: 'Callback','preprocess remove_vects'); wolffd@0: uimenu(ui_h,'Label','Select all components',... wolffd@0: 'Callback','preprocess sel_all_comps'); wolffd@0: wolffd@0: ui_h=uimenu('Label','&Misc'); wolffd@0: ui_h1=uimenu(ui_h,'Label','Calculate'); wolffd@0: ui_h2=uimenu(ui_h,'Label','Process'); wolffd@0: wolffd@0: uimenu(ui_h,'Label','Get LOG-file','Callback','preprocess LOG'); wolffd@0: uimenu(ui_h,'Label','Indices of the selected vectors',... wolffd@0: 'Callback','preprocess get_inds'); wolffd@0: uimenu(ui_h,'Label','Undo','Callback','preprocess undo'); wolffd@0: uimenu(ui_h1,'Label','Number of values','Callback','preprocess noof'); wolffd@0: uimenu(ui_h1,'Label','Number of selected vectors',... wolffd@0: 'Callback','preprocess no_of_sel'); wolffd@0: uimenu(ui_h1,'Label','Correlation','Callback','preprocess corr'); wolffd@0: uimenu(ui_h2,'Label','Unit length','Callback','preprocess unit'); wolffd@0: uimenu(ui_h2,'Label','Eval','Callback','preprocess eval2'); wolffd@0: uimenu(ui_h2,'Label','Clipping','Callback','preprocess clipping'); wolffd@0: uimenu(ui_h2,'Label','Delay','Callback','preprocess delay'); wolffd@0: uimenu(ui_h2,'Label','Windowed','Callback','preprocess window'); wolffd@0: uimenu(ui_h2,'Label','Select vectors','Callback','preprocess select'); wolffd@0: wolffd@0: len=getfield(size(sData(1).data),{1}); wolffd@0: data.selected_vects=find(ones(1,len)); wolffd@0: data.sD_set=sData; wolffd@0: set(data.vector_h,'ButtonDownFcn','preprocess(''vector_bdf'',''down'')'); wolffd@0: set(gcf,'UserData',data); wolffd@0: if ~set_sD_stats; wolffd@0: return; wolffd@0: end wolffd@0: sel_sD; wolffd@0: return; %%% Preprocess-window is ready. wolffd@0: wolffd@0: else wolffd@0: arg=sData; wolffd@0: if strcmp(arg,'rename') wolffd@0: rename(arg2); wolffd@0: elseif strcmp(arg,'sel_sD') wolffd@0: if isempty(arg2) wolffd@0: sel_sD; wolffd@0: else wolffd@0: sel_sD(arg2); wolffd@0: end wolffd@0: elseif strcmp(arg,'zscale') wolffd@0: if isempty(arg2) wolffd@0: zero2one_scale; wolffd@0: else wolffd@0: zero2one_scale(arg2); wolffd@0: end wolffd@0: elseif strcmp(arg,'vscale'); wolffd@0: if isempty(arg2) wolffd@0: var_scale; wolffd@0: else wolffd@0: var_scale(arg2); wolffd@0: end wolffd@0: elseif strcmp(arg,'histeq2') wolffd@0: if isempty(arg2) wolffd@0: hist_eq2; wolffd@0: else wolffd@0: hist_eq2(arg2); wolffd@0: end wolffd@0: elseif strcmp(arg,'log') wolffd@0: if isempty(arg2) wolffd@0: logarithm; wolffd@0: else wolffd@0: logarithm(arg2); wolffd@0: end wolffd@0: elseif strcmp(arg,'eval1') wolffd@0: if isempty(arg2) wolffd@0: eval1; wolffd@0: else wolffd@0: eval1(arg2); wolffd@0: end wolffd@0: elseif strcmp(arg,'eval2') wolffd@0: if isempty(arg2) wolffd@0: eval2; wolffd@0: else wolffd@0: eval2(arg2); wolffd@0: end wolffd@0: elseif strcmp(arg,'histeq'); wolffd@0: if isempty(arg2) wolffd@0: hist_eq; wolffd@0: else wolffd@0: hist_eq(arg2); wolffd@0: end wolffd@0: elseif strcmp(arg,'selall') wolffd@0: if isempty(arg2) wolffd@0: select_all; wolffd@0: else wolffd@0: select_all(arg2); wolffd@0: end wolffd@0: elseif strcmp(arg,'sel_button'); wolffd@0: if isempty(arg2) wolffd@0: sel_button; wolffd@0: else wolffd@0: sel_button(arg2); wolffd@0: end wolffd@0: elseif strcmp(arg,'clear_button') wolffd@0: if isempty(arg2) wolffd@0: clear_button; wolffd@0: else wolffd@0: clear_button(arg2) wolffd@0: end wolffd@0: elseif(strcmp(arg,'move')) wolffd@0: if isempty(arg2) wolffd@0: move_component; wolffd@0: else wolffd@0: move_component(arg2); wolffd@0: end wolffd@0: elseif(strcmp(arg,'copy')) wolffd@0: if isempty(arg2) wolffd@0: copy_component; wolffd@0: else wolffd@0: copy_component(arg2); wolffd@0: end wolffd@0: elseif strcmp(arg,'oneo') wolffd@0: if isempty(arg2) wolffd@0: one_of_n; wolffd@0: else wolffd@0: one_of_n(arg2); wolffd@0: end wolffd@0: elseif strcmp(arg,'zero') wolffd@0: if isempty(arg2) wolffd@0: add_zeros; wolffd@0: else wolffd@0: add_zeros(arg2); wolffd@0: end wolffd@0: elseif strcmp(arg,'remove') wolffd@0: if isempty(arg2) wolffd@0: remove_component; wolffd@0: else wolffd@0: remove_component(arg2); wolffd@0: end wolffd@0: elseif strcmp(arg,'remove_vects') wolffd@0: if isempty(arg2) wolffd@0: remove_vects; wolffd@0: else wolffd@0: remove_vects(arg2); wolffd@0: end wolffd@0: elseif strcmp(arg,'noof') wolffd@0: if isempty(arg2) wolffd@0: no_of_values; wolffd@0: else wolffd@0: no_of_values(arg2); wolffd@0: end wolffd@0: elseif strcmp(arg,'corr'); wolffd@0: if isempty(arg2) wolffd@0: correlation; wolffd@0: else wolffd@0: correlation(arg2); wolffd@0: end wolffd@0: elseif strcmp(arg,'unit') wolffd@0: if isempty(arg2) wolffd@0: unit_length; wolffd@0: else wolffd@0: unit_length(arg2); wolffd@0: end wolffd@0: elseif strcmp(arg,'clip_data') wolffd@0: clip_data(arg2); wolffd@0: elseif strcmp(arg,'copy_delete') wolffd@0: copy_delete(arg2); wolffd@0: elseif strcmp(arg,'and_or_cb') wolffd@0: and_or_cb(arg2); wolffd@0: elseif strcmp(arg,'all_sel_cb') wolffd@0: all_sel_cb(arg2); wolffd@0: elseif strcmp(arg,'clip_exp_cb') wolffd@0: clip_exp_cb(arg2); wolffd@0: elseif strcmp(arg,'window_cb') wolffd@0: window_cb(arg2); wolffd@0: elseif strcmp(arg,'set_state_vals') wolffd@0: set_state_vals(arg2); wolffd@0: elseif strcmp(arg,'vector_bdf') wolffd@0: vector_bdf(arg2); wolffd@0: elseif strcmp(arg,'sD_management'); wolffd@0: if isempty(arg2) wolffd@0: sD_management; wolffd@0: else wolffd@0: sD_management(arg2); wolffd@0: end wolffd@0: elseif strcmp(arg,'clipping') wolffd@0: if isempty(arg2) wolffd@0: clipping; wolffd@0: else wolffd@0: clipping(arg2); wolffd@0: end wolffd@0: elseif strcmp(arg,'delay') wolffd@0: if isempty(arg2) wolffd@0: delay; wolffd@0: else wolffd@0: delay(arg2); wolffd@0: end wolffd@0: elseif strcmp(arg,'window'); wolffd@0: if isempty(arg2) wolffd@0: window; wolffd@0: else wolffd@0: window(arg2); wolffd@0: end wolffd@0: elseif strcmp(arg,'select'); wolffd@0: if isempty(arg2) wolffd@0: select; wolffd@0: else wolffd@0: select(arg2); wolffd@0: end wolffd@0: elseif strcmp(arg,'import') wolffd@0: if isempty(arg2) wolffd@0: import; wolffd@0: else wolffd@0: import(arg2); wolffd@0: end wolffd@0: elseif strcmp(arg,'export') wolffd@0: if isempty(arg2) wolffd@0: export; wolffd@0: else wolffd@0: export(arg2); wolffd@0: end wolffd@0: elseif strcmp(arg,'undo'); wolffd@0: if isempty(arg2) wolffd@0: undo; wolffd@0: else wolffd@0: undo(arg2); wolffd@0: end wolffd@0: elseif strcmp(arg,'delay_data') wolffd@0: if isempty(arg2) wolffd@0: delay_data; wolffd@0: else wolffd@0: delay_data(arg2); wolffd@0: end wolffd@0: elseif strcmp(arg,'eval_windowed') wolffd@0: if isempty(arg2) wolffd@0: eval_windowed; wolffd@0: else wolffd@0: eval_windowed(arg2); wolffd@0: end wolffd@0: elseif strcmp(arg,'get_inds') wolffd@0: if isempty(arg2) wolffd@0: get_selected_inds; wolffd@0: else wolffd@0: get_selected_inds(arg2); wolffd@0: end wolffd@0: elseif strcmp(arg,'no_of_sel') wolffd@0: if isempty(arg2) wolffd@0: no_of_selected; wolffd@0: else wolffd@0: no_of_selected(arg2); wolffd@0: end wolffd@0: elseif strcmp(arg,'sel_comp'); wolffd@0: if isempty(arg2) wolffd@0: sel_comp; wolffd@0: else wolffd@0: sel_comp(arg2); wolffd@0: end wolffd@0: elseif strcmp(arg,'sel_all_comps') wolffd@0: if isempty(arg2) wolffd@0: select_all_comps; wolffd@0: else wolffd@0: select_all_comps(arg2); wolffd@0: end wolffd@0: elseif strcmp(arg,'refresh') wolffd@0: set_var_names; wolffd@0: elseif any(strcmp(arg,{'close_c','close_d','close_s','close_w','close_sD'})) wolffd@0: if isempty(arg2) wolffd@0: close_func(arg) wolffd@0: else wolffd@0: close_func(arg,arg2); wolffd@0: end wolffd@0: end wolffd@0: wolffd@0: wolffd@0: switch arg wolffd@0: case 'sD_stats' wolffd@0: sD_stats; wolffd@0: case 'LOG' wolffd@0: log_file; wolffd@0: otherwise wolffd@0: pro_tools(arg); wolffd@0: end wolffd@0: end wolffd@0: wolffd@0: %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% wolffd@0: wolffd@0: function set_compnames(sData,h) wolffd@0: wolffd@0: %SET_COMPNAMES wolffd@0: % wolffd@0: % set_compnames(sData,h) wolffd@0: % wolffd@0: % ARGUMENTS wolffd@0: % wolffd@0: % sData (struct) som_data_struct wolffd@0: % h (scalar) handle to a list box object wolffd@0: % wolffd@0: % wolffd@0: % This function sets the component names of sData to the list box wolffd@0: % indicated by 'h'. wolffd@0: % wolffd@0: wolffd@0: pre_h=findobj(get(0,'Children'),'Tag','Preprocess'); wolffd@0: wolffd@0: if isempty(pre_h) wolffd@0: error('Figure ''Preprocess'' does not exist. Closing program...'); wolffd@0: close_preprocess; wolffd@0: end wolffd@0: wolffd@0: udata=get(pre_h,'UserData'); wolffd@0: wolffd@0: set(h,'Value',[]); wolffd@0: for i=1:length(sData.comp_names) wolffd@0: tmp=sprintf('#%d: ',i); wolffd@0: names{i,1}=cat(2,tmp, sData.comp_names{i}); wolffd@0: end wolffd@0: wolffd@0: wolffd@0: set(h,'String',names,'Max',2); wolffd@0: set(udata.sel_comp_h,'String',names); wolffd@0: wolffd@0: %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% wolffd@0: wolffd@0: function draw_vectors(vectors,h) wolffd@0: wolffd@0: %DRAW_VECTORS wolffd@0: % wolffd@0: % draw_vectors(vectors,h) wolffd@0: % wolffd@0: % ARGUMENTS wolffd@0: % wolffd@0: % vectors (vector) vector of 0's and 1's wolffd@0: % h (scalar) handle to an axis object wolffd@0: % wolffd@0: % wolffd@0: % This function draws an horizontal bar of 'vectors' in the axis wolffd@0: % indicated by 'h'. wolffd@0: % wolffd@0: % wolffd@0: wolffd@0: pre_h=findobj(get(0,'Children'),'Tag','Preprocess'); wolffd@0: subplot(h); wolffd@0: hold off; wolffd@0: cla; wolffd@0: wolffd@0: set(h,'YLim',[0 1]); wolffd@0: set(h,'YTick',[]); wolffd@0: set(h,'XLim',[0 length(vectors)+1]); wolffd@0: hold on; wolffd@0: wolffd@0: comp_no=get(getfield(get(pre_h,'UserData'),'sel_comp_h'),'Value'); wolffd@0: comp=getfield(get(pre_h,'UserData'),'sData'); wolffd@0: comp=comp.data(:,comp_no); wolffd@0: Max = max(comp); wolffd@0: Min = min(comp); wolffd@0: lims=get(gca,'YLim'); wolffd@0: lims(1)=Min; wolffd@0: h=abs(0.1*Max); wolffd@0: lims(2)=Max; wolffd@0: if Max - Min <= eps wolffd@0: tmp=Max; wolffd@0: lims(1)=tmp-1; wolffd@0: lims(2)=tmp+1; wolffd@0: end wolffd@0: lims(2)=lims(2)+h; wolffd@0: if ~all(isnan(lims)) wolffd@0: set(gca,'YLim',lims); wolffd@0: end wolffd@0: h=(lims(2)-lims(1))/4; wolffd@0: set(gca,'YTickMode','auto'); wolffd@0: t=1:length(vectors); wolffd@0: h=plot(t,comp); wolffd@0: set(h,'ButtonDownFcn','preprocess(''vector_bdf'',''down'')'); wolffd@0: indices =find(vectors); wolffd@0: vectors(indices)=0.1*(getfield(get(gca,'YLim'),... wolffd@0: {2})-getfield(get(gca,'YLim'),{1})); wolffd@0: plot(indices,vectors(indices)+getfield(get(gca,'YLim'),{1}),... wolffd@0: 'ored','MarkerSize',4); wolffd@0: wolffd@0: %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% wolffd@0: wolffd@0: function vect_means(sData,handle,indices) wolffd@0: wolffd@0: %VECT_MEANS wolffd@0: % wolffd@0: % vect_means(sData,handle,indices) wolffd@0: % wolffd@0: % ARGUMENTS wolffd@0: % wolffd@0: % sData (struct) som_data_struct wolffd@0: % handle (scalar) handle to the static text box object wolffd@0: % indices (vector) indices of selected vectors wolffd@0: % wolffd@0: % wolffd@0: % This function calculates means of selected vectors' components wolffd@0: % and writes them in the static text box indicated by 'handle'. wolffd@0: % wolffd@0: % wolffd@0: wolffd@0: sData= sData.data(indices,:); wolffd@0: wolffd@0: for i=1:length(sData(1,:)) wolffd@0: names{i}=sprintf('#%d: ',i); wolffd@0: end wolffd@0: wolffd@0: wolffd@0: for i=1:length(sData(1,:)) wolffd@0: tmp=sData(:,i); wolffd@0: tmp=cat(2,names{i},sprintf('%-10.3g',mean(tmp(find(~isnan(tmp)))))); wolffd@0: string{i}=tmp; wolffd@0: end wolffd@0: wolffd@0: set(handle,'String',string); wolffd@0: set(handle,'HorizontalAlignment','left'); wolffd@0: wolffd@0: %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% wolffd@0: wolffd@0: function vector_bdf(arg) wolffd@0: wolffd@0: %VECTOR_BDF A button down function. wolffd@0: % wolffd@0: % vector_bdf(arg) wolffd@0: % wolffd@0: % ARGUMENTS wolffd@0: % wolffd@0: % arg (string) 'down' or 'up', tells the mouse button's state. wolffd@0: % wolffd@0: % wolffd@0: % This function selects vectors in the vector-window and plots maxima, wolffd@0: % minima and means of the selected vectors. It also writes means of the wolffd@0: % selected vectors' components in a static text box and takes care of wolffd@0: % changes of the chosen component's data. wolffd@0: % wolffd@0: % See also VECTOR_MEANS, SEL_COMP wolffd@0: % wolffd@0: % wolffd@0: wolffd@0: wolffd@0: arg2=arg(6:length(arg)); wolffd@0: if ~isempty(arg2) wolffd@0: LOG=1; wolffd@0: else wolffd@0: LOG=0; wolffd@0: end wolffd@0: arg=arg(1:4); wolffd@0: wolffd@0: %%% arg's first "word" is 4 letters long and it can be: wolffd@0: %%% wolffd@0: %%% 'key ' wolffd@0: %%% 'down' wolffd@0: %%% 'drag' wolffd@0: %%% 'up ' wolffd@0: wolffd@0: if strcmp(arg,'key ') %string is 'key' + 1 space!!! wolffd@0: if ~LOG wolffd@0: key=get(gcf,'CurrentCharacter'); wolffd@0: else wolffd@0: key=arg2 wolffd@0: end wolffd@0: if ~strcmp(key,'<') & ~strcmp(key,'>') wolffd@0: return; wolffd@0: end wolffd@0: data=get(gcf,'UserData'); wolffd@0: sel=data.selected_vects; wolffd@0: if length(sel) == 1 wolffd@0: if strcmp(key,'<') & sel ~= 1 wolffd@0: data.selected_vects=sel-1; wolffd@0: set(gcf,'UserData',data); wolffd@0: elseif strcmp(key,'>') & sel ~= length(data.sData.data(:,1)) wolffd@0: data.selected_vects = sel + 1; wolffd@0: set(gcf,'UserData',data); wolffd@0: end wolffd@0: else wolffd@0: if strcmp(key,'<') & sel(1) ~= 1 wolffd@0: data.selected_vects=cat(2,sel(1)-1,sel); wolffd@0: set(gcf,'UserData',data); wolffd@0: elseif strcmp(key,'>') & sel(length(sel)) ~= length(sel) wolffd@0: data.selected_vects=cat(2,sel,sel(length(sel))+1); wolffd@0: set(gcf,'UserData',data); wolffd@0: end wolffd@0: end wolffd@0: cplot_mimema; wolffd@0: pro_tools('plot_hist'); wolffd@0: pro_tools('c_stat'); wolffd@0: vects=zeros(1,length(data.sData.data(:,1))); wolffd@0: vects(data.selected_vects)=1; wolffd@0: draw_vectors(vects,data.vector_h); wolffd@0: wolffd@0: if ~LOG wolffd@0: data=get(gcf,'UserData'); wolffd@0: data.LOG{length(data.LOG)+1}=... wolffd@0: sprintf('preprocess(''vector_bdf'',''key %s'');',key); wolffd@0: %string is 'key'+2spaces+%s wolffd@0: set(gcf,'UserData',data); wolffd@0: end wolffd@0: return; wolffd@0: end wolffd@0: wolffd@0: switch arg wolffd@0: case 'down' wolffd@0: set(gcf,'WindowButtonUpFcn','preprocess(''vector_bdf'',''up '')'); wolffd@0: set(gcf,'WindowButtonMotionFcn','preprocess(''vector_bdf'',''drag'')'); wolffd@0: switch get(gcf,'SelectionType') wolffd@0: case 'normal' wolffd@0: data.lims1=round(getfield(get(gca,'CurrentPoint'),{1,1})); wolffd@0: data.lims2=[]; wolffd@0: case 'alt' wolffd@0: tmp=round(getfield(get(gca,'CurrentPoint'),{1,1})); wolffd@0: if isempty(get(gca,'UserData')) wolffd@0: data.lims1=tmp; wolffd@0: data.lims2=[]; wolffd@0: else wolffd@0: data.lims1=cat(2,getfield(get(gca,'UserData'),'lims1'),tmp); wolffd@0: data.lims2=getfield(get(gca,'UserData'),'lims2'); wolffd@0: end wolffd@0: end wolffd@0: coords=get(gca,'CurrentPoint'); wolffd@0: h=line([coords(1),coords(1)],get(gca,'YLim'),'EraseMode','xor'); wolffd@0: set(h,'Color','red'); wolffd@0: h2=line([coords(1),coords(1)],get(gca,'YLim'),'EraseMode','xor'); wolffd@0: set(h2,'Color','red'); wolffd@0: data.h=h; wolffd@0: data.h2=h2; wolffd@0: set(gca,'UserData',data); wolffd@0: wolffd@0: case 'drag' wolffd@0: coords=get(gca,'CurrentPoint'); wolffd@0: lim=get(gca,'XLim'); wolffd@0: h2=getfield(get(gca,'UserData'),'h2'); wolffd@0: if lim(1) >= coords(1) wolffd@0: set(h2,'XData',[lim(1) lim(1)]); wolffd@0: elseif lim(2) <= coords(2) wolffd@0: set(h2,'XData',[lim(2) lim(2)]); wolffd@0: else wolffd@0: set(h2,'XData',[coords(1) coords(1)]); wolffd@0: end wolffd@0: case 'up ' % string is 'up' + 2 spaces!!! wolffd@0: set(gcf,'WindowButtonUpFcn',''); wolffd@0: set(gcf,'WindowButtonMotionFcn',''); wolffd@0: if ~LOG wolffd@0: data=get(gca,'UserData'); wolffd@0: delete(data.h); wolffd@0: delete(data.h2); wolffd@0: tmp=round(getfield(get(gca,'CurrentPoint'),{1,1})); wolffd@0: data.lims2=cat(2,data.lims2,tmp); wolffd@0: tmp_data=sort(cat(1,data.lims1,data.lims2)); wolffd@0: high=getfield(get(gca,'XLim'),{2})-1; wolffd@0: vectors=zeros(1,high); wolffd@0: tmp_data(find(tmp_data<1))=1; wolffd@0: tmp_data(find(tmp_data>high))=high; wolffd@0: wolffd@0: for i=1:getfield(size(tmp_data),{2}) wolffd@0: vectors(tmp_data(1,i):tmp_data(2,i))=1; wolffd@0: end wolffd@0: selected_vects=find(vectors); wolffd@0: else wolffd@0: pre_h=findobj(get(0,'Children'),'Tag','Preprocess'); wolffd@0: len=size(getfield(getfield(get(pre_h,'UserData'),'sData'),'data')); wolffd@0: vectors=zeros(1,len(1)); wolffd@0: i=1; wolffd@0: while i <= length(arg2) & (isspace(arg2(i)) | ~isletter(arg2(i))) wolffd@0: i=i+1; wolffd@0: end wolffd@0: arg3=arg2(i:length(arg2)); wolffd@0: selected_vects=str2num(arg2(1:i-1)); wolffd@0: if ~isempty(arg3) & ~all(isspace(arg3)) wolffd@0: selected_vects=unique(cat(2,selected_vects,... wolffd@0: getfield(get(pre_h,'UserData'),'selected_vects'))); wolffd@0: end wolffd@0: vectors(selected_vects)=1; wolffd@0: set(pre_h,'CurrentAxes',getfield(get(pre_h,'UserData'),'vector_h')); wolffd@0: set(0,'CurrentFigure',pre_h); wolffd@0: end wolffd@0: draw_vectors(vectors,gca); wolffd@0: sData=getfield(get(gcf,'UserData'),'sData'); wolffd@0: h=getfield(get(gcf,'UserData'),'vect_mean_h'); wolffd@0: vect_means(sData,h,selected_vects); wolffd@0: if ~LOG wolffd@0: set(gca,'UserData',data); wolffd@0: end wolffd@0: data=get(gcf,'UserData'); wolffd@0: data.undo.sData=data.sData; wolffd@0: data.undo.selected=data.selected_vects; wolffd@0: data.selected_vects=selected_vects; wolffd@0: if ~LOG wolffd@0: data.LOG{length(data.LOG)+1}='% Vector selection by using the mouse...'; wolffd@0: tmp=sprintf('preprocess(''vector_bdf'',''up %s'');',... wolffd@0: num2str(data.selected_vects)); wolffd@0: if length(tmp) > 500 wolffd@0: tmp=textwrap({tmp},500); wolffd@0: data.LOG{length(data.LOG)+1}=cat(2,tmp{1},''');'); wolffd@0: for i=2:length(tmp)-1 wolffd@0: data.LOG{length(data.LOG)+1}=... wolffd@0: cat(2,sprintf('preprocess(''vector_bdf'',''up %s',... wolffd@0: tmp{i}),'add'');'); wolffd@0: end wolffd@0: data.LOG{length(data.LOG)+1}=... wolffd@0: cat(2,sprintf('preprocess(''vector_bdf'',''up %s',... wolffd@0: tmp{length(tmp)}(1:length(tmp{length(tmp)})-3)),' add'');'); wolffd@0: else wolffd@0: data.LOG{length(data.LOG)+1}=tmp; wolffd@0: end wolffd@0: end wolffd@0: set(gcf,'UserData',data); wolffd@0: cplot_mimema; wolffd@0: sel_comp; wolffd@0: end wolffd@0: wolffd@0: %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% wolffd@0: wolffd@0: function sel_button(varargin) wolffd@0: wolffd@0: %SEL_BUTTON A Callback function. It performs the operations needed wolffd@0: % when vector components are selected. wolffd@0: % wolffd@0: % See also SEL_COMP wolffd@0: % wolffd@0: wolffd@0: if nargin == 1 wolffd@0: LOG=1; wolffd@0: pre_h=findobj(get(0,'Children'),'Tag','Preprocess'); wolffd@0: string=getfield(get(pre_h,'UserData'),'comp_names_h'); wolffd@0: string=getfield(get(string,'String'),{str2num(varargin{1})}); wolffd@0: set(0,'CurrentFigure',pre_h); wolffd@0: else wolffd@0: LOG=0; wolffd@0: val=get(getfield(get(gcf,'UserData'),'comp_names_h'),'Value'); wolffd@0: end wolffd@0: wolffd@0: sel_button_h=getfield(get(gcf,'UserData'),'sel_button_h'); wolffd@0: sel_comps_h=getfield(get(gcf,'UserData'),'sel_comps_h'); wolffd@0: comp_names_h=getfield(get(gcf,'UserData'),'comp_names_h'); wolffd@0: if ~LOG wolffd@0: string=getfield(get(comp_names_h,'String'),{get(comp_names_h,'Value')}); wolffd@0: end wolffd@0: tmp_string=get(sel_comps_h,'String'); wolffd@0: wolffd@0: if iscell(tmp_string) wolffd@0: wolffd@0: for i=1:length(string) wolffd@0: if ~any(strcmp(string{i},tmp_string)) wolffd@0: tmp_string=cat(1,tmp_string,string(i)); wolffd@0: end wolffd@0: end wolffd@0: string=tmp_string; wolffd@0: end wolffd@0: wolffd@0: set(sel_comps_h,'String',string); wolffd@0: set(comp_names_h,'Value',[]); wolffd@0: sel_comp; wolffd@0: if ~LOG wolffd@0: data=get(gcf,'UserData'); wolffd@0: data.LOG{length(data.LOG)+1}='% Select components'; wolffd@0: data.LOG{length(data.LOG)+1}=sprintf('preprocess(''sel_button'',''%s'');',... wolffd@0: num2str(val)); wolffd@0: set(gcf,'UserData',data); wolffd@0: end wolffd@0: wolffd@0: %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% wolffd@0: wolffd@0: function clear_button(varargin) wolffd@0: wolffd@0: %CLEAR_BUTTON Function callback evaluated when a 'Clear'-button is wolffd@0: % pressed. It removes texts from the 'selected components' wolffd@0: % -window and the 'selected component data' -window and wolffd@0: % clears the 'histogram' -axis. wolffd@0: % wolffd@0: % wolffd@0: wolffd@0: if nargin==1 wolffd@0: LOG=1; wolffd@0: pre_h=findobj(get(0,'Children'),'Tag','Preprocess'); wolffd@0: set(0,'CurrentFigure',pre_h); wolffd@0: else wolffd@0: LOG=0; wolffd@0: end wolffd@0: wolffd@0: sel_comp_h=getfield(get(gcf,'UserData'),'sel_comp_h'); wolffd@0: sel_cdata_h=getfield(get(gcf,'UserData'),'sel_cdata_h'); wolffd@0: sel_cplot_h=getfield(get(gcf,'UserData'),'sel_cplot_h'); wolffd@0: sel_chist_h=getfield(get(gcf,'UserData'),'sel_chist_h'); wolffd@0: vector_h=getfield(get(gcf,'UserData'),'vector_h'); wolffd@0: wolffd@0: set(sel_comp_h,'Value',1); wolffd@0: set(sel_cdata_h,'String',' '); wolffd@0: subplot(sel_chist_h); wolffd@0: hold off; wolffd@0: cla; wolffd@0: wolffd@0: selected=getfield(get(gcf,'UserData'),'selected_vects'); wolffd@0: dims=size(getfield(getfield(get(gcf,'UserData'),'sData'),'data')); wolffd@0: vectors=zeros(1,dims(1)); wolffd@0: vectors(selected)=1; wolffd@0: subplot(vector_h); wolffd@0: draw_vectors(vectors,vector_h); wolffd@0: if ~LOG wolffd@0: data=get(gcf,'UserData'); wolffd@0: data.LOG{length(data.LOG)+1}='% Remove components from the selected list.'; wolffd@0: data.LOG{length(data.LOG)+1}='preprocess(''clear_button'',''foo'');'; wolffd@0: set(gcf,'UserData',data); wolffd@0: end wolffd@0: wolffd@0: %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% wolffd@0: wolffd@0: function sel_comp(varargin) wolffd@0: wolffd@0: %SEL_COMP performs the operations needed when vector components are wolffd@0: % chosen. It writes maxima, minima, mean and standard deviation wolffd@0: % of the chosen component to a text box window and draws a wolffd@0: % histogram of the chosen component of selected vectors' wolffd@0: % wolffd@0: % wolffd@0: wolffd@0: pre_h=findobj(get(0,'Children'),'Tag','Preprocess'); wolffd@0: set(0,'CurrentFigure',pre_h); wolffd@0: sel_comp_h=getfield(get(pre_h,'UserData'),'sel_comp_h'); wolffd@0: wolffd@0: if nargin == 1 wolffd@0: set(sel_comp_h,'Value',str2num(varargin{1})); wolffd@0: elseif ~isempty(gcbo) wolffd@0: no=get(sel_comp_h,'Value'); wolffd@0: data=get(gcf,'UserData'); wolffd@0: data.LOG{length(data.LOG)+1}='% Select one component'; wolffd@0: data.LOG{length(data.LOG)+1}=cat(2,'preprocess(''sel_comp'',''',... wolffd@0: num2str(no),''');'); wolffd@0: set(gcf,'UserData',data); wolffd@0: end wolffd@0: wolffd@0: pro_tools('c_stat'); wolffd@0: pro_tools('plot_hist'); wolffd@0: data=get(gcf,'UserData'); wolffd@0: sData=data.sData; wolffd@0: vector_h=data.vector_h; wolffd@0: len=length(sData.data(:,1)); wolffd@0: vects=zeros(1,len); wolffd@0: vects(data.selected_vects)=1; wolffd@0: draw_vectors(vects,vector_h); wolffd@0: wolffd@0: %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% wolffd@0: wolffd@0: function cplot_mimema wolffd@0: wolffd@0: global no_of_sc wolffd@0: wolffd@0: sData=getfield(get(gcf,'UserData'),'sData'); wolffd@0: sel_cplot_h=getfield(get(gcf,'UserData'),'sel_cplot_h'); wolffd@0: selected=getfield(get(gcf,'UserData'),'selected_vects'); wolffd@0: wolffd@0: set(sel_cplot_h,'YLim',[0 length(sData.data(1,:))+1]); wolffd@0: wolffd@0: subplot(sel_cplot_h); wolffd@0: hold off; wolffd@0: cla; wolffd@0: hold on; wolffd@0: wolffd@0: for i=1:length(sData.data(1,:)) wolffd@0: Max=max(sData.data(:,i)); wolffd@0: Min=min(sData.data(:,i)); wolffd@0: tmp=sData.data(selected,i); wolffd@0: wolffd@0: selMax=max(tmp); wolffd@0: selMin=min(tmp); wolffd@0: Mean=abs(mean(tmp(find(~isnan(tmp))))); wolffd@0: Median=abs(median(tmp(find(~isnan(tmp))))); wolffd@0: wolffd@0: if Max ~= Min & ~all(isnan(sData.data(:,i))) wolffd@0: wolffd@0: if rem(i,no_of_sc) % no_of_sc is defined in the beginning of this file... wolffd@0: wolffd@0: line([abs(selMin-Min)/(Max-Min) (selMax-Min)/(Max-Min)],... wolffd@0: [i i],'Color','black'); wolffd@0: plot(abs(Mean-Min)/(Max-Min),i,'oblack'); wolffd@0: plot(abs(Median-Min)/(Max-Min),i,'xblack'); wolffd@0: else wolffd@0: line([abs(selMin-Min)/(Max-Min) (selMax-Min)/(Max-Min)],... wolffd@0: [i i],'Color','black','LineWidth',2); wolffd@0: plot(abs(Mean-Min)/(Max-Min),i,'oblack','LineWidth',2); wolffd@0: plot(abs(Median-Min)/(Max-Min),i,'xblack','LineWidth',2); wolffd@0: end wolffd@0: else wolffd@0: wolffd@0: if rem(i,no_of_sc) % N is defined in the beginning of this file. wolffd@0: wolffd@0: plot(mean(get(gca,'XLim')),i,'oblack'); wolffd@0: plot(mean(get(gca,'XLim')),i,'xblack'); wolffd@0: else wolffd@0: plot(mean(get(gca,'XLim')),i,'oblack','LineWidth',2); wolffd@0: plot(mean(get(gca,'XLim')),i,'xblack','LineWidth',2); wolffd@0: end wolffd@0: end wolffd@0: end wolffd@0: wolffd@0: %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% wolffd@0: wolffd@0: wolffd@0: function bool=set_sD_stats wolffd@0: wolffd@0: %SET_SD_STATS Writes the data set names to popup menu. wolffd@0: % wolffd@0: % wolffd@0: wolffd@0: bool=1; wolffd@0: data=get(gcf,'UserData'); wolffd@0: wolffd@0: for i=1:length(data.sD_set) wolffd@0: % if ~isvalid_var_name({data.sD_set(i).name}) wolffd@0: % close_preprocess; wolffd@0: % bool=0; wolffd@0: % return; wolffd@0: % end wolffd@0: string{i}=cat(2,sprintf('#%d: ',i),data.sD_set(i).name); wolffd@0: end wolffd@0: wolffd@0: set(data.sD_set_h,'String',string); wolffd@0: data.sData=data.sD_set(get(data.sD_set_h,'Value')); wolffd@0: data.sData.MODIFIED=0; wolffd@0: data.sData.INDEX=1; wolffd@0: set(gcf,'UserData',data); wolffd@0: write_sD_stats; wolffd@0: wolffd@0: %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% wolffd@0: wolffd@0: function write_sD_stats wolffd@0: wolffd@0: %WRITE_SD_STATS writes data's name, length and dimension to text box. wolffd@0: % wolffd@0: % wolffd@0: wolffd@0: pre_h=findobj(get(0,'Children'),'Tag','Preprocess'); wolffd@0: wolffd@0: wolffd@0: sD_name_h=getfield(get(pre_h,'UserData'),'sD_name_h'); wolffd@0: sData=getfield(get(pre_h,'UserData'),'sData'); wolffd@0: dims=size(sData.data); wolffd@0: string{1}=cat(2,'Name: ',sData.name); wolffd@0: string{2}=cat(2,'Length: ',sprintf('%d',dims(1))); wolffd@0: string{3}=cat(2,'Dim: ',sprintf('%d',dims(2))); wolffd@0: wolffd@0: set(sD_name_h,'String',string); wolffd@0: set(sD_name_h,'HorizontalAlignment','left'); wolffd@0: wolffd@0: %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% wolffd@0: wolffd@0: wolffd@0: wolffd@0: %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% wolffd@0: wolffd@0: function sel_sD(varargin) wolffd@0: wolffd@0: %SEL_SD sets new data to UserData's 'sData'. wolffd@0: % wolffd@0: % wolffd@0: wolffd@0: if nargin==1 wolffd@0: LOG=1; wolffd@0: index=str2num(varargin{1}); wolffd@0: pre_h=findobj(get(0,'Children'),'Tag','Preprocess'); wolffd@0: set(0,'CurrentFigure',pre_h); wolffd@0: else wolffd@0: LOG=0; wolffd@0: end wolffd@0: wolffd@0: sD_set_h=getfield(get(gcf,'UserData'),'sD_set_h'); wolffd@0: comp_names_h=getfield(get(gcf,'UserData'),'comp_names_h'); wolffd@0: vector_h=getfield(get(gcf,'UserData'),'vector_h'); wolffd@0: vect_mean_h=getfield(get(gcf,'UserData'),'vect_mean_h'); wolffd@0: wolffd@0: if ~LOG wolffd@0: index=get(sD_set_h,'Value'); wolffd@0: end wolffd@0: data=get(gcf,'UserData'); wolffd@0: data.undo = []; wolffd@0: INDEX=data.sData.INDEX; wolffd@0: data.sData=rmfield(data.sData,'MODIFIED'); wolffd@0: data.sData=rmfield(data.sData,'INDEX'); wolffd@0: wolffd@0: tmp=data.sD_set(index); wolffd@0: tmp.MODIFIED=0; wolffd@0: tmp.INDEX=index; wolffd@0: data.sD_set(INDEX)=data.sData; wolffd@0: data.sData=tmp; wolffd@0: wolffd@0: len=getfield(size(tmp.data),{1}); wolffd@0: wolffd@0: data.selected_vects=find(ones(1,len)); wolffd@0: if ~LOG wolffd@0: data.LOG{length(data.LOG)+1}='% Select a new data set.'; wolffd@0: data.LOG{length(data.LOG)+1}=sprintf('preprocess(''sel_sD'',''%s'');',... wolffd@0: num2str(index)); wolffd@0: end wolffd@0: set(gcf,'UserData',data); wolffd@0: write_sD_stats; wolffd@0: set_compnames(tmp,comp_names_h); wolffd@0: draw_vectors(ones(1,len),vector_h); wolffd@0: vect_means(tmp,vect_mean_h,data.selected_vects); wolffd@0: clear_button; wolffd@0: sel_comp; wolffd@0: cplot_mimema; wolffd@0: %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% wolffd@0: wolffd@0: function indices=get_indices wolffd@0: wolffd@0: pre_h=findobj(get(0,'Children'),'Tag','Preprocess'); wolffd@0: wolffd@0: comp_names_h=getfield(get(pre_h,'UserData'),'comp_names_h'); wolffd@0: indices = get(comp_names_h,'Value'); wolffd@0: wolffd@0: %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% wolffd@0: wolffd@0: wolffd@0: wolffd@0: %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% wolffd@0: wolffd@0: function sD_management(varargin) wolffd@0: wolffd@0: if nargin ~= 1 wolffd@0: pre_h=findobj(get(0,'Children'),'Tag','Preprocess'); wolffd@0: preh_udata=get(pre_h,'UserData'); wolffd@0: preh_udata.LOG{length(preh_udata.LOG)+1}=... wolffd@0: '% Starting the ''Data Set Management'' -window...'; wolffd@0: preh_udata.LOG{length(preh_udata.LOG)+1}=... wolffd@0: 'preprocess(''sD_management'',''foo'');'; wolffd@0: set(pre_h,'UserData',preh_udata); wolffd@0: end wolffd@0: wolffd@0: man_h=findobj(get(0,'Children'),'Tag','Management'); wolffd@0: if ~isempty(man_h) wolffd@0: figure(man_h); wolffd@0: return; wolffd@0: end wolffd@0: wolffd@0: h0 = figure('BackingStore','off', ... wolffd@0: 'Color',[0.8 0.8 0.8], ... wolffd@0: 'Name','Data Set Management', ... wolffd@0: 'PaperPosition',[18 180 576 432], ... wolffd@0: 'PaperUnits','points', ... wolffd@0: 'Position',[753 523 324 470], ... wolffd@0: 'RendererMode','manual', ... wolffd@0: 'Tag','Management'); wolffd@0: h1 = uicontrol('Parent',h0, ... wolffd@0: 'Units','normalized', ... wolffd@0: 'BackgroundColor',[1 1 1], ... wolffd@0: 'FontWeight','demi', ... wolffd@0: 'HorizontalAlignment','left', ... wolffd@0: 'ListboxTop',0, ... wolffd@0: 'Max',2, ... wolffd@0: 'Position',[0.02777777777777778 0.0723404255319149 0.7716049382716049 0.1914893617021277], ... wolffd@0: 'String',' ', ... wolffd@0: 'Style','edit', ... wolffd@0: 'Tag','EditText1'); wolffd@0: wolffd@0: data.new_c_name_h = h1; wolffd@0: wolffd@0: h1 = uicontrol('Parent',h0, ... wolffd@0: 'Callback','preprocess rename comp',... wolffd@0: 'Units','normalized', ... wolffd@0: 'FontSize',6, ... wolffd@0: 'FontWeight','demi', ... wolffd@0: 'ListboxTop',0, ... wolffd@0: 'Position',[0.8240740740740741 0.2106382978723404 0.154320987654321 0.05319148936170213], ... wolffd@0: 'String','RENAME', ... wolffd@0: 'Tag','Pushbutton1'); wolffd@0: wolffd@0: h1 = uicontrol('Parent',h0, ... wolffd@0: 'Callback','preprocess close_sD',... wolffd@0: 'Units','normalized', ... wolffd@0: 'FontWeight','demi', ... wolffd@0: 'ListboxTop',0, ... wolffd@0: 'Position',[0.8240740740740741 0.01914893617021277 0.154320987654321 0.05319148936170213], ... wolffd@0: 'String','CLOSE', ... wolffd@0: 'Tag','Pushbutton2'); wolffd@0: h1 = uicontrol('Parent',h0, ... wolffd@0: 'Units','normalized', ... wolffd@0: 'BackgroundColor',[0.8 0.8 0.8], ... wolffd@0: 'FontWeight','demi', ... wolffd@0: 'HorizontalAlignment','left', ... wolffd@0: 'ListboxTop',0, ... wolffd@0: 'Position',[0.02777777777777778 0.2680851063829787 0.345679012345679 0.02978723404255319], ... wolffd@0: 'String','COMPONENTS:', ... wolffd@0: 'Style','text', ... wolffd@0: 'Tag','StaticText1'); wolffd@0: h1 = uicontrol('Parent',h0, ... wolffd@0: 'Units','normalized', ... wolffd@0: 'BackgroundColor',[1 1 1], ... wolffd@0: 'HorizontalAlignment','left', ... wolffd@0: 'Position',[0.02777777777777778 0.3170212765957447 0.3549382716049382 0.5319148936170213], ... wolffd@0: 'String',' ', ... wolffd@0: 'Style','listbox', ... wolffd@0: 'Tag','Listbox1', ... wolffd@0: 'Value',1); wolffd@0: wolffd@0: data.sets_h=h1; wolffd@0: wolffd@0: h1 = uicontrol('Parent',h0, ... wolffd@0: 'Units','normalized', ... wolffd@0: 'BackgroundColor',[1 1 1], ... wolffd@0: 'HorizontalAlignment','left', ... wolffd@0: 'Position',[0.6234567901234568 0.3170212765957447 0.3549382716049382 0.5319148936170213], ... wolffd@0: 'String',' ', ... wolffd@0: 'Style','listbox', ... wolffd@0: 'Tag','Listbox2', ... wolffd@0: 'Value',1); wolffd@0: wolffd@0: wolffd@0: data.variables_h = h1; wolffd@0: wolffd@0: h1 = uicontrol('Parent',h0, ... wolffd@0: 'Callback','preprocess export',... wolffd@0: 'Units','normalized', ... wolffd@0: 'FontWeight','demi', ... wolffd@0: 'ListboxTop',0, ... wolffd@0: 'Position',[0.4259259259259259 0.551063829787234 0.154320987654321 0.0425531914893617], ... wolffd@0: 'String','->', ... wolffd@0: 'Tag','Pushbutton4'); wolffd@0: wolffd@0: h1 = uicontrol('Parent',h0, ... wolffd@0: 'Callback','preprocess import',... wolffd@0: 'Units','normalized', ... wolffd@0: 'FontWeight','demi', ... wolffd@0: 'ListboxTop',0, ... wolffd@0: 'Position',[0.4259259259259259 0.625531914893617 0.154320987654321 0.0425531914893617], ... wolffd@0: 'String','<-', ... wolffd@0: 'Tag','Pushbutton3'); wolffd@0: wolffd@0: wolffd@0: wolffd@0: h1 = uicontrol('Parent',h0, ... wolffd@0: 'Units','normalized', ... wolffd@0: 'BackgroundColor',[0.8 0.8 0.8], ... wolffd@0: 'FontWeight','demi', ... wolffd@0: 'HorizontalAlignment','left', ... wolffd@0: 'ListboxTop',0, ... wolffd@0: 'Position',[0.02777777777777778 0.8531914893617022 0.2993827160493827 0.02978723404255319], ... wolffd@0: 'String','DATA SETS', ... wolffd@0: 'Style','text', ... wolffd@0: 'Tag','StaticText2'); wolffd@0: wolffd@0: h1 = uicontrol('Parent',h0, ... wolffd@0: 'Units','normalized', ... wolffd@0: 'BackgroundColor',[0.8 0.8 0.8], ... wolffd@0: 'FontWeight','demi', ... wolffd@0: 'HorizontalAlignment','left', ... wolffd@0: 'ListboxTop',0, ... wolffd@0: 'Position',[0.6234567901234568 0.8531914893617022 0.2561728395061728 0.02978723404255319], ... wolffd@0: 'String','WORKSPACE', ... wolffd@0: 'Style','text', ... wolffd@0: 'Tag','StaticText3'); wolffd@0: wolffd@0: h1 = uicontrol('Parent',h0, ... wolffd@0: 'Callback','preprocess rename set',... wolffd@0: 'Units','normalized', ... wolffd@0: 'BackgroundColor',[1 1 1], ... wolffd@0: 'HorizontalAlignment','left', ... wolffd@0: 'ListboxTop',0, ... wolffd@0: 'Position',[0.1820987654320987 0.9127659574468086 0.7808641975308641 0.0425531914893617], ... wolffd@0: 'Style','edit', ... wolffd@0: 'Tag','EditText2'); wolffd@0: wolffd@0: data.new_name_h = h1; wolffd@0: wolffd@0: wolffd@0: h1 = uicontrol('Parent',h0, ... wolffd@0: 'Units','normalized', ... wolffd@0: 'BackgroundColor',[0.8 0.8 0.8], ... wolffd@0: 'FontWeight','demi', ... wolffd@0: 'HorizontalAlignment','left', ... wolffd@0: 'ListboxTop',0, ... wolffd@0: 'Position',[0.02777777777777778 0.9127659574468086 0.1388888888888889 0.02978723404255319], ... wolffd@0: 'String','NAME:', ... wolffd@0: 'Style','text', ... wolffd@0: 'Tag','StaticText4'); wolffd@0: wolffd@0: wolffd@0: ui_h=uimenu('Label','&Tools'); wolffd@0: uimenu(ui_h,'Label','Copy','Callback','preprocess copy_delete copy'); wolffd@0: uimenu(ui_h,'Label','Delete','Callback','preprocess copy_delete delete'); wolffd@0: uimenu(ui_h,'Label','Refresh','Callback','preprocess refresh'); wolffd@0: wolffd@0: set(gcf,'UserData',data); wolffd@0: set_var_names; wolffd@0: sD_names; wolffd@0: sD_stats; wolffd@0: wolffd@0: wolffd@0: wolffd@0: %%% Subfunction: set_var_names %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% wolffd@0: wolffd@0: function set_var_names wolffd@0: wolffd@0: wolffd@0: variables_h=getfield(get(gcf,'UserData'),'variables_h'); wolffd@0: value=get(variables_h,'Value'); wolffd@0: len=evalin('base','length(who)'); wolffd@0: wolffd@0: names=cell(len,1); wolffd@0: wolffd@0: for i=1:len wolffd@0: string=cat(2,'getfield(who,{',num2str(i),'})'); wolffd@0: names(i)=evalin('base',string); wolffd@0: end wolffd@0: wolffd@0: set(variables_h,'String',names); wolffd@0: if(value > length(names)) wolffd@0: set(variables_h,'Value',1); wolffd@0: end wolffd@0: wolffd@0: %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% wolffd@0: wolffd@0: %%% Subfunction: sD_names %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% wolffd@0: wolffd@0: function sD_names wolffd@0: wolffd@0: sets_h=getfield(get(gcf,'UserData'),'sets_h'); wolffd@0: pre_h=findobj(get(0,'Children'),'Tag','Preprocess'); wolffd@0: wolffd@0: sD_set = getfield(get(pre_h,'UserData'),'sD_set'); wolffd@0: wolffd@0: for i=1:length(sD_set) wolffd@0: names{i,1}=cat(2,sprintf('#%d: ',i),sD_set(i).name); wolffd@0: end wolffd@0: wolffd@0: set(sets_h,'String',names); wolffd@0: wolffd@0: %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% wolffd@0: wolffd@0: %%% Subfunction: sD_stats %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% wolffd@0: wolffd@0: function sD_stats wolffd@0: wolffd@0: man_h=findobj(get(0,'Children'),'Tag','Management'); wolffd@0: c_names_h=getfield(get(man_h,'UserData'),'new_c_name_h'); wolffd@0: sD_name_h=getfield(get(man_h,'UserData'),'new_name_h'); wolffd@0: pre_h=findobj(get(0,'Children'),'Tag','Preprocess'); wolffd@0: INDEX=getfield(getfield(get(pre_h,'UserData'),'sData'),'INDEX'); wolffd@0: MODIFIED=getfield(getfield(get(pre_h,'UserData'),'sData'),'MODIFIED'); wolffd@0: value=get(getfield(get(man_h,'UserData'),'sets_h'),'Value'); wolffd@0: wolffd@0: if value==INDEX wolffd@0: data=get(pre_h,'UserData'); wolffd@0: sData=rmfield(data.sData,[{'INDEX'};{'MODIFIED'}]); wolffd@0: data.sD_set(INDEX)=sData; wolffd@0: data.sData.MODIFIED=0; wolffd@0: set(pre_h,'UserData',data); wolffd@0: end wolffd@0: wolffd@0: sData=getfield(getfield(get(pre_h,'UserData'),'sD_set'),{value}); wolffd@0: string1=[{sData.name}]; wolffd@0: wolffd@0: wolffd@0: set(sD_name_h,'String',string1); wolffd@0: set(c_names_h,'String',sData.comp_names); wolffd@0: wolffd@0: %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% wolffd@0: wolffd@0: %%% Subfunction: import %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% wolffd@0: wolffd@0: function import(varargin) wolffd@0: wolffd@0: if nargin==1 wolffd@0: LOG=1; wolffd@0: man_h=findobj(get(0,'Children'),'Tag','Management'); wolffd@0: set(0,'CurrentFigure',man_h); wolffd@0: name=varargin; wolffd@0: else wolffd@0: LOG=0; wolffd@0: end wolffd@0: wolffd@0: variables_h=getfield(get(gcf,'UserData'),'variables_h'); wolffd@0: pre_h=findobj(get(0,'Children'),'Tag','Preprocess'); wolffd@0: if ~LOG wolffd@0: name=getfield(get(variables_h,'String'),{get(variables_h,'Value')}); wolffd@0: end wolffd@0: errstr='Data to be imported must be real matrix or ''som_data_struct''.'; wolffd@0: new_sD=evalin('base',name{1}); wolffd@0: wolffd@0: if isempty(pre_h) wolffd@0: errordlg('''Preprocess'' -figure does not exist. Terminating program...'); wolffd@0: close_preprocess; wolffd@0: return; wolffd@0: end wolffd@0: wolffd@0: if isstr(new_sD) | (~isstruct(new_sD) & ~isreal(new_sD)) wolffd@0: errordlg(errstr); wolffd@0: return; wolffd@0: elseif isstruct(new_sD) & length(new_sD) > 1 wolffd@0: errordlg(errstr) wolffd@0: return; wolffd@0: elseif ~isstruct(new_sD) wolffd@0: new_sD=som_data_struct(new_sD); wolffd@0: new_sD.name=name{1}; wolffd@0: end wolffd@0: wolffd@0: new_sD_names=fieldnames(new_sD); wolffd@0: right_names=fieldnames(som_data_struct(1)); wolffd@0: for i=1:length(new_sD_names) wolffd@0: if ~any(strcmp(new_sD_names(i),right_names)); wolffd@0: errordlg(errstr); wolffd@0: return; wolffd@0: end wolffd@0: end wolffd@0: wolffd@0: data=get(pre_h,'UserData'); wolffd@0: data.sD_set(length(data.sD_set) + 1)=new_sD; wolffd@0: if ~LOG wolffd@0: data.LOG{length(data.LOG)+1}='% Import a data set from the workspace.'; wolffd@0: data.LOG{length(data.LOG)+1}=cat(2,'preprocess(''import'',''',... wolffd@0: name{1},''');'); wolffd@0: end wolffd@0: set(pre_h,'UserData',data); wolffd@0: sD_names; wolffd@0: sD_stats; wolffd@0: old =gcf; wolffd@0: set(0,'CurrentFigure',pre_h); wolffd@0: set_sD_stats; wolffd@0: set(0,'CurrentFigure',old); wolffd@0: wolffd@0: %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% wolffd@0: wolffd@0: %%% Subfunction: export %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% wolffd@0: wolffd@0: function export(varargin) wolffd@0: wolffd@0: if nargin == 1 wolffd@0: LOG=1; wolffd@0: man_h=findobj(get(0,'Children'),'Tag','Management'); wolffd@0: set(0,'CurrentFigure',man_h); wolffd@0: index=str2num(varargin{1}); wolffd@0: else wolffd@0: LOG=0; wolffd@0: end wolffd@0: wolffd@0: sets_h=getfield(get(gcf,'UserData'),'sets_h'); wolffd@0: pre_h=findobj(get(0,'Children'),'Tag','Preprocess'); wolffd@0: wolffd@0: if ~LOG wolffd@0: index=get(sets_h,'Value'); wolffd@0: end wolffd@0: wolffd@0: if isempty(pre_h) wolffd@0: errordlg('''Preprocess''-figure does not exist. Terminating program...'); wolffd@0: close(findobj(get(0,'Children'),'Tag','Management')); wolffd@0: close(findobj(get(0,'Children'),'Tag','PlotWin')); wolffd@0: return; wolffd@0: end wolffd@0: wolffd@0: sData=getfield(getfield(get(pre_h,'UserData'),'sD_set'),{index}); wolffd@0: wolffd@0: if ~isvalid_var_name({sData.name}) wolffd@0: return; wolffd@0: end wolffd@0: wolffd@0: assignin('base',sData.name,sData); wolffd@0: disp(sprintf('Data set ''%s'' is set to the workspace.',sData.name)); wolffd@0: if ~LOG wolffd@0: data=get(pre_h,'UserData'); wolffd@0: data.LOG{length(data.LOG)+1}='% Export a data set to the workspace.'; wolffd@0: data.LOG{length(data.LOG)+1}=cat(2,'preprocess(''export'',''',... wolffd@0: num2str(index),''');'); wolffd@0: set(pre_h,'UserData',data); wolffd@0: end wolffd@0: set_var_names; wolffd@0: wolffd@0: %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% wolffd@0: wolffd@0: %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% wolffd@0: %%% Subfunction: rename %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% wolffd@0: wolffd@0: function rename(arg) wolffd@0: wolffd@0: i=1; wolffd@0: while i <= length(arg) & arg(i) ~= ' ' wolffd@0: i=i+1; wolffd@0: end wolffd@0: wolffd@0: arg2=arg(i+1:length(arg)); wolffd@0: arg=arg(1:i-1); wolffd@0: if ~isempty(arg2) wolffd@0: LOG=1; wolffd@0: i=1; wolffd@0: if arg2(1) ~= '{' wolffd@0: while i <= length(arg2) & arg2(i) ~= ' ' wolffd@0: i=i+1; wolffd@0: end wolffd@0: index=str2num(arg2(i+1:length(arg2))); wolffd@0: arg2=arg2(1:i-1); wolffd@0: else wolffd@0: while i <= length(arg2) & arg2(i) ~= '}' wolffd@0: i=i+1; wolffd@0: end wolffd@0: index=str2num(arg2(i+1:length(arg2))); wolffd@0: arg2=arg2(1:i); wolffd@0: end wolffd@0: else wolffd@0: LOG=0; wolffd@0: end wolffd@0: wolffd@0: new_name_h=getfield(get(gcf,'UserData'),'new_name_h'); wolffd@0: new_c_name_h=getfield(get(gcf,'UserData'),'new_c_name_h'); wolffd@0: pre_h=findobj(get(0,'Children'),'Tag','Preprocess'); wolffd@0: wolffd@0: if isempty(pre_h) wolffd@0: errordlg('''Preprocess'' -figure does not exist. Terminating program...'); wolffd@0: close_preprocess; wolffd@0: return; wolffd@0: end wolffd@0: wolffd@0: switch arg wolffd@0: case 'set' wolffd@0: if LOG wolffd@0: name={arg2}; wolffd@0: else wolffd@0: name=get(new_name_h,'String'); wolffd@0: end wolffd@0: if ~isempty(name{1}) & ~any(isspace(name{1})) wolffd@0: if ~isvalid_var_name(name) wolffd@0: sD_stats; wolffd@0: return; wolffd@0: end wolffd@0: if ~LOG wolffd@0: index=get(getfield(get(gcf,'UserData'),'sets_h'),'Value'); wolffd@0: end wolffd@0: data=get(pre_h,'UserData'); wolffd@0: tmp_set.name=name{1}; wolffd@0: data.sD_set(index).name=name{1}; wolffd@0: if data.sData.INDEX == index wolffd@0: data.sData.name=name{1}; wolffd@0: end wolffd@0: if ~LOG wolffd@0: data.LOG{length(data.LOG)+1}='% Rename a data set.'; wolffd@0: data.LOG{length(data.LOG)+1}=cat(2,'preprocess(''rename'',''set ',... wolffd@0: name{1},' ',... wolffd@0: num2str(index),... wolffd@0: ''');'); wolffd@0: end wolffd@0: wolffd@0: set(pre_h,'UserData',data); wolffd@0: sD_names; wolffd@0: string=get(data.sD_set_h,'String'); wolffd@0: string{index}=cat(2,sprintf('#%d: ',index),name{1}); wolffd@0: set(data.sD_set_h,'String',string); wolffd@0: string=get(data.sD_name_h,'String'); wolffd@0: string{1}=cat(2,'Name: ',name{1}); wolffd@0: if index==data.sData.INDEX wolffd@0: set(data.sD_name_h,'String',string); wolffd@0: end wolffd@0: else wolffd@0: sD_stats; wolffd@0: end wolffd@0: case 'comp' wolffd@0: if ~LOG wolffd@0: names=get(new_c_name_h,'String'); wolffd@0: index=get(getfield(get(gcf,'UserData'),'sets_h'),'Value'); wolffd@0: else wolffd@0: names=eval(arg2); wolffd@0: end wolffd@0: if check_cell_names(names) wolffd@0: data=get(pre_h,'UserData'); wolffd@0: sData=data.sD_set(index); wolffd@0: if length(sData.comp_names)==length(names) wolffd@0: data.sD_set(index).comp_names=names; wolffd@0: if index == data.sData.INDEX wolffd@0: for i=1:length(names) wolffd@0: names{i}=cat(2,sprintf('#%d: ',i),names{i}); wolffd@0: end wolffd@0: set(data.comp_names_h,'String',names); wolffd@0: set(data.sel_comp_h,'String',names); wolffd@0: end wolffd@0: if ~LOG wolffd@0: data.LOG{length(data.LOG)+1}='% Rename components.'; wolffd@0: str='preprocess(''rename'',''comp {'; wolffd@0: for i=1:length(names)-1 wolffd@0: str=cat(2,str,'''''',names{i},''''','); wolffd@0: end wolffd@0: str=cat(2,str,'''''',names{length(names)},'''''} ',... wolffd@0: num2str(index),''');'); wolffd@0: data.LOG{length(data.LOG)+1}=str; wolffd@0: else wolffd@0: set(new_c_name_h,'String',names); wolffd@0: end wolffd@0: set(pre_h,'UserData',data); wolffd@0: else wolffd@0: errordlg('There are less components in data.'); wolffd@0: sD_stats; wolffd@0: return; wolffd@0: end wolffd@0: else wolffd@0: sD_stats; wolffd@0: end wolffd@0: end wolffd@0: wolffd@0: %%% Subfunction: check_cell_names %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% wolffd@0: wolffd@0: function bool=check_cell_names(names) wolffd@0: wolffd@0: bool = 1; wolffd@0: wolffd@0: if isempty(names) wolffd@0: bool= 0; wolffd@0: return; wolffd@0: end wolffd@0: for i=1:length(names) wolffd@0: if isempty(names{i}) | isspace(names{i}) wolffd@0: bool = 0; wolffd@0: return; wolffd@0: end wolffd@0: end wolffd@0: wolffd@0: %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% wolffd@0: wolffd@0: %%% Subfunction: isvalid_var_name %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% wolffd@0: wolffd@0: function bool=isvalid_var_name(name) wolffd@0: wolffd@0: bool=1; wolffd@0: wolffd@0: tmp=name{1}; wolffd@0: if ~((tmp(1)>='a' & tmp(1)<='z') | (tmp(1)>='A' & tmp(1)<='Z')) wolffd@0: errordlg('Invalid name.'); wolffd@0: bool=0; wolffd@0: return; wolffd@0: end wolffd@0: for j=1:length(tmp) wolffd@0: if ~((tmp(j)>='a' & tmp(j)<='z') | ... wolffd@0: (tmp(j)>='A' & tmp(j)<='Z') | ... wolffd@0: (j>1 & tmp(j) == '_') | ... wolffd@0: (tmp(j)>='0' & tmp(j) <= '9')) | tmp(j) == '.' wolffd@0: errordlg('Invalid name.'); wolffd@0: bool=0; wolffd@0: return; wolffd@0: end wolffd@0: if j == length(tmp) & tmp(j) == '_' wolffd@0: errordlg('Invalid name.'); wolffd@0: bool=0; wolffd@0: return; wolffd@0: end wolffd@0: end wolffd@0: wolffd@0: %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% wolffd@0: %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% wolffd@0: wolffd@0: %%% Subfunction: copy_delete %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% wolffd@0: wolffd@0: function copy_delete(arg) wolffd@0: wolffd@0: i=1; wolffd@0: while i <= length(arg) & arg(i) ~= ' ' wolffd@0: i=i+1; wolffd@0: end wolffd@0: wolffd@0: arg2=arg(i+1:length(arg)); wolffd@0: arg=arg(1:i-1); wolffd@0: wolffd@0: if ~isempty(arg2) wolffd@0: index=str2num(arg2); wolffd@0: LOG=1; wolffd@0: else wolffd@0: LOG=0; wolffd@0: end wolffd@0: wolffd@0: sets_h=getfield(get(gcf,'UserData'),'sets_h'); wolffd@0: if ~LOG wolffd@0: index=get(sets_h,'Value'); wolffd@0: end wolffd@0: pre_h=findobj(get(0,'Children'),'Tag','Preprocess'); wolffd@0: wolffd@0: if isempty(pre_h) wolffd@0: errordlg('''Preprocess'' -figure does not exist. Terminating program.'); wolffd@0: close_preprocess; wolffd@0: return; wolffd@0: end wolffd@0: wolffd@0: switch arg wolffd@0: case 'copy' wolffd@0: data=get(pre_h,'UserData'); wolffd@0: data.sD_set(length(data.sD_set)+1)=data.sD_set(index); wolffd@0: if ~LOG wolffd@0: data.LOG{length(data.LOG)+1}='% Copy a data set.'; wolffd@0: data.LOG{length(data.LOG)+1}=cat(2,'preprocess(''copy_delete'',''',... wolffd@0: 'copy ',num2str(index),''');'); wolffd@0: end wolffd@0: set(pre_h,'UserData',data); wolffd@0: sD_names; wolffd@0: old=gcf; wolffd@0: set(0,'CurrentFigure',pre_h); wolffd@0: set_sD_stats; wolffd@0: set(0,'CurrentFigure',old); wolffd@0: case 'delete' wolffd@0: if length(get(sets_h,'String')) == 1 wolffd@0: msgbox('No data left. Closing program...') wolffd@0: close_preprocess; wolffd@0: return; wolffd@0: end wolffd@0: data=get(pre_h,'UserData'); wolffd@0: if ~isempty(data.undo) & any(strcmp('index',fieldnames(data.undo))) wolffd@0: if data.undo.index > index wolffd@0: data.undo.index = data.undo.index-1; wolffd@0: elseif data.undo.index==index; wolffd@0: data.undo=[]; wolffd@0: end wolffd@0: end wolffd@0: set1=data.sD_set(1:index-1); wolffd@0: set2=data.sD_set(index+1:length(data.sD_set)); wolffd@0: wolffd@0: if ~isempty(set1) wolffd@0: data.sD_set=[set1 set2]; wolffd@0: else wolffd@0: data.sD_set=set2; wolffd@0: end wolffd@0: if ~LOG wolffd@0: data.LOG{length(data.LOG)+1}='% Delete a data set.'; wolffd@0: data.LOG{length(data.LOG)+1}=cat(2,'preprocess(''copy_delete'',''',... wolffd@0: 'delete ',num2str(index),''');'); wolffd@0: end wolffd@0: set(pre_h,'UserData',data); wolffd@0: wolffd@0: set(sets_h,'Value',1); wolffd@0: sD_names; wolffd@0: sD_stats; wolffd@0: old = gcf; wolffd@0: set(0,'CurrentFigure',pre_h); wolffd@0: wolffd@0: for i=1:length(data.sD_set) wolffd@0: string{i}=cat(2,sprintf('#%d: ',i),data.sD_set(i).name); wolffd@0: end wolffd@0: wolffd@0: set(data.sD_set_h,'String',string); wolffd@0: data.sData=data.sD_set(get(data.sD_set_h,'Value')); wolffd@0: data.sData.MODIFIED=0; wolffd@0: data.sData.INDEX=1; wolffd@0: set(gcf,'UserData',data); wolffd@0: write_sD_stats; wolffd@0: wolffd@0: sData=getfield(get(gcf,'UserData'),'sData'); wolffd@0: if sData.INDEX > index wolffd@0: value=get(getfield(get(gcf,'UserData'),'sD_set_h'),'Value'); wolffd@0: set(getfield(get(gcf,'UserData'),'sD_set_h'),'Value',value-1); wolffd@0: sData.INDEX = sData.INDEX -1; wolffd@0: elseif sData.INDEX == index wolffd@0: set(getfield(get(gcf,'UserData'),'sD_set_h'),'Value',1); wolffd@0: end wolffd@0: wolffd@0: sel_sD; wolffd@0: set(0,'CurrentFigure',old); wolffd@0: end wolffd@0: wolffd@0: %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% wolffd@0: wolffd@0: function clipping(varargin) wolffd@0: wolffd@0: if nargin ~= 1 wolffd@0: pre_h=findobj(get(0,'Children'),'Tag','Preprocess'); wolffd@0: preh_udata=get(pre_h,'UserData'); wolffd@0: preh_udata.LOG{length(preh_udata.LOG)+1}=... wolffd@0: '% Starting the ''Clipping'' -window...'; wolffd@0: preh_udata.LOG{length(preh_udata.LOG)+1}='preprocess(''clipping'',''foo'');'; wolffd@0: set(pre_h,'UserData',preh_udata); wolffd@0: end wolffd@0: wolffd@0: clip_h=findobj(get(0,'Children'),'Tag','Clipping'); wolffd@0: wolffd@0: if ~isempty(clip_h) wolffd@0: figure(clip_h); wolffd@0: return; wolffd@0: end wolffd@0: wolffd@0: h0 = figure('Color',[0.8 0.8 0.8], ... wolffd@0: 'PaperPosition',[18 180 575 432], ... wolffd@0: 'PaperUnits','points', ... wolffd@0: 'Position',[718 389 300 249], ... wolffd@0: 'Tag','Clipping'); wolffd@0: wolffd@0: h1 = uicontrol('Parent',h0, ... wolffd@0: 'Units','normalized', ... wolffd@0: 'BackgroundColor',[0.752941176470588 0.752941176470588 0.752941176470588], ... wolffd@0: 'ListboxTop',0, ... wolffd@0: 'Position',[0.03 0.03614457831325301 0.4666666666666667 0.9236947791164658], ... wolffd@0: 'Style','frame', ... wolffd@0: 'Tag','Frame1'); wolffd@0: wolffd@0: h1 = uicontrol('Parent',h0, ... wolffd@0: 'Units','normalized', ... wolffd@0: 'BackgroundColor',[0.8 0.8 0.8], ... wolffd@0: 'ListboxTop',0, ... wolffd@0: 'Position',[0.05333333333333334 0.5983935742971887 0.42 0.3333333333333333], ... wolffd@0: 'Style','frame', ... wolffd@0: 'Tag','Frame2'); wolffd@0: wolffd@0: h1 = uicontrol('Parent',h0, ... wolffd@0: 'Units','normalized', ... wolffd@0: 'BackgroundColor',[0.8 0.8 0.8], ... wolffd@0: 'ListboxTop',0, ... wolffd@0: 'Style','frame', ... wolffd@0: 'Position',[0.05333333333333334 0.33 0.42 0.24], ... wolffd@0: 'Tag','Frame3'); wolffd@0: wolffd@0: h1 = uicontrol('Parent',h0, ... wolffd@0: 'Units','normalized', ... wolffd@0: 'BackgroundColor',[0.8 0.8 0.8], ... wolffd@0: 'ListboxTop',0, ... wolffd@0: 'Style','frame', ... wolffd@0: 'Position',[0.05333333333333334 0.06 0.42 0.24],... wolffd@0: 'Tag','Frame4'); wolffd@0: wolffd@0: h1 = uicontrol('Parent',h0, ... wolffd@0: 'Units','normalized', ... wolffd@0: 'ListboxTop',0, ... wolffd@0: 'Position',[0.5133333333333334 0.6385542168674698 0.4666666666666667 0.321285140562249], ... wolffd@0: 'Style','frame', ... wolffd@0: 'Tag','Frame5'); wolffd@0: wolffd@0: h1 = uicontrol('Parent',h0, ... wolffd@0: 'Units','normalized', ... wolffd@0: 'BackgroundColor',[0.8 0.8 0.8], ... wolffd@0: 'ListboxTop',0, ... wolffd@0: 'Position',[0.5366666666666667 0.6666666666666666 0.42 0.2650602409638554], ... wolffd@0: 'Style','frame', ... wolffd@0: 'Tag','Frame6'); wolffd@0: wolffd@0: h1 = uicontrol('Parent',h0, ... wolffd@0: 'Units','normalized', ... wolffd@0: 'BackgroundColor',[1 1 1], ... wolffd@0: 'ListboxTop',0, ... wolffd@0: 'Position',[0.31 0.823293172690763 0.15 0.09638554216867469], ... wolffd@0: 'Style','edit', ... wolffd@0: 'Tag','EditText1'); wolffd@0: wolffd@0: data.big_val_h = h1; wolffd@0: wolffd@0: h1 = uicontrol('Parent',h0, ... wolffd@0: 'Units','normalized', ... wolffd@0: 'BackgroundColor',[1 1 1], ... wolffd@0: 'ListboxTop',0, ... wolffd@0: 'Position',[0.31 0.7148594377510039 0.15 0.09638554216867469], ... wolffd@0: 'Style','edit', ... wolffd@0: 'Tag','EditText2'); wolffd@0: wolffd@0: data.small_val_h = h1; wolffd@0: wolffd@0: h1 = uicontrol('Parent',h0, ... wolffd@0: 'Units','normalized', ... wolffd@0: 'BackgroundColor',[1 1 1], ... wolffd@0: 'ListboxTop',0, ... wolffd@0: 'Position',[0.31 0.606425702811245 0.15 0.09638554216867469], ... wolffd@0: 'Style','edit', ... wolffd@0: 'Tag','EditText3'); wolffd@0: wolffd@0: data.equal_val_h=h1; wolffd@0: wolffd@0: h1 = uicontrol('Parent',h0, ... wolffd@0: 'Units','normalized', ... wolffd@0: 'BackgroundColor',[0.8 0.8 0.8], ... wolffd@0: 'FontSize',6, ... wolffd@0: 'FontWeight','demi', ... wolffd@0: 'HorizontalAlignment','left', ... wolffd@0: 'ListboxTop',0, ... wolffd@0: 'Position',[0.06000000000000001 0.8473895582329316 0.22 0.05622489959839357], ... wolffd@0: 'String','Bigger than', ... wolffd@0: 'Style','text', ... wolffd@0: 'Tag','StaticText1'); wolffd@0: h1 = uicontrol('Parent',h0, ... wolffd@0: 'Units','normalized', ... wolffd@0: 'BackgroundColor',[0.8 0.8 0.8], ... wolffd@0: 'FontSize',6, ... wolffd@0: 'FontWeight','demi', ... wolffd@0: 'HorizontalAlignment','left', ... wolffd@0: 'ListboxTop',0, ... wolffd@0: 'Position',[0.06000000000000001 0.7389558232931727 0.24 0.04819277108433735], ... wolffd@0: 'String','Smaller than', ... wolffd@0: 'Style','text', ... wolffd@0: 'Tag','StaticText2'); wolffd@0: h1 = uicontrol('Parent',h0, ... wolffd@0: 'Units','normalized', ... wolffd@0: 'BackgroundColor',[0.8 0.8 0.8], ... wolffd@0: 'FontSize',6, ... wolffd@0: 'FontWeight','demi', ... wolffd@0: 'HorizontalAlignment','left', ... wolffd@0: 'ListboxTop',0, ... wolffd@0: 'Position',[0.06000000000000001 0.610441767068273 0.22 0.07228915662650602], ... wolffd@0: 'String','Equal to', ... wolffd@0: 'Style','text', ... wolffd@0: 'Tag','StaticText3'); wolffd@0: wolffd@0: h1 = uicontrol('Parent',h0, ... wolffd@0: 'Units','normalized', ... wolffd@0: 'BackgroundColor',[0.8 0.8 0.8], ... wolffd@0: 'ListboxTop',0, ... wolffd@0: 'Position',[0.07000000000000001 0.465863453815261 0.06333333333333334 0.07228915662650602], ... wolffd@0: 'Style','radiobutton', ... wolffd@0: 'Value',1,... wolffd@0: 'Tag','Radiobutton1'); wolffd@0: wolffd@0: data.and_button_h=h1; wolffd@0: wolffd@0: h1 = uicontrol('Parent',h0, ... wolffd@0: 'Units','normalized', ... wolffd@0: 'BackgroundColor',[0.8 0.8 0.8], ... wolffd@0: 'ListboxTop',0, ... wolffd@0: 'Position',[0.07000000000000001 0.3734939759036144 0.06333333333333334 0.07228915662650602], ... wolffd@0: 'Style','radiobutton', ... wolffd@0: 'Tag','Radiobutton2'); wolffd@0: wolffd@0: data.or_button_h=h1; wolffd@0: wolffd@0: h1 = uicontrol('Parent',h0, ... wolffd@0: 'Units','normalized', ... wolffd@0: 'BackgroundColor',[0.8 0.8 0.8], ... wolffd@0: 'FontSize',6, ... wolffd@0: 'FontWeight','demi', ... wolffd@0: 'HorizontalAlignment','left', ... wolffd@0: 'Position',[0.1466666666666667 0.45 0.2333333333333333 0.07228915662650602], ... wolffd@0: 'String','AND', ... wolffd@0: 'Style','text', ... wolffd@0: 'Tag','StaticText4'); wolffd@0: wolffd@0: h1 = uicontrol('Parent',h0, ... wolffd@0: 'Units','normalized', ... wolffd@0: 'BackgroundColor',[0.8 0.8 0.8], ... wolffd@0: 'FontSize',6, ... wolffd@0: 'FontWeight','demi', ... wolffd@0: 'HorizontalAlignment','left', ... wolffd@0: 'ListboxTop',0, ... wolffd@0: 'String','OR', ... wolffd@0: 'Position',[0.1466666666666667 0.35 0.2333333333333333 0.07228915662650602], ... wolffd@0: 'Style','text', ... wolffd@0: 'Tag','StaticText5'); wolffd@0: wolffd@0: h1 = uicontrol('Parent',h0, ... wolffd@0: 'Units','normalized', ... wolffd@0: 'BackgroundColor',[0.8 0.8 0.8], ... wolffd@0: 'ListboxTop',0, ... wolffd@0: 'Position',[0.07000000000000001 0.1967871485943775 0.06333333333333334 0.07228915662650602], ... wolffd@0: 'Style','radiobutton', ... wolffd@0: 'Value',1,... wolffd@0: 'Tag','Radiobutton3'); wolffd@0: wolffd@0: data.all_button_h=h1; wolffd@0: wolffd@0: h1 = uicontrol('Parent',h0, ... wolffd@0: 'Units','normalized', ... wolffd@0: 'BackgroundColor',[0.8 0.8 0.8], ... wolffd@0: 'ListboxTop',0, ... wolffd@0: 'Position',[0.07000000000000001 0.09236947791164658 0.06333333333333334 0.07228915662650602], ... wolffd@0: 'Style','radiobutton', ... wolffd@0: 'Tag','Radiobutton4'); wolffd@0: wolffd@0: data.sel_vects_button_h=h1; wolffd@0: wolffd@0: h1 = uicontrol('Parent',h0, ... wolffd@0: 'Units','normalized', ... wolffd@0: 'BackgroundColor',[0.8 0.8 0.8], ... wolffd@0: 'FontSize',6, ... wolffd@0: 'FontWeight','demi', ... wolffd@0: 'HorizontalAlignment','left', ... wolffd@0: 'ListboxTop',0, ... wolffd@0: 'Position',[0.1466666666666667 0.1927710843373494 0.2333333333333333 0.07228915662650602], ... wolffd@0: 'String','All vectors', ... wolffd@0: 'Style','text', ... wolffd@0: 'Tag','StaticText6'); wolffd@0: h1 = uicontrol('Parent',h0, ... wolffd@0: 'Units','normalized', ... wolffd@0: 'BackgroundColor',[0.8 0.8 0.8], ... wolffd@0: 'FontSize',6, ... wolffd@0: 'FontWeight','demi', ... wolffd@0: 'HorizontalAlignment','left', ... wolffd@0: 'ListboxTop',0, ... wolffd@0: 'Position',[0.1466666666666667 0.09638554216867469 0.3133333333333334 0.05622489959839357], ... wolffd@0: 'String','Among selected', ... wolffd@0: 'Style','text', ... wolffd@0: 'Tag','StaticText7'); wolffd@0: h1 = uicontrol('Parent',h0, ... wolffd@0: 'Units','normalized', ... wolffd@0: 'BackgroundColor',[1 1 1], ... wolffd@0: 'ListboxTop',0, ... wolffd@0: 'Position',[0.7866666666666667 0.823293172690763 0.1366666666666667 0.09236947791164658], ... wolffd@0: 'Style','edit', ... wolffd@0: 'Tag','EditText4'); wolffd@0: wolffd@0: data.replace_val_h=h1; wolffd@0: wolffd@0: h1 = uicontrol('Parent',h0, ... wolffd@0: 'Units','normalized', ... wolffd@0: 'BackgroundColor',[0.8 0.8 0.8], ... wolffd@0: 'FontSize',6, ... wolffd@0: 'FontWeight','demi', ... wolffd@0: 'HorizontalAlignment','left', ... wolffd@0: 'ListboxTop',0, ... wolffd@0: 'Position',[0.5633333333333334 0.8273092369477911 0.2066666666666667 0.07630522088353413], ... wolffd@0: 'String','Replace', ... wolffd@0: 'Style','text', ... wolffd@0: 'Tag','StaticText8'); wolffd@0: h1 = uicontrol('Parent',h0, ... wolffd@0: 'Units','normalized', ... wolffd@0: 'FontWeight','demi', ... wolffd@0: 'ListboxTop',0, ... wolffd@0: 'Position',[0.5700000000000001 0.6827309236947791 0.3566666666666667 0.08032128514056225], ... wolffd@0: 'String','Replace', ... wolffd@0: 'Tag','Pushbutton1'); wolffd@0: wolffd@0: data.OK_button_h=h1; wolffd@0: wolffd@0: h1 = uicontrol('Parent',h0, ... wolffd@0: 'Units','normalized', ... wolffd@0: 'BackgroundColor',[0.752941176470588 0.752941176470588 0.752941176470588], ... wolffd@0: 'Callback','preprocess close_c',... wolffd@0: 'FontWeight','demi', ... wolffd@0: 'ListboxTop',0, ... wolffd@0: 'Position',[0.6633333333333333 0.07228915662650602 0.2833333333333333 0.09638554216867469], ... wolffd@0: 'String','Close', ... wolffd@0: 'Tag','Pushbutton2'); wolffd@0: wolffd@0: wolffd@0: data.state.and=1; wolffd@0: data.state.all=1; wolffd@0: data.state.big=[]; wolffd@0: data.state.small=[]; wolffd@0: data.state.equal=[]; wolffd@0: data.state.replace=[]; wolffd@0: wolffd@0: set(data.or_button_h,'Callback','preprocess and_or_cb or'); wolffd@0: set(data.and_button_h,'Callback','preprocess and_or_cb and'); wolffd@0: set(data.and_button_h,'Value',1); wolffd@0: set(data.all_button_h,'Callback','preprocess all_sel_cb all'); wolffd@0: set(data.sel_vects_button_h,'Callback','preprocess all_sel_cb sel'); wolffd@0: set(data.big_val_h,'Callback','preprocess set_state_vals big'); wolffd@0: set(data.small_val_h,'Callback','preprocess set_state_vals small'); wolffd@0: set(data.equal_val_h,'Callback','preprocess set_state_vals equal'); wolffd@0: set(data.replace_val_h,'Callback','preprocess set_state_vals replace'); wolffd@0: set(data.OK_button_h,'Callback','preprocess clip_data clip'); wolffd@0: set(h0,'UserData',data); wolffd@0: wolffd@0: %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% wolffd@0: wolffd@0: function select(varargin) wolffd@0: wolffd@0: if nargin ~= 1 wolffd@0: pre_h=findobj(get(0,'Children'),'Tag','Preprocess'); wolffd@0: preh_udata=get(pre_h,'UserData'); wolffd@0: preh_udata.LOG{length(preh_udata.LOG)+1}=... wolffd@0: '% Starting the ''Select'' -window...'; wolffd@0: preh_udata.LOG{length(preh_udata.LOG)+1}='preprocess(''select'',''foo'');'; wolffd@0: set(pre_h,'UserData',preh_udata); wolffd@0: end wolffd@0: wolffd@0: sel_h=findobj(get(0,'Children'),'Tag','Select'); wolffd@0: wolffd@0: if ~isempty(sel_h) wolffd@0: figure(sel_h); wolffd@0: return; wolffd@0: end wolffd@0: wolffd@0: h0 = figure('Color',[0.8 0.8 0.8], ... wolffd@0: 'PaperPosition',[18 180 576 432], ... wolffd@0: 'PaperUnits','points', ... wolffd@0: 'Position',[750 431 168 365], ... wolffd@0: 'Tag','Select'); wolffd@0: h1 = uicontrol('Parent',h0, ... wolffd@0: 'Units','normalized', ... wolffd@0: 'BackgroundColor',[0.752941176470588 0.752941176470588 0.752941176470588], ... wolffd@0: 'ListboxTop',0, ... wolffd@0: 'Position',[0.05357142857142857 0.2712328767123288 0.8333333333333333 0.6301369863013698], ... wolffd@0: 'Style','frame', ... wolffd@0: 'Tag','Frame1'); wolffd@0: wolffd@0: h1 = uicontrol('Parent',h0, ... wolffd@0: 'Units','normalized', ... wolffd@0: 'BackgroundColor',[0.752941176470588 0.752941176470588 0.752941176470588], ... wolffd@0: 'ListboxTop',0, ... wolffd@0: 'Position',[0.05357142857142857 0.1041095890410959 0.8333333333333333 0.1397260273972603], ... wolffd@0: 'Style','frame', ... wolffd@0: 'Tag','Frame2'); wolffd@0: wolffd@0: h1 = uicontrol('Parent',h0,... wolffd@0: 'Units','normalized', ... wolffd@0: 'BackgroundColor',[0.8 0.8 0.8], ... wolffd@0: 'ListboxTop',0, ... wolffd@0: 'Position',[0.09523809523809523 0.6547945205479452 0.75 0.2273972602739726], ... wolffd@0: 'Style','frame', ... wolffd@0: 'Tag','Frame3'); wolffd@0: wolffd@0: h1 = uicontrol('Parent',h0, ... wolffd@0: 'Units','normalized', ... wolffd@0: 'BackgroundColor',[0.8 0.8 0.8], ... wolffd@0: 'ListboxTop',0, ... wolffd@0: 'Position',[0.09523809523809523 0.4794520547945206 0.75 0.1506849315068493], ... wolffd@0: 'Style','frame', ... wolffd@0: 'Tag','Frame4'); wolffd@0: wolffd@0: h1 = uicontrol('Parent',h0, ... wolffd@0: 'Units','normalized', ... wolffd@0: 'BackgroundColor',[0.8 0.8 0.8], ... wolffd@0: 'ListboxTop',0, ... wolffd@0: 'Position',[0.09523809523809523 0.2986301369863014 0.75 0.1506849315068493], ... wolffd@0: 'Style','frame', ... wolffd@0: 'Tag','Frame5'); wolffd@0: wolffd@0: h1 = uicontrol('Parent',h0, ... wolffd@0: 'Units','normalized', ... wolffd@0: 'BackgroundColor',[1 1 1], ... wolffd@0: 'ListboxTop',0, ... wolffd@0: 'Position',[0.5535714285714285 0.8082191780821918 0.2678571428571429 0.06575342465753425], ... wolffd@0: 'Style','edit', ... wolffd@0: 'Tag','EditText1'); wolffd@0: wolffd@0: data.big_val_h=h1; wolffd@0: wolffd@0: h1 = uicontrol('Parent',h0, ... wolffd@0: 'Units','normalized', ... wolffd@0: 'BackgroundColor',[1 1 1], ... wolffd@0: 'ListboxTop',0, ... wolffd@0: 'Position',[0.5535714285714285 0.7342465753424657 0.2678571428571429 0.06575342465753425], ... wolffd@0: 'Style','edit', ... wolffd@0: 'Tag','EditText2'); wolffd@0: wolffd@0: data.small_val_h = h1; wolffd@0: wolffd@0: h1 = uicontrol('Parent',h0, ... wolffd@0: 'Units','normalized', ... wolffd@0: 'BackgroundColor',[1 1 1], ... wolffd@0: 'ListboxTop',0, ... wolffd@0: 'Position',[0.5535714285714285 0.6602739726027397 0.2678571428571429 0.06575342465753425], ... wolffd@0: 'Style','edit', ... wolffd@0: 'Tag','EditText3'); wolffd@0: wolffd@0: data.equal_val_h=h1; wolffd@0: wolffd@0: h1 = uicontrol('Parent',h0, ... wolffd@0: 'BackgroundColor',[0.8 0.8 0.8], ... wolffd@0: 'Units','normalized', ... wolffd@0: 'FontWeight','demi', ... wolffd@0: 'FontSize',8,... wolffd@0: 'HorizontalAlignment','left', ... wolffd@0: 'ListboxTop',0, ... wolffd@0: 'Position',[0.1071 0.8247 0.3929 0.0384], ... wolffd@0: 'String','Bigger than', ... wolffd@0: 'Style','text', ... wolffd@0: 'Tag','StaticText1'); wolffd@0: wolffd@0: h1 = uicontrol('Parent',h0, ... wolffd@0: 'BackgroundColor',[0.8 0.8 0.8], ... wolffd@0: 'Units','normalized', ... wolffd@0: 'FontWeight','demi', ... wolffd@0: 'FontSize',8,... wolffd@0: 'HorizontalAlignment','left', ... wolffd@0: 'ListboxTop',0, ... wolffd@0: 'Position',[0.1071 0.7507 0.4286 0.0329], ... wolffd@0: 'String','Smaller than', ... wolffd@0: 'Style','text', ... wolffd@0: 'Tag','StaticText2'); wolffd@0: wolffd@0: h1 = uicontrol('Parent',h0, ... wolffd@0: 'Units','normalized', ... wolffd@0: 'BackgroundColor',[0.8 0.8 0.8], ... wolffd@0: 'FontWeight','demi', ... wolffd@0: 'FontSize',8,... wolffd@0: 'HorizontalAlignment','left', ... wolffd@0: 'ListboxTop',0, ... wolffd@0: 'Position',[0.1071 0.6630 0.3929 0.0493], ... wolffd@0: 'String','Equal to', ... wolffd@0: 'Style','text', ... wolffd@0: 'Tag','StaticText3'); wolffd@0: wolffd@0: h1 = uicontrol('Parent',h0, ... wolffd@0: 'Units','normalized', ... wolffd@0: 'BackgroundColor',[0.8 0.8 0.8], ... wolffd@0: 'ListboxTop',0, ... wolffd@0: 'Position',[0.125 0.5643835616438356 0.1130952380952381 0.04931506849315068], ... wolffd@0: 'Style','radiobutton', ... wolffd@0: 'Tag','Radiobutton1'); wolffd@0: wolffd@0: data.and_button_h = h1; wolffd@0: wolffd@0: h1 = uicontrol('Parent',h0, ... wolffd@0: 'Units','normalized', ... wolffd@0: 'BackgroundColor',[0.8 0.8 0.8], ... wolffd@0: 'ListboxTop',0, ... wolffd@0: 'Position',[0.125 0.5013698630136987 0.1130952380952381 0.04931506849315068], ... wolffd@0: 'Style','radiobutton', ... wolffd@0: 'Tag','Radiobutton2'); wolffd@0: wolffd@0: data.or_button_h = h1; wolffd@0: wolffd@0: h1 = uicontrol('Parent',h0, ... wolffd@0: 'Units','normalized', ... wolffd@0: 'BackgroundColor',[0.8 0.8 0.8], ... wolffd@0: 'FontWeight','demi', ... wolffd@0: 'FontSize',8,... wolffd@0: 'HorizontalAlignment','left', ... wolffd@0: 'ListboxTop',0, ... wolffd@0: 'Position',[0.2619047619047619 0.5561643835616439 0.3809523809523809 0.05205479452054795], ... wolffd@0: 'String','AND', ... wolffd@0: 'Style','text', ... wolffd@0: 'Tag','StaticText4'); wolffd@0: wolffd@0: h1 = uicontrol('Parent',h0, ... wolffd@0: 'Units','normalized', ... wolffd@0: 'BackgroundColor',[0.8 0.8 0.8], ... wolffd@0: 'FontWeight','demi', ... wolffd@0: 'FontSize',8,... wolffd@0: 'HorizontalAlignment','left', ... wolffd@0: 'ListboxTop',0, ... wolffd@0: 'Position',[0.2619047619047619 0.4986301369863014 0.3809523809523809 0.04657534246575343], ... wolffd@0: 'String','OR', ... wolffd@0: 'Style','text', ... wolffd@0: 'Tag','StaticText5'); wolffd@0: wolffd@0: h1 = uicontrol('Parent',h0, ... wolffd@0: 'Units','normalized', ... wolffd@0: 'BackgroundColor',[0.8 0.8 0.8], ... wolffd@0: 'ListboxTop',0, ... wolffd@0: 'Position',[0.125 0.3808219178082192 0.1130952380952381 0.04931506849315068], ... wolffd@0: 'Style','radiobutton', ... wolffd@0: 'Tag','Radiobutton3'); wolffd@0: wolffd@0: data.all_button_h = h1; wolffd@0: wolffd@0: h1 = uicontrol('Parent',h0, ... wolffd@0: 'Units','normalized', ... wolffd@0: 'BackgroundColor',[0.8 0.8 0.8], ... wolffd@0: 'ListboxTop',0, ... wolffd@0: 'Position',[0.125 0.3095890410958904 0.1130952380952381 0.04931506849315068], ... wolffd@0: 'Style','radiobutton', ... wolffd@0: 'Tag','Radiobutton4'); wolffd@0: wolffd@0: data.sel_vects_button_h = h1; wolffd@0: wolffd@0: h1 = uicontrol('Parent',h0, ... wolffd@0: 'Units','normalized', ... wolffd@0: 'BackgroundColor',[0.8 0.8 0.8], ... wolffd@0: 'FontWeight','demi', ... wolffd@0: 'FontSize',8,... wolffd@0: 'HorizontalAlignment','left', ... wolffd@0: 'ListboxTop',0, ... wolffd@0: 'Position',[0.2619047619047619 0.3780821917808219 0.4166666666666666 0.04931506849315068], ... wolffd@0: 'String','All vectors', ... wolffd@0: 'Style','text', ... wolffd@0: 'Tag','StaticText6'); wolffd@0: wolffd@0: h1 = uicontrol('Parent',h0, ... wolffd@0: 'Units','normalized', ... wolffd@0: 'BackgroundColor',[0.8 0.8 0.8], ... wolffd@0: 'FontWeight','demi', ... wolffd@0: 'FontSize',8,... wolffd@0: 'HorizontalAlignment','left', ... wolffd@0: 'ListboxTop',0, ... wolffd@0: 'Position',[0.2619047619047619 0.3123287671232877 0.5595238095238095 0.03835616438356165], ... wolffd@0: 'String','Among selected', ... wolffd@0: 'Style','text', ... wolffd@0: 'Tag','StaticText7'); wolffd@0: wolffd@0: h1 = uicontrol('Parent',h0, ... wolffd@0: 'Units','normalized', ... wolffd@0: 'BackgroundColor',[0.8 0.8 0.8], ... wolffd@0: 'ListboxTop',0, ... wolffd@0: 'Position',[0.0952 0.1178 0.7500 0.1068], ... wolffd@0: 'Style','frame', ... wolffd@0: 'Tag','Frame6'); wolffd@0: wolffd@0: h1 = uicontrol('Parent',h0, ... wolffd@0: 'Units','normalized', ... wolffd@0: 'BackgroundColor',[1 1 1], ... wolffd@0: 'ListboxTop',0, ... wolffd@0: 'Position',[0.5298 0.1342 0.2738 0.0712], ... wolffd@0: 'Style','edit', ... wolffd@0: 'Tag','EditText4'); wolffd@0: wolffd@0: data.replace_val_h = h1; wolffd@0: wolffd@0: h1 = uicontrol('Parent',h0, ... wolffd@0: 'Units','normalized', ... wolffd@0: 'BackgroundColor',[0.8 0.8 0.8], ... wolffd@0: 'FontSize',8,... wolffd@0: 'FontWeight','demi', ... wolffd@0: 'HorizontalAlignment','left', ... wolffd@0: 'ListboxTop',0, ... wolffd@0: 'Position',[0.1369047619047619 0.136986301369863 0.3214285714285714 0.06027397260273973], ... wolffd@0: 'String','Vectors', ... wolffd@0: 'Style','text', ... wolffd@0: 'Tag','StaticText8'); wolffd@0: wolffd@0: h1 = uicontrol('Parent',h0, ... wolffd@0: 'Units','normalized', ... wolffd@0: 'BackgroundColor',[0.752941176470588 0.752941176470588 0.752941176470588], ... wolffd@0: 'FontWeight','demi', ... wolffd@0: 'ListboxTop',0, ... wolffd@0: 'Position',[0.05357142857142857 0.01917808219178082 0.3869047619047619 0.0684931506849315], ... wolffd@0: 'String','OK', ... wolffd@0: 'Tag','Pushbutton1'); wolffd@0: wolffd@0: data.OK_button_h = h1; wolffd@0: wolffd@0: h1 = uicontrol('Parent',h0, ... wolffd@0: 'Units','normalized', ... wolffd@0: 'BackgroundColor',[0.752941176470588 0.752941176470588 0.752941176470588], ... wolffd@0: 'Callback','preprocess close_s',... wolffd@0: 'FontWeight','demi', ... wolffd@0: 'ListboxTop',0, ... wolffd@0: 'Position',[0.5 0.01917808219178082 0.3869047619047619 0.0684931506849315], ... wolffd@0: 'String','Close', ... wolffd@0: 'Tag','Pushbutton2'); wolffd@0: wolffd@0: wolffd@0: wolffd@0: data.state.and=1; wolffd@0: data.state.all=1; wolffd@0: data.state.big=[]; wolffd@0: data.state.small=[]; wolffd@0: data.state.equal=[]; wolffd@0: data.state.replace=[]; wolffd@0: wolffd@0: set(data.or_button_h,'Callback','preprocess and_or_cb or'); wolffd@0: set(data.and_button_h,'Callback','preprocess and_or_cb and'); wolffd@0: set(data.and_button_h,'Value',1); wolffd@0: set(data.all_button_h,'Callback','preprocess all_sel_cb all'); wolffd@0: set(data.sel_vects_button_h,'Callback','preprocess all_sel_cb sel'); wolffd@0: set(data.big_val_h,'Callback','preprocess set_state_vals big'); wolffd@0: set(data.small_val_h,'Callback','preprocess set_state_vals small'); wolffd@0: set(data.equal_val_h,'Callback','preprocess set_state_vals equal'); wolffd@0: set(data.replace_val_h,'Callback','preprocess set_state_vals replace'); wolffd@0: set(data.OK_button_h,'Callback','preprocess clip_data sel'); wolffd@0: set(h0,'UserData',data); wolffd@0: wolffd@0: wolffd@0: wolffd@0: %%% Subfunction: and_or_cb %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% wolffd@0: wolffd@0: function and_or_cb(arg) wolffd@0: wolffd@0: %AND_OR_CB A callback function. Checks that only one of the radiobox wolffd@0: % buttons 'AND' and 'OR' is pressed down. wolffd@0: % wolffd@0: % wolffd@0: wolffd@0: and_button_h=getfield(get(gcf,'UserData'),'and_button_h'); wolffd@0: or_button_h=getfield(get(gcf,'UserData'),'or_button_h'); wolffd@0: data=get(gcf,'UserData'); wolffd@0: wolffd@0: switch arg wolffd@0: case 'or' wolffd@0: set(and_button_h,'Value',0); wolffd@0: set(or_button_h,'Value',1); wolffd@0: data.state.and=0; wolffd@0: case 'and' wolffd@0: set(or_button_h,'Value',0); wolffd@0: set(and_button_h,'Value',1); wolffd@0: data.state.and=1; wolffd@0: end wolffd@0: wolffd@0: set(gcf,'UserData',data); wolffd@0: wolffd@0: %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% wolffd@0: wolffd@0: %%% Subfunction: all_sel_cb %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% wolffd@0: wolffd@0: function all_sel_cb(arg) wolffd@0: wolffd@0: all_button_h=getfield(get(gcf,'UserData'),'all_button_h'); wolffd@0: sel_vects_button_h=getfield(get(gcf,'UserData'),'sel_vects_button_h'); wolffd@0: data=get(gcf,'UserData'); wolffd@0: wolffd@0: switch arg wolffd@0: case 'all' wolffd@0: set(sel_vects_button_h,'Value',0); wolffd@0: set(all_button_h,'Value',1); wolffd@0: data.state.all=1; wolffd@0: case 'sel' wolffd@0: set(all_button_h,'Value',0); wolffd@0: set(sel_vects_button_h,'Value',1); wolffd@0: data.state.all=0; wolffd@0: end wolffd@0: wolffd@0: set(gcf,'UserData',data); wolffd@0: wolffd@0: %%% Subfunction: set_state_vals %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% wolffd@0: wolffd@0: function set_state_vals(arg) wolffd@0: wolffd@0: %SET_STATE_VALS sets the values to the UserData's state-struct. wolffd@0: % wolffd@0: % wolffd@0: wolffd@0: wolffd@0: data=get(gcf,'UserData'); wolffd@0: wolffd@0: switch arg wolffd@0: case 'big' wolffd@0: big_val_h=getfield(get(gcf,'UserData'),'big_val_h'); wolffd@0: val =str2num(get(big_val_h,'String')); wolffd@0: dims=size(val); wolffd@0: if dims(1) ~= 1 | dims(2) ~= 1 wolffd@0: errordlg('Argument of the operation must be scalar.'); wolffd@0: set(big_val_h,'String',''); wolffd@0: return; wolffd@0: end wolffd@0: if isreal(val) wolffd@0: data.state.big=val; wolffd@0: else wolffd@0: errordlg('Limits of the operation must be real.'); wolffd@0: set(big_val_h,'String',''); wolffd@0: return; wolffd@0: end wolffd@0: case 'small' wolffd@0: small_val_h=getfield(get(gcf,'UserData'),'small_val_h'); wolffd@0: val=str2num(get(small_val_h,'String')); wolffd@0: dims=size(val); wolffd@0: if dims(1) ~= 1 | dims(2) ~= 1 wolffd@0: errordlg('Argument of the operation must be scalar.') wolffd@0: set(small_val_h,'String',''); wolffd@0: return; wolffd@0: end wolffd@0: if isreal(val) wolffd@0: data.state.small=val; wolffd@0: else wolffd@0: errordlg('Limits of the operation must be real.'); wolffd@0: set(small_val_h,'String',''); wolffd@0: return; wolffd@0: end wolffd@0: case 'equal' wolffd@0: equal_val_h=getfield(get(gcf,'UserData'),'equal_val_h'); wolffd@0: val = str2num(get(equal_val_h,'String')); wolffd@0: dims=size(val); wolffd@0: if dims(1) ~= 1 | dims(2) ~= 1 wolffd@0: errordlg('Argument of the operation must be scalar.'); wolffd@0: set(equal_val_h,'String',''); wolffd@0: return; wolffd@0: end wolffd@0: if isreal(val) wolffd@0: data.state.equal=val; wolffd@0: else wolffd@0: errordlg('Limits of the operation must be real.'); wolffd@0: set(equal_val_h,'String',''); wolffd@0: return; wolffd@0: end wolffd@0: case 'replace' wolffd@0: replace_val_h=getfield(get(gcf,'UserData'),'replace_val_h'); wolffd@0: val=str2num(get(replace_val_h,'String')); wolffd@0: dims=size(val); wolffd@0: if (dims(1) ~= 1 | dims(2) ~= 1) & ~strcmp(get(gcf,'Tag'),'Select') wolffd@0: errordlg('Argument of the operation must be scalar.'); wolffd@0: set(replace_val_h,'String',''); wolffd@0: return; wolffd@0: end wolffd@0: if isreal(val) wolffd@0: data.state.replace=val; wolffd@0: else wolffd@0: errordlg('Limits of the operation must be real.'); wolffd@0: set(replace_val_h,'String',''); wolffd@0: return; wolffd@0: end wolffd@0: end wolffd@0: wolffd@0: set(gcf,'UserData',data); wolffd@0: wolffd@0: %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% wolffd@0: wolffd@0: %%% Subfunction: clip_data %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% wolffd@0: wolffd@0: function clip_data(arg) wolffd@0: wolffd@0: %CLIP_DATA A callback function. Filters the data. wolffd@0: % wolffd@0: % wolffd@0: wolffd@0: i=1; wolffd@0: while i <= length(arg) & arg(i) ~= ' ' wolffd@0: i=i+1; wolffd@0: end wolffd@0: wolffd@0: arg2=arg(i+1:length(arg)); wolffd@0: arg=arg(1:i-1); wolffd@0: wolffd@0: if ~isempty(arg2) wolffd@0: LOG=1; wolffd@0: if strcmp(arg,'sel') wolffd@0: c_h=findobj(get(0,'Children'),'Tag','Select'); wolffd@0: else wolffd@0: c_h=findobj(get(0,'Children'),'Tag','Clipping'); wolffd@0: end wolffd@0: set(0,'CurrentFigure',c_h); wolffd@0: i=1; wolffd@0: while i <= length(arg2) & arg2(i) ~= ' ' wolffd@0: i=i+1; wolffd@0: end wolffd@0: BT=str2num(arg2(1:i-1)); wolffd@0: i=i+1; wolffd@0: j=i; wolffd@0: while i <= length(arg2) & arg2(i) ~= ' ' wolffd@0: i=i+1; wolffd@0: end wolffd@0: ST=str2num(arg2(j:i-1)); wolffd@0: i=i+1; wolffd@0: j=i; wolffd@0: while i <= length(arg2) & arg2(i) ~= ' ' wolffd@0: i=i+1; wolffd@0: end wolffd@0: EQ=str2num(arg2(j:i-1)); wolffd@0: i=i+1; wolffd@0: j=i; wolffd@0: while i <= length(arg2) & arg2(i) ~= ' ' wolffd@0: i=i+1; wolffd@0: end wolffd@0: AND_OR=str2num(arg2(j:i-1)); wolffd@0: i=i+1; wolffd@0: j=i; wolffd@0: while i <= length(arg2) & arg2(i) ~= ' ' wolffd@0: i=i+1; wolffd@0: end wolffd@0: ALL_AMONG=str2num(arg2(j:i-1)); wolffd@0: i=i+1; wolffd@0: j=i; wolffd@0: while i <= length(arg2) wolffd@0: i=i+1; wolffd@0: end wolffd@0: VECT_REPL=str2num(arg2(j:i-1)); wolffd@0: else wolffd@0: LOG=0; wolffd@0: end wolffd@0: wolffd@0: if ~LOG wolffd@0: big_val_h=getfield(get(gcf,'UserData'),'big_val_h'); wolffd@0: small_val_h=getfield(get(gcf,'UserData'),'small_val_h'); wolffd@0: equal_val_h=getfield(get(gcf,'UserData'),'equal_val_h'); wolffd@0: replace_val_h=getfield(get(gcf,'UserData'),'replace_val_h'); wolffd@0: end wolffd@0: wolffd@0: pre_h=findobj(get(0,'Children'),'Tag','Preprocess'); wolffd@0: wolffd@0: if isempty(pre_h) wolffd@0: errordlg('''Preprocess'' -figure does not exist. Terminating program...'); wolffd@0: pro_tools('close'); wolffd@0: return; wolffd@0: end wolffd@0: wolffd@0: comp_names_h=getfield(get(pre_h,'UserData'),'comp_names_h'); wolffd@0: selected=getfield(get(pre_h,'UserData'),'selected_vects'); wolffd@0: sData=getfield(get(pre_h,'UserData'),'sData'); wolffd@0: undo = sData; wolffd@0: state=getfield(get(gcf,'UserData'),'state'); wolffd@0: wolffd@0: if LOG wolffd@0: state.big=BT; wolffd@0: state.small=ST; wolffd@0: state.equal=EQ; wolffd@0: state.replace=VECT_REPL; wolffd@0: state.and=AND_OR; wolffd@0: state.all=ALL_AMONG; wolffd@0: end wolffd@0: wolffd@0: if isempty(pre_h) wolffd@0: pro_tools('close'); wolffd@0: end wolffd@0: wolffd@0: if isempty(get(comp_names_h,'Value')) wolffd@0: clear_state_vals; wolffd@0: errordlg('There must be one component chosen for the operation.'); wolffd@0: return; wolffd@0: end wolffd@0: wolffd@0: n_th_comp=getfield(get_indices,{1}); wolffd@0: wolffd@0: if isempty(state.big) & isempty(state.small) & isempty(state.equal) & ... wolffd@0: strcmp(arg,'clip') wolffd@0: clear_state_vals; wolffd@0: errordlg('At least one limit must be chosen for the-operation.'); wolffd@0: return; wolffd@0: end wolffd@0: wolffd@0: if ~isempty(state.replace) & strcmp(arg,'sel') wolffd@0: if ~all(state.replace == round(state.replace)) | any(state.replace < 1) wolffd@0: errordlg('Indices of vectors must be positive integers.'); wolffd@0: return; wolffd@0: elseif any(state.replace > length(sData.data(:,1))) wolffd@0: errordlg('Indices of the vectors to be selected are too big.'); wolffd@0: return; wolffd@0: end wolffd@0: end wolffd@0: wolffd@0: if isempty(state.replace) & strcmp(arg,'clip') wolffd@0: clear_state_vals; wolffd@0: errordlg('Replace value must be determined for Clipping-operation.'); wolffd@0: return; wolffd@0: end wolffd@0: wolffd@0: if isempty(state.big) & isempty(state.small) & isempty(state.equal) & ... wolffd@0: isempty(state.replace) wolffd@0: clear_state_vals; wolffd@0: return; wolffd@0: end wolffd@0: wolffd@0: bt_indices=[]; wolffd@0: lt_indices=[]; wolffd@0: equal_indices=[]; wolffd@0: wolffd@0: wolffd@0: if ~isempty(state.big) wolffd@0: if state.all wolffd@0: bt_indices=find(sData.data(:,n_th_comp) > state.big); wolffd@0: else wolffd@0: bt_indices=selected(find(sData.data(selected,n_th_comp) > state.big)); wolffd@0: end wolffd@0: end wolffd@0: wolffd@0: if ~isempty(state.small) wolffd@0: if state.all wolffd@0: lt_indices=find(sData.data(:,n_th_comp) < state.small); wolffd@0: else wolffd@0: lt_indices=selected(find(sData.data(selected,n_th_comp) < state.small)); wolffd@0: end wolffd@0: end wolffd@0: wolffd@0: if ~isempty(state.equal) wolffd@0: if isnan(state.equal) wolffd@0: if state.all wolffd@0: equal_indices=find(isnan(sData.data(:,n_th_comp))); wolffd@0: else wolffd@0: equal_indices=selected(find(isnan(sData.data(selected,n_th_comp)))); wolffd@0: end wolffd@0: elseif state.all wolffd@0: equal_indices=find(sData.data(:,n_th_comp)==state.equal); wolffd@0: else wolffd@0: equal_indices=selected(find(sData.data(selected,n_th_comp)==state.equal)); wolffd@0: end wolffd@0: end wolffd@0: wolffd@0: if state.and wolffd@0: wolffd@0: if ~isempty(bt_indices) | ~isempty(lt_indices) | ~isempty(equal_indices)... wolffd@0: | strcmp(arg,'sel') wolffd@0: wolffd@0: if isempty(bt_indices) & isempty(lt_indices) & isempty(equal_indices) &... wolffd@0: isempty(state.replace) wolffd@0: clear_state_vals; wolffd@0: return; wolffd@0: end wolffd@0: if isempty(bt_indices) wolffd@0: if ~state.all wolffd@0: bt_indices=selected; wolffd@0: else wolffd@0: bt_indices=1:getfield(size(sData.data),{1}); wolffd@0: end wolffd@0: end wolffd@0: if isempty(lt_indices) wolffd@0: if ~state.all wolffd@0: lt_indices=selected; wolffd@0: else wolffd@0: lt_indices=1:getfield(size(sData.data),{1}); wolffd@0: end wolffd@0: end wolffd@0: if isempty(equal_indices) wolffd@0: if ~state.all wolffd@0: equal_indices=selected; wolffd@0: else wolffd@0: equal_indices=1:getfield(size(sData.data),{1}); wolffd@0: end wolffd@0: end wolffd@0: wolffd@0: indices=intersect(intersect(bt_indices,lt_indices),equal_indices); wolffd@0: if strcmp(arg,'sel') wolffd@0: if ~isempty(indices) | ~isempty(state.replace) wolffd@0: if isempty(state.replace) wolffd@0: NOTEMPTY=0; wolffd@0: if ~state.all wolffd@0: state.replace=selected; wolffd@0: else wolffd@0: state.replace=1:getfield(size(sData.data),{1}); wolffd@0: end wolffd@0: else wolffd@0: NOTEMPTY=1; wolffd@0: end wolffd@0: if isempty(indices) wolffd@0: indices=selected; wolffd@0: end wolffd@0: indices=intersect(indices,state.replace); wolffd@0: if isempty(indices) wolffd@0: indices=selected; wolffd@0: end wolffd@0: data=get(pre_h,'UserData'); wolffd@0: data.undo.sData=sData; wolffd@0: data.undo.selected=data.selected_vects; wolffd@0: data.selected_vects=indices; wolffd@0: if ~LOG wolffd@0: if ~NOTEMPTY wolffd@0: data.LOG{length(data.LOG)+1}='% Select vectors.'; wolffd@0: data.LOG{length(data.LOG)+1}=cat(2,'preprocess(''clip_data'',''',... wolffd@0: arg,... wolffd@0: ' ',num2str(state.big),... wolffd@0: ' ',num2str(state.small),... wolffd@0: ' ',num2str(state.equal),... wolffd@0: ' ',num2str(state.and),... wolffd@0: ' ',num2str(state.all),... wolffd@0: ''');'); wolffd@0: else wolffd@0: code=write_log_code(state.replace,... wolffd@0: arg,... wolffd@0: state.big,... wolffd@0: state.small,... wolffd@0: state.equal,... wolffd@0: state.and,... wolffd@0: state.all); wolffd@0: data.LOG(length(data.LOG)+1:length(data.LOG)+length(code))=code; wolffd@0: end wolffd@0: end wolffd@0: set(pre_h,'UserData',data); wolffd@0: old=gcf; wolffd@0: set(0,'CurrentFigure',pre_h); wolffd@0: sel_comp; wolffd@0: cplot_mimema; wolffd@0: vect_means(data.sData,data.vect_mean_h,data.selected_vects); wolffd@0: set(0,'CurrentFigure',old); wolffd@0: end wolffd@0: clear_state_vals; wolffd@0: return; wolffd@0: end wolffd@0: sData.data(indices,n_th_comp) = state.replace; wolffd@0: sData.MODIFIED=1; wolffd@0: end wolffd@0: else wolffd@0: indices=union(union(bt_indices,lt_indices),equal_indices); wolffd@0: if ~isempty(indices) | strcmp(arg,'sel') wolffd@0: if strcmp(arg,'sel') wolffd@0: if ~isempty(indices) | ~isempty(state.replace') wolffd@0: data=get(pre_h,'UserData'); wolffd@0: data.undo.sData=sData; wolffd@0: data.undo.selected=data.selected_vects; wolffd@0: data.selected_vects=union(indices,state.replace); wolffd@0: if ~LOG wolffd@0: if isempty(state.replace); wolffd@0: data.LOG{length(data.LOG)+1}=cat(2,'preprocess(''clip_data'',''',... wolffd@0: arg,... wolffd@0: ' ',num2str(state.big),... wolffd@0: ' ',num2str(state.small),... wolffd@0: ' ',num2str(state.equal),... wolffd@0: ' ',num2str(state.and),... wolffd@0: ' ',num2str(state.all),... wolffd@0: ''');'); wolffd@0: else wolffd@0: code=write_log_code(state.replace,... wolffd@0: arg,... wolffd@0: state.big,... wolffd@0: state.small,... wolffd@0: state.equal,... wolffd@0: state.and,... wolffd@0: state.all); wolffd@0: data.LOG(length(data.LOG)+1:length(data.LOG)+length(code))=code; wolffd@0: end wolffd@0: end wolffd@0: set(pre_h,'UserData',data); wolffd@0: old=gcf; wolffd@0: set(0,'CurrentFigure',pre_h); wolffd@0: sel_comp; wolffd@0: vect_means(data.sData,data.vect_mean_h,data.selected_vects); wolffd@0: cplot_mimema; wolffd@0: set(0,'CurrentFigure',old); wolffd@0: end wolffd@0: clear_state_vals; wolffd@0: return; wolffd@0: end wolffd@0: sData.data(indices,n_th_comp)=state.replace; wolffd@0: sData.MODIFIED=1; wolffd@0: end wolffd@0: end wolffd@0: wolffd@0: if sData.MODIFIED wolffd@0: data=get(pre_h,'UserData'); wolffd@0: data.sData=sData; wolffd@0: data.undo.sData=undo; wolffd@0: if ~LOG wolffd@0: if strcmp(arg,'sel') wolffd@0: data.LOG{length(data.LOG)+1}='% Select vectors'; wolffd@0: else wolffd@0: data.LOG{length(data.LOG)+1}='% Clip values.'; wolffd@0: end wolffd@0: if strcmp(arg,'clip') | isempty(state.replace) wolffd@0: data.LOG{length(data.LOG)+1}=cat(2,'preprocess(''clip_data'',''',arg,... wolffd@0: ' ',num2str(state.big),... wolffd@0: ' ',num2str(state.small),... wolffd@0: ' ',num2str(state.equal),... wolffd@0: ' ',num2str(state.and),... wolffd@0: ' ',num2str(state.all),... wolffd@0: ' ',num2str(state.replace),... wolffd@0: ''');'); wolffd@0: else wolffd@0: code=write_log_code(state.replace,... wolffd@0: arg,... wolffd@0: state.big,... wolffd@0: state.small,... wolffd@0: state.equal,... wolffd@0: state.and,... wolffd@0: state.all); wolffd@0: data.LOG(length(data.LOG)+1:length(data.LOG)+length(code))=code; wolffd@0: end wolffd@0: end wolffd@0: set(pre_h,'UserData',data); wolffd@0: old=gcf; wolffd@0: set(0,'CurrentFigure',pre_h) wolffd@0: wolffd@0: vector_h=getfield(get(gcf,'UserData'),'vector_h'); wolffd@0: vect_mean_h=getfield(get(gcf,'UserData'),'vect_mean_h'); wolffd@0: set(gcf,'CurrentAxes',vector_h); wolffd@0: vect_means(sData,vect_mean_h,selected); wolffd@0: cplot_mimema; wolffd@0: sel_comp; wolffd@0: wolffd@0: set(0,'CurrentFigure',old); wolffd@0: end wolffd@0: wolffd@0: clear_state_vals; wolffd@0: wolffd@0: %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% wolffd@0: wolffd@0: %%% Subfunction: clear_state_vals %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% wolffd@0: wolffd@0: function clear_state_vals wolffd@0: wolffd@0: %CLEAR_STATE_VALS Sets the fields of the UserData's state-struct empty. wolffd@0: % wolffd@0: % wolffd@0: wolffd@0: wolffd@0: data=get(gcf,'UserData'); wolffd@0: set(data.big_val_h,'String',''); wolffd@0: set(data.small_val_h,'String',''); wolffd@0: set(data.equal_val_h,'String',''); wolffd@0: set(data.replace_val_h,'String',''); wolffd@0: data.state.big=[]; wolffd@0: data.state.small=[]; wolffd@0: data.state.equal=[]; wolffd@0: data.state.replace=[]; wolffd@0: set(gcf,'UserData',data); wolffd@0: wolffd@0: %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% wolffd@0: wolffd@0: function delay(varargin) wolffd@0: wolffd@0: delay_h=findobj(get(0,'Children'),'Tag','Delay'); wolffd@0: wolffd@0: if nargin ~= 1 wolffd@0: pre_h=findobj(get(0,'Children'),'Tag','Preprocess'); wolffd@0: preh_udata=get(pre_h,'UserData'); wolffd@0: preh_udata.LOG{length(preh_udata.LOG)+1}=... wolffd@0: '% Starting the ''Delay'' -window...'; wolffd@0: preh_udata.LOG{length(preh_udata.LOG)+1}='preprocess(''delay'',''foo'');'; wolffd@0: set(pre_h,'UserData',preh_udata); wolffd@0: end wolffd@0: wolffd@0: if ~isempty(delay_h) wolffd@0: figure(delay_h); wolffd@0: return; wolffd@0: end wolffd@0: wolffd@0: h0 = figure('Color',[0.8 0.8 0.8], ... wolffd@0: 'PaperPosition',[18 180 576 432], ... wolffd@0: 'PaperUnits','points', ... wolffd@0: 'Position',[759 664 162 215], ... wolffd@0: 'Tag','Delay'); wolffd@0: wolffd@0: h1 = uicontrol('Parent',h0, ... wolffd@0: 'Units','normalized', ... wolffd@0: 'BackgroundColor',[0.752941176470588 0.752941176470588 0.752941176470588], ... wolffd@0: 'ListboxTop',0, ... wolffd@0: 'Position',[0.05555555555555555 0.2046511627906977 0.8950617283950617 0.7441860465116279], ... wolffd@0: 'Style','frame', ... wolffd@0: 'Tag','Frame1'); wolffd@0: wolffd@0: h1 = uicontrol('Parent',h0, ... wolffd@0: 'Units','normalized', ... wolffd@0: 'BackgroundColor',[0.8 0.8 0.8], ... wolffd@0: 'ListboxTop',0, ... wolffd@0: 'Position',[0.08641975308641975 0.6976744186046512 0.8333333333333333 0.2232558139534884], ... wolffd@0: 'Style','frame', ... wolffd@0: 'Tag','Frame2'); wolffd@0: wolffd@0: h1 = uicontrol('Parent',h0, ... wolffd@0: 'Units','normalized', ... wolffd@0: 'BackgroundColor',[0.8 0.8 0.8], ... wolffd@0: 'ListboxTop',0, ... wolffd@0: 'Position',[0.08641975308641975 0.227906976744186 0.8333333333333333 0.4418604651162791], ... wolffd@0: 'Style','frame', ... wolffd@0: 'Tag','Frame3'); wolffd@0: wolffd@0: h1 = uicontrol('Parent',h0, ... wolffd@0: 'Units','normalized', ... wolffd@0: 'Callback','preprocess delay_data',... wolffd@0: 'FontWeight','demi', ... wolffd@0: 'ListboxTop',0, ... wolffd@0: 'Position',[0.0556 0.0326 0.4012 0.1163], ... wolffd@0: 'String','OK', ... wolffd@0: 'Tag','Pushbutton1'); wolffd@0: wolffd@0: h1 = uicontrol('Parent',h0, ... wolffd@0: 'Units','normalized', ... wolffd@0: 'Callback','preprocess close_d',... wolffd@0: 'FontWeight','demi', ... wolffd@0: 'ListboxTop',0, ... wolffd@0: 'Position',[0.5494 0.0326 0.4012 0.1163], ... wolffd@0: 'String','Close', ... wolffd@0: 'Tag','Pushbutton2'); wolffd@0: wolffd@0: h1 = uicontrol('Parent',h0, ... wolffd@0: 'Units','normalized', ... wolffd@0: 'BackgroundColor',[1 1 1], ... wolffd@0: 'ListboxTop',0, ... wolffd@0: 'Position',[0.4876543209876543 0.7534883720930232 0.3518518518518519 0.1255813953488372], ... wolffd@0: 'Style','edit', ... wolffd@0: 'Tag','EditText1'); wolffd@0: wolffd@0: data.delay_val_h = h1; wolffd@0: wolffd@0: h1 = uicontrol('Parent',h0, ... wolffd@0: 'Units','normalized', ... wolffd@0: 'BackgroundColor',[0.8 0.8 0.8], ... wolffd@0: 'FontWeight','demi', ... wolffd@0: 'HorizontalAlignment','left', ... wolffd@0: 'ListboxTop',0, ... wolffd@0: 'Position',[0.1173 0.7860 0.3086 0.0651], ... wolffd@0: 'String','Delay', ... wolffd@0: 'Style','text', ... wolffd@0: 'Tag','StaticText1'); wolffd@0: wolffd@0: h1 = uicontrol('Parent',h0, ... wolffd@0: 'Units','normalized', ... wolffd@0: 'Callback','preprocess clip_exp_cb c_this',... wolffd@0: 'BackgroundColor',[0.8 0.8 0.8], ... wolffd@0: 'ListboxTop',0, ... wolffd@0: 'Position',[0.1173 0.5349 0.1173 0.0837], ... wolffd@0: 'Style','radiobutton', ... wolffd@0: 'Tag','Radiobutton1'); wolffd@0: wolffd@0: data.c_this_button_h=h1; wolffd@0: data.mode='c_this'; wolffd@0: wolffd@0: h1 = uicontrol('Parent',h0, ... wolffd@0: 'Units','normalized', ... wolffd@0: 'BackgroundColor',[0.8 0.8 0.8], ... wolffd@0: 'Callback','preprocess clip_exp_cb c_all',... wolffd@0: 'ListboxTop',0, ... wolffd@0: 'Position',[0.1173 0.4047 0.1173 0.0837], ... wolffd@0: 'Style','radiobutton', ... wolffd@0: 'Tag','Radiobutton2'); wolffd@0: wolffd@0: data.c_all_button_h=h1; wolffd@0: wolffd@0: h1 = uicontrol('Parent',h0, ... wolffd@0: 'Units','normalized', ... wolffd@0: 'BackgroundColor',[0.8 0.8 0.8], ... wolffd@0: 'Callback','preprocess clip_exp_cb e_all',... wolffd@0: 'ListboxTop',0, ... wolffd@0: 'Position',[0.1173 0.2651 0.1173 0.0837], ... wolffd@0: 'Style','radiobutton', ... wolffd@0: 'Tag','Radiobutton3'); wolffd@0: wolffd@0: data.e_all_button_h=h1; wolffd@0: wolffd@0: wolffd@0: h1 = uicontrol('Parent',h0, ... wolffd@0: 'Units','normalized', ... wolffd@0: 'BackgroundColor',[0.8 0.8 0.8], ... wolffd@0: 'FontWeight','demi', ... wolffd@0: 'FontSize',8,... wolffd@0: 'HorizontalAlignment','left', ... wolffd@0: 'ListboxTop',0, ... wolffd@0: 'Position',[0.26 0.5534883720930233 0.4135802469135802 0.06511627906976744], ... wolffd@0: 'String','Clip this', ... wolffd@0: 'Style','text', ... wolffd@0: 'Tag','StaticText2'); wolffd@0: h1 = uicontrol('Parent',h0, ... wolffd@0: 'Units','normalized', ... wolffd@0: 'BackgroundColor',[0.8 0.8 0.8], ... wolffd@0: 'FontWeight','demi', ... wolffd@0: 'FontSize',8,... wolffd@0: 'HorizontalAlignment','left', ... wolffd@0: 'ListboxTop',0, ... wolffd@0: 'Position',[0.26 0.413953488372093 0.3765432098765432 0.06511627906976744], ... wolffd@0: 'String','Clip all', ... wolffd@0: 'Style','text', ... wolffd@0: 'Tag','StaticText3'); wolffd@0: h1 = uicontrol('Parent',h0, ... wolffd@0: 'Units','normalized', ... wolffd@0: 'BackgroundColor',[0.8 0.8 0.8], ... wolffd@0: 'FontWeight','demi', ... wolffd@0: 'FontSize',8,... wolffd@0: 'HorizontalAlignment','left', ... wolffd@0: 'ListboxTop',0, ... wolffd@0: 'Position',[0.26 0.2744186046511628 0.4197530864197531 0.06511627906976744], ... wolffd@0: 'String','Expand all', ... wolffd@0: 'Style','text', ... wolffd@0: 'Tag','StaticText4'); wolffd@0: wolffd@0: wolffd@0: set(gcf,'UserData',data); wolffd@0: wolffd@0: %%% Subfunction clip_exp_cb %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% wolffd@0: wolffd@0: function clip_exp_cb(arg) wolffd@0: wolffd@0: c_this_button_h=getfield(get(gcf,'UserData'),'c_this_button_h'); wolffd@0: c_all_button_h=getfield(get(gcf,'UserData'),'c_all_button_h'); wolffd@0: e_all_button_h=getfield(get(gcf,'UserData'),'e_all_button_h'); wolffd@0: data=get(gcf,'UserData'); wolffd@0: wolffd@0: wolffd@0: switch arg wolffd@0: case 'c_this' wolffd@0: set(c_all_button_h,'Value',0); wolffd@0: set(e_all_button_h,'Value',0); wolffd@0: set(c_this_button_h,'Value',1); wolffd@0: data.mode='c_this'; wolffd@0: case 'c_all' wolffd@0: set(c_this_button_h,'Value',0); wolffd@0: set(e_all_button_h,'Value',0); wolffd@0: set(c_all_button_h,'Value',1); wolffd@0: data.mode='c_all'; wolffd@0: case 'e_all' wolffd@0: set(c_this_button_h,'Value',0); wolffd@0: set(c_all_button_h,'Value',0); wolffd@0: set(e_all_button_h,'Value',1); wolffd@0: data.mode='e_all'; wolffd@0: end wolffd@0: wolffd@0: set(gcf,'UserData',data); wolffd@0: wolffd@0: %%% Subfunction: delay_data %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% wolffd@0: wolffd@0: function delay_data(varargin) wolffd@0: wolffd@0: if nargin == 1 wolffd@0: del_h=findobj(get(0,'Children'),'Tag','Delay'); wolffd@0: set(0,'CurrentFigure',del_h); wolffd@0: LOG=1; wolffd@0: arg=varargin{1}; wolffd@0: i=1; wolffd@0: while i <= length(arg) & arg(i) ~= ' ' wolffd@0: i=i+1; wolffd@0: end wolffd@0: delay=str2num(arg(1:i-1)); wolffd@0: no=str2num(arg(i+1:length(arg))); wolffd@0: else wolffd@0: LOG=0; wolffd@0: end wolffd@0: wolffd@0: pre_h=findobj(get(0,'Children'),'Tag','Preprocess'); wolffd@0: q='Delay operation is not evaluated.'; wolffd@0: t='Warning'; wolffd@0: if isempty(pre_h) wolffd@0: errordlg('''Preprocess'' -figure does not exist. Terminating program...'); wolffd@0: pro_tools('close'); wolffd@0: return; wolffd@0: end wolffd@0: wolffd@0: sData=getfield(get(pre_h,'UserData'),'sData'); wolffd@0: undo = sData; wolffd@0: data=get(gcf,'UserData'); wolffd@0: if ~LOG wolffd@0: delay=str2num(get(data.delay_val_h,'String')); wolffd@0: if isempty(delay) wolffd@0: errordlg('Value of ''Delay'' must be defined.'); wolffd@0: return wolffd@0: end wolffd@0: set(data.delay_val_h,'String',''); wolffd@0: if round(delay) ~= delay wolffd@0: errordlg('Value of ''Delay'' must be integer.'); wolffd@0: return; wolffd@0: end wolffd@0: end wolffd@0: comp_names_h=getfield(get(pre_h,'UserData'),'comp_names_h'); wolffd@0: if isempty(get(comp_names_h,'Value')) wolffd@0: errordlg('There are not components chosen.'); wolffd@0: return; wolffd@0: end wolffd@0: n_th_comp=getfield(get_indices,{1}); wolffd@0: len=length(sData.data(:,1)); wolffd@0: wolffd@0: if LOG wolffd@0: switch no wolffd@0: case 1 wolffd@0: data.mode='c_this'; wolffd@0: preprocess('clip_exp_cb','c_this'); wolffd@0: case 2 wolffd@0: data.mode='c_all'; wolffd@0: preprocess('clip_exp_cb','c_all'); wolffd@0: case 3 wolffd@0: data.mode='e_all'; wolffd@0: preprocess('clip_exp_cb','e_all'); wolffd@0: end wolffd@0: end wolffd@0: wolffd@0: switch data.mode wolffd@0: case 'c_this' wolffd@0: MODE='1'; wolffd@0: if delay > 0 wolffd@0: sData.data(delay+1:len,n_th_comp)=sData.data(1:len-delay); wolffd@0: if delay >= len wolffd@0: errordlg(q,t); wolffd@0: return; wolffd@0: else wolffd@0: sData.data(1:delay,n_th_comp)=NaN; wolffd@0: end wolffd@0: elseif delay < 0 wolffd@0: sData.data(1:len+delay,n_th_comp)=... wolffd@0: sData.data(abs(delay)+1:len,n_th_comp); wolffd@0: if abs(delay) >= len wolffd@0: errordlg(q,t); wolffd@0: return; wolffd@0: else wolffd@0: sData.data(len+delay+1:len,n_th_comp)=NaN; wolffd@0: end wolffd@0: end wolffd@0: if delay ~= 0 wolffd@0: data=get(pre_h,'UserData'); wolffd@0: sData.MODIFIED=1; wolffd@0: sData.comp_norm(n_th_comp)=[]; wolffd@0: data.sData=sData; wolffd@0: data.undo.sData=undo; wolffd@0: set(pre_h,'UserData',data); wolffd@0: old = gcf; wolffd@0: set(0,'CurrentFigure',pre_h); wolffd@0: sel_comp; wolffd@0: cplot_mimema; wolffd@0: set(0,'CurrentFigure',old); wolffd@0: end wolffd@0: case 'c_all' wolffd@0: MODE='2'; wolffd@0: if delay > 0 wolffd@0: sData.data(delay+1:len,n_th_comp)=sData.data(1:len-delay,n_th_comp); wolffd@0: if delay >= len wolffd@0: errordlg(q,t); wolffd@0: return; wolffd@0: else wolffd@0: sData.data=sData.data(delay+1:len,:); wolffd@0: end wolffd@0: elseif delay < 0 wolffd@0: sData.data(1:len+delay,n_th_comp)=sData.data(abs(delay)+1:len,n_th_comp); wolffd@0: if abs(delay) >= len wolffd@0: errordlg(q,t); wolffd@0: return; wolffd@0: else wolffd@0: sData.data=sData.data(1:len+delay,:); wolffd@0: end wolffd@0: end wolffd@0: if delay ~= 0 wolffd@0: data=get(pre_h,'UserData'); wolffd@0: sData.MODIFIED=1; wolffd@0: sData.comp_norm(:,:)={[]}; wolffd@0: data.sData=sData; wolffd@0: data.undo.sData=undo; wolffd@0: data.undo.selected=data.selected_vects; wolffd@0: if delay > 0 wolffd@0: data.selected_vects=... wolffd@0: data.selected_vects(find(data.selected_vects>delay)); wolffd@0: data.selected_vects=data.selected_vects-delay; wolffd@0: elseif nargin == 1 wolffd@0: data.selected_vects=... wolffd@0: data.selected_vects(find(data.selected_vects<=len-abs(delay))); wolffd@0: end wolffd@0: set(pre_h,'UserData',data); wolffd@0: old=gcf; wolffd@0: set(0,'CurrentFigure',pre_h); wolffd@0: vects=zeros(1,length(sData.data(:,1))); wolffd@0: vects(data.selected_vects)=1; wolffd@0: write_sD_stats; wolffd@0: draw_vectors(vects,data.vector_h); wolffd@0: sel_comp; wolffd@0: cplot_mimema; wolffd@0: set(0,'CurrentFigure',old); wolffd@0: end wolffd@0: case 'e_all' wolffd@0: MODE='3'; wolffd@0: if delay > 0 wolffd@0: sData.data(len+1:len+delay,:)=NaN; wolffd@0: sData.data(1+delay:delay+len,n_th_comp)=sData.data(1:len,n_th_comp); wolffd@0: sData.data(1:delay,n_th_comp)=NaN; wolffd@0: elseif delay < 0 wolffd@0: delay=abs(delay); wolffd@0: sData.data(delay+1:len+delay,:)=sData.data; wolffd@0: sData.data(1:delay,:)=NaN; wolffd@0: sData.data(1:len,n_th_comp)=sData.data(delay+1:len+delay,n_th_comp); wolffd@0: sData.data(len+1:len+delay,n_th_comp)=NaN; wolffd@0: end wolffd@0: if delay ~= 0 wolffd@0: data=get(pre_h,'UserData'); wolffd@0: sData.MODIFIED=1; wolffd@0: sData.comp_norm(:,:)={[]}; wolffd@0: data.sData=sData; wolffd@0: data.undo.sData=undo; wolffd@0: data.undo.selected=data.selected_vects; wolffd@0: set(pre_h,'UserData',data); wolffd@0: old=gcf; wolffd@0: set(0,'CurrentFigure',pre_h); wolffd@0: write_sD_stats; wolffd@0: pro_tools('selall'); wolffd@0: set(0,'CurrentFigure',old); wolffd@0: end wolffd@0: end wolffd@0: wolffd@0: if ~LOG wolffd@0: data=get(pre_h,'UserData'); wolffd@0: data.LOG{length(data.LOG)+1}='% Delay a component.'; wolffd@0: data.LOG{length(data.LOG)+1}=cat(2,'preprocess(''delay_data'',''',... wolffd@0: num2str(delay),' ',MODE,''');'); wolffd@0: set(pre_h,'UserData',data); wolffd@0: end wolffd@0: wolffd@0: %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% wolffd@0: wolffd@0: function window(varargin) wolffd@0: wolffd@0: if nargin ~= 1 wolffd@0: pre_h=findobj(get(0,'Children'),'Tag','Preprocess'); wolffd@0: preh_udata=get(pre_h,'UserData'); wolffd@0: preh_udata.LOG{length(preh_udata.LOG)+1}=... wolffd@0: '% Starting the ''Windowed'' -window...'; wolffd@0: preh_udata.LOG{length(preh_udata.LOG)+1}='preprocess(''window'',''foo'');'; wolffd@0: set(pre_h,'UserData',preh_udata); wolffd@0: end wolffd@0: wolffd@0: win_h=findobj(get(0,'Children'),'Tag','Window'); wolffd@0: wolffd@0: if ~isempty(win_h) wolffd@0: figure(win_h); wolffd@0: return; wolffd@0: end wolffd@0: wolffd@0: h0 = figure('Color',[0.8 0.8 0.8], ... wolffd@0: 'PaperPosition',[18 180 576 432], ... wolffd@0: 'PaperUnits','points', ... wolffd@0: 'Position',[513 703 288 219], ... wolffd@0: 'Tag','Window'); wolffd@0: wolffd@0: h1 = uicontrol('Parent',h0, ... wolffd@0: 'Units','normalized', ... wolffd@0: 'BackgroundColor',[0.752941176470588 0.752941176470588 0.752941176470588], ... wolffd@0: 'ListboxTop',0, ... wolffd@0: 'Position',[0.03125 0.1552511415525114 0.9375 0.7990867579908676], ... wolffd@0: 'Style','frame', ... wolffd@0: 'Tag','Frame1'); wolffd@0: h1 = uicontrol('Parent',h0, ... wolffd@0: 'Units','normalized', ... wolffd@0: 'BackgroundColor',[0.8 0.8 0.8], ... wolffd@0: 'ListboxTop',0, ... wolffd@0: 'Position',[0.04861111111111111 0.7214611872146118 0.9027777777777777 0.2009132420091324], ... wolffd@0: 'Style','frame', ... wolffd@0: 'Tag','Frame2'); wolffd@0: h1 = uicontrol('Parent',h0, ... wolffd@0: 'Units','normalized', ... wolffd@0: 'BackgroundColor',[0.8 0.8 0.8], ... wolffd@0: 'ListboxTop',0, ... wolffd@0: 'Position',[0.04861111111111111 0.1780821917808219 0.2777777777777778 0.5251141552511416], ... wolffd@0: 'Style','frame', ... wolffd@0: 'Tag','Frame3'); wolffd@0: h1 = uicontrol('Parent',h0, ... wolffd@0: 'Units','normalized', ... wolffd@0: 'BackgroundColor',[0.8 0.8 0.8], ... wolffd@0: 'ListboxTop',0, ... wolffd@0: 'Position',[0.3611111111111111 0.1780821917808219 0.2777777777777778 0.5251141552511416], ... wolffd@0: 'Style','frame', ... wolffd@0: 'Tag','Frame4'); wolffd@0: h1 = uicontrol('Parent',h0, ... wolffd@0: 'Units','normalized', ... wolffd@0: 'BackgroundColor',[0.8 0.8 0.8], ... wolffd@0: 'ListboxTop',0, ... wolffd@0: 'Position',[0.6736111111111111 0.1780821917808219 0.2777777777777778 0.5251141552511416], ... wolffd@0: 'Style','frame', ... wolffd@0: 'Tag','Frame5'); wolffd@0: wolffd@0: h1 = uicontrol('Parent',h0, ... wolffd@0: 'Callback','preprocess eval_windowed',... wolffd@0: 'Units','normalized', ... wolffd@0: 'FontWeight','demi', ... wolffd@0: 'ListboxTop',0, ... wolffd@0: 'Position',[0.03125 0.0319634703196347 0.2256944444444444 0.091324200913242], ... wolffd@0: 'String','OK', ... wolffd@0: 'Tag','Pushbutton1'); wolffd@0: wolffd@0: h1 = uicontrol('Parent',h0, ... wolffd@0: 'Callback','preprocess close_w', ... wolffd@0: 'Units','normalized', ... wolffd@0: 'FontWeight','demi', ... wolffd@0: 'ListboxTop',0, ... wolffd@0: 'Position',[0.7430555555555555 0.0319634703196347 0.2256944444444444 0.091324200913242], ... wolffd@0: 'String','Close', ... wolffd@0: 'Tag','Pushbutton2'); wolffd@0: wolffd@0: h1 = uicontrol('Parent',h0, ... wolffd@0: 'Units','normalized', ... wolffd@0: 'BackgroundColor',[1 1 1], ... wolffd@0: 'ListboxTop',0, ... wolffd@0: 'Position',[0.7083333333333333 0.7625570776255708 0.2083333333333333 0.1232876712328767], ... wolffd@0: 'Style','edit', ... wolffd@0: 'Tag','EditText1'); wolffd@0: wolffd@0: data.win_len_h=h1; wolffd@0: wolffd@0: h1 = uicontrol('Parent',h0, ... wolffd@0: 'Units','normalized', ... wolffd@0: 'BackgroundColor',[0.8 0.8 0.8], ... wolffd@0: 'FontWeight','demi', ... wolffd@0: 'HorizontalAlignment','left', ... wolffd@0: 'ListboxTop',0, ... wolffd@0: 'Position',[0.07638888888888888 0.8036529680365296 0.3784722222222222 0.0547945205479452], ... wolffd@0: 'String','Window length', ... wolffd@0: 'Style','text', ... wolffd@0: 'Tag','StaticText1'); wolffd@0: wolffd@0: h1 = uicontrol('Parent',h0, ... wolffd@0: 'Units','normalized', ... wolffd@0: 'BackgroundColor',[0.8 0.8 0.8], ... wolffd@0: 'Callback','preprocess window_cb centered',... wolffd@0: 'ListboxTop',0, ... wolffd@0: 'Position',[0.06597222222222222 0.5616438356164384 0.06597222222222222 0.0821917808219178], ... wolffd@0: 'Style','radiobutton', ... wolffd@0: 'Tag','Radiobutton1'); wolffd@0: wolffd@0: data.centered_h=h1; wolffd@0: data.position='center'; wolffd@0: wolffd@0: h1 = uicontrol('Parent',h0, ... wolffd@0: 'Units','normalized', ... wolffd@0: 'BackgroundColor',[0.8 0.8 0.8], ... wolffd@0: 'Callback','preprocess window_cb previous',... wolffd@0: 'ListboxTop',0, ... wolffd@0: 'Position',[0.06597222222222222 0.4018264840182648 0.06597222222222222 0.0821917808219178], ... wolffd@0: 'Style','radiobutton', ... wolffd@0: 'Tag','Radiobutton2'); wolffd@0: wolffd@0: data.previous_h=h1; wolffd@0: wolffd@0: h1 = uicontrol('Parent',h0, ... wolffd@0: 'Units','normalized', ... wolffd@0: 'BackgroundColor',[0.8 0.8 0.8], ... wolffd@0: 'Callback','preprocess window_cb next',... wolffd@0: 'ListboxTop',0, ... wolffd@0: 'Position',[0.06597222222222222 0.2465753424657534 0.06597222222222222 0.0821917808219178], ... wolffd@0: 'Style','radiobutton', ... wolffd@0: 'Tag','Radiobutton3'); wolffd@0: wolffd@0: data.next_h=h1; wolffd@0: wolffd@0: h1 = uicontrol('Parent',h0, ... wolffd@0: 'Units','normalized', ... wolffd@0: 'BackgroundColor',[0.8 0.8 0.8], ... wolffd@0: 'Callback','preprocess window_cb mean',... wolffd@0: 'ListboxTop',0, ... wolffd@0: 'Position',[0.3784722222222222 0.5799086757990868 0.06597222222222222 0.0821917808219178], ... wolffd@0: 'Style','radiobutton', ... wolffd@0: 'Tag','Radiobutton4'); wolffd@0: wolffd@0: data.mean_h=h1; wolffd@0: data.mode='mean'; wolffd@0: wolffd@0: wolffd@0: h1 = uicontrol('Parent',h0, ... wolffd@0: 'Units','normalized', ... wolffd@0: 'BackgroundColor',[0.8 0.8 0.8], ... wolffd@0: 'Callback','preprocess window_cb median',... wolffd@0: 'ListboxTop',0, ... wolffd@0: 'Position',[0.3784722222222222 0.4611872146118721 0.06597222222222222 0.0821917808219178], ... wolffd@0: 'Style','radiobutton', ... wolffd@0: 'Tag','Radiobutton5'); wolffd@0: wolffd@0: wolffd@0: data.median_h=h1; wolffd@0: wolffd@0: h1 = uicontrol('Parent',h0, ... wolffd@0: 'Units','normalized', ... wolffd@0: 'BackgroundColor',[0.8 0.8 0.8], ... wolffd@0: 'Callback','preprocess window_cb max',... wolffd@0: 'ListboxTop',0, ... wolffd@0: 'Position',[0.3784722222222222 0.3515981735159817 0.06597222222222222 0.0821917808219178], ... wolffd@0: 'Style','radiobutton', ... wolffd@0: 'Tag','Radiobutton6'); wolffd@0: wolffd@0: data.max_h=h1; wolffd@0: wolffd@0: h1 = uicontrol('Parent',h0, ... wolffd@0: 'Units','normalized', ... wolffd@0: 'Callback','preprocess window_cb min',... wolffd@0: 'BackgroundColor',[0.8 0.8 0.8], ... wolffd@0: 'ListboxTop',0, ... wolffd@0: 'Position',[0.3784722222222222 0.2374429223744292 0.06597222222222222 0.0821917808219178], ... wolffd@0: 'Style','radiobutton', ... wolffd@0: 'Tag','Radiobutton7'); wolffd@0: wolffd@0: data.min_h = h1; wolffd@0: wolffd@0: h1 = uicontrol('Parent',h0, ... wolffd@0: 'Units','normalized', ... wolffd@0: 'BackgroundColor',[0.8 0.8 0.8], ... wolffd@0: 'Callback','preprocess window_cb clip',... wolffd@0: 'ListboxTop',0, ... wolffd@0: 'Position',[0.6909722222222222 0.5525114155251141 0.06597222222222222 0.0821917808219178], ... wolffd@0: 'Style','radiobutton', ... wolffd@0: 'Tag','Radiobutton8'); wolffd@0: wolffd@0: data.clip_h=h1; wolffd@0: data.eval_mode='clip'; wolffd@0: wolffd@0: h1 = uicontrol('Parent',h0, ... wolffd@0: 'Units','normalized', ... wolffd@0: 'BackgroundColor',[0.8 0.8 0.8], ... wolffd@0: 'Callback','preprocess window_cb expand',... wolffd@0: 'ListboxTop',0, ... wolffd@0: 'Position',[0.6909722222222222 0.2922374429223744 0.06597222222222222 0.0821917808219178], ... wolffd@0: 'Style','radiobutton', ... wolffd@0: 'Tag','Radiobutton9'); wolffd@0: wolffd@0: data.expand_h=h1; wolffd@0: wolffd@0: h1 = uicontrol('Parent',h0, ... wolffd@0: 'Units','normalized', ... wolffd@0: 'BackgroundColor',[0.8 0.8 0.8], ... wolffd@0: 'FontWeight','demi', ... wolffd@0: 'FontSize',8,... wolffd@0: 'HorizontalAlignment','left', ... wolffd@0: 'ListboxTop',0, ... wolffd@0: 'Position',[0.132 0.5799 0.19 0.0548], ... wolffd@0: 'String','Centered', ... wolffd@0: 'Style','text', ... wolffd@0: 'Tag','StaticText2'); wolffd@0: h1 = uicontrol('Parent',h0, ... wolffd@0: 'Units','normalized', ... wolffd@0: 'BackgroundColor',[0.8 0.8 0.8], ... wolffd@0: 'FontWeight','demi', ... wolffd@0: 'FontSize',8,... wolffd@0: 'HorizontalAlignment','left', ... wolffd@0: 'ListboxTop',0, ... wolffd@0: 'Position',[0.132 0.4247 0.1667 0.0548], ... wolffd@0: 'String','Previous', ... wolffd@0: 'Style','text', ... wolffd@0: 'Tag','StaticText3'); wolffd@0: h1 = uicontrol('Parent',h0, ... wolffd@0: 'Units','normalized', ... wolffd@0: 'BackgroundColor',[0.8 0.8 0.8], ... wolffd@0: 'FontWeight','demi', ... wolffd@0: 'FontSize',8,... wolffd@0: 'HorizontalAlignment','left', ... wolffd@0: 'ListboxTop',0, ... wolffd@0: 'Position',[0.132 0.2648 0.1632 0.0548], ... wolffd@0: 'String','Next', ... wolffd@0: 'Style','text', ... wolffd@0: 'Tag','StaticText4'); wolffd@0: h1 = uicontrol('Parent',h0, ..., wolffd@0: 'Units','normalized', ... wolffd@0: 'BackgroundColor',[0.8 0.8 0.8], ... wolffd@0: 'FontWeight','demi', ... wolffd@0: 'FontSize',8,... wolffd@0: 'HorizontalAlignment','left', ... wolffd@0: 'ListboxTop',0, ... wolffd@0: 'Position',[0.445 0.6027397260273972 0.19 0.0547945205479452], ... wolffd@0: 'String','Mean', ... wolffd@0: 'Style','text', ... wolffd@0: 'Tag','StaticText5'); wolffd@0: h1 = uicontrol('Parent',h0, ... wolffd@0: 'Units','normalized', ... wolffd@0: 'BackgroundColor',[0.8 0.8 0.8], ... wolffd@0: 'FontWeight','demi', ... wolffd@0: 'FontSize',8,... wolffd@0: 'HorizontalAlignment','left', ... wolffd@0: 'ListboxTop',0, ... wolffd@0: 'Position',[0.445 0.4795 0.1806 0.0548], ... wolffd@0: 'String','Median', ... wolffd@0: 'Style','text', ... wolffd@0: 'Tag','StaticText6'); wolffd@0: wolffd@0: h1 = uicontrol('Parent',h0, ... wolffd@0: 'Units','normalized', ... wolffd@0: 'BackgroundColor',[0.8 0.8 0.8], ... wolffd@0: 'FontWeight','demi', ... wolffd@0: 'FontSize',8,... wolffd@0: 'HorizontalAlignment','left', ... wolffd@0: 'ListboxTop',0, ... wolffd@0: 'Position',[0.445 0.3699 0.1667 0.0548], ... wolffd@0: 'String','Max', ... wolffd@0: 'Style','text', ... wolffd@0: 'Tag','StaticText7'); wolffd@0: h1 = uicontrol('Parent',h0, ... wolffd@0: 'Units','normalized', ... wolffd@0: 'BackgroundColor',[0.8 0.8 0.8], ... wolffd@0: 'FontWeight','demi', ... wolffd@0: 'FontSize',8,... wolffd@0: 'HorizontalAlignment','left', ... wolffd@0: 'ListboxTop',0, ... wolffd@0: 'Position',[0.445 0.2557077625570776 0.1597222222222222 0.0547945205479452], ... wolffd@0: 'String','Min', ... wolffd@0: 'Style','text', ... wolffd@0: 'Tag','StaticText8'); wolffd@0: h1 = uicontrol('Parent',h0, ... wolffd@0: 'Units','normalized', ... wolffd@0: 'BackgroundColor',[0.8 0.8 0.8], ... wolffd@0: 'FontWeight','demi', ... wolffd@0: 'FontSize',8,... wolffd@0: 'HorizontalAlignment','left', ... wolffd@0: 'ListboxTop',0, ... wolffd@0: 'Position',[0.7535 0.5753 0.1354 0.054], ... wolffd@0: 'String','Clip', ... wolffd@0: 'Style','text', ... wolffd@0: 'Tag','StaticText9'); wolffd@0: h1 = uicontrol('Parent',h0, ... wolffd@0: 'Units','normalized', ... wolffd@0: 'BackgroundColor',[0.8 0.8 0.8], ... wolffd@0: 'FontWeight','demi', ... wolffd@0: 'FontSize',8,... wolffd@0: 'HorizontalAlignment','left', ... wolffd@0: 'ListboxTop',0, ... wolffd@0: 'Position',[0.7534722222222222 0.3150684931506849 0.1527777777777778 0.0547945205479452], ... wolffd@0: 'String','Expand', ... wolffd@0: 'Style','text', ... wolffd@0: 'Tag','StaticText10'); wolffd@0: wolffd@0: wolffd@0: wolffd@0: set(gcf,'UserData',data); wolffd@0: wolffd@0: %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% wolffd@0: wolffd@0: function window_cb(arg) wolffd@0: wolffd@0: data=get(gcf,'UserData'); wolffd@0: wolffd@0: if any(strcmp(arg,[{'centered'},{'previous'},{'next'}])) wolffd@0: switch arg wolffd@0: case 'centered' wolffd@0: data.position='center'; wolffd@0: set(data.previous_h,'Value',0); wolffd@0: set(data.next_h,'Value',0); wolffd@0: set(data.centered_h,'Value',1); wolffd@0: case 'previous' wolffd@0: data.position='previous'; wolffd@0: set(data.centered_h,'Value',0); wolffd@0: set(data.next_h,'Value',0); wolffd@0: set(data.previous_h,'Value',1); wolffd@0: case 'next' wolffd@0: data.position='next'; wolffd@0: set(data.centered_h,'Value',0); wolffd@0: set(data.previous_h,'Value',0); wolffd@0: set(data.next_h,'Value',1); wolffd@0: end wolffd@0: elseif any(strcmp(arg,[{'mean'},{'median'},{'min'},{'max'}])) wolffd@0: switch arg wolffd@0: case 'mean' wolffd@0: data.mode='mean'; wolffd@0: set(data.median_h,'Value',0); wolffd@0: set(data.min_h,'Value',0); wolffd@0: set(data.max_h,'Value',0); wolffd@0: set(data.mean_h,'Value',1); wolffd@0: case 'median' wolffd@0: data.mode='median'; wolffd@0: set(data.mean_h,'Value',0); wolffd@0: set(data.max_h,'Value',0); wolffd@0: set(data.min_h,'Value',0); wolffd@0: set(data.median_h,'Value',1); wolffd@0: case 'max' wolffd@0: data.mode='max'; wolffd@0: set(data.mean_h,'Value',0); wolffd@0: set(data.median_h,'Value',0); wolffd@0: set(data.min_h,'Value',0); wolffd@0: set(data.max_h,'Value',1); wolffd@0: case 'min' wolffd@0: data.mode='min'; wolffd@0: set(data.mean_h,'Value',0); wolffd@0: set(data.median_h,'Value',0); wolffd@0: set(data.max_h,'Value',0); wolffd@0: set(data.min_h,'Value',1); wolffd@0: end wolffd@0: elseif any(strcmp(arg,[{'clip','expand'}])) wolffd@0: switch arg wolffd@0: case 'clip' wolffd@0: data.eval_mode='clip'; wolffd@0: set(data.expand_h,'Value',0); wolffd@0: set(data.clip_h,'Value',1); wolffd@0: case 'expand' wolffd@0: data.eval_mode='expand'; wolffd@0: set(data.clip_h,'Value',0); wolffd@0: set(data.expand_h,'Value',1); wolffd@0: end wolffd@0: end wolffd@0: wolffd@0: set(gcf,'UserData',data); wolffd@0: wolffd@0: %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% wolffd@0: wolffd@0: function eval_windowed(varargin) wolffd@0: wolffd@0: if nargin == 1 wolffd@0: LOG=1; wolffd@0: i=1; wolffd@0: arg=varargin{1}; wolffd@0: while i <= length(arg) & arg(i) ~= ' ' wolffd@0: i=i+1; wolffd@0: end wolffd@0: value=str2num(arg(1:i-1)); wolffd@0: i=i+1; wolffd@0: j=i; wolffd@0: while i <= length(arg) & arg(i) ~= ' ' wolffd@0: i=i+1; wolffd@0: end wolffd@0: position=arg(j:i-1); wolffd@0: i=i+1; wolffd@0: j=i; wolffd@0: while i <= length(arg) & arg(i) ~= ' ' wolffd@0: i=i+1; wolffd@0: end wolffd@0: mode=arg(j:i-1); wolffd@0: i=i+1; wolffd@0: j=i; wolffd@0: while i <= length(arg) & arg(i) ~= ' ' wolffd@0: i=i+1; wolffd@0: end wolffd@0: eval_mode=arg(j:i-1); wolffd@0: else wolffd@0: LOG=0; wolffd@0: end wolffd@0: wolffd@0: data=get(gcf,'UserData'); wolffd@0: if LOG wolffd@0: data.position=position; wolffd@0: data.eval_mode=eval_mode; wolffd@0: data.mode=mode; wolffd@0: end wolffd@0: pre_h=findobj(get(0,'Children'),'Tag','Preprocess'); wolffd@0: wolffd@0: if isempty(pre_h) wolffd@0: errordlg('''Preprocess''-window does not exist. Terminating program...'); wolffd@0: pro_tools('close'); wolffd@0: return; wolffd@0: end wolffd@0: wolffd@0: comp_names_h=getfield(get(pre_h,'UserData'),'comp_names_h'); wolffd@0: sData=getfield(get(pre_h,'UserData'),'sData'); wolffd@0: undo=sData; wolffd@0: wolffd@0: if isempty(get(comp_names_h,'Value')) wolffd@0: errordlg('There are not components chosen.'); wolffd@0: return; wolffd@0: end wolffd@0: wolffd@0: if ~LOG wolffd@0: if isempty(get(data.win_len_h,'String')) wolffd@0: errordlg('Window length must be defined'); wolffd@0: return; wolffd@0: end wolffd@0: wolffd@0: value=str2num(get(data.win_len_h,'String')); wolffd@0: end wolffd@0: wolffd@0: set(data.win_len_h,'String',''); wolffd@0: wolffd@0: if ~LOG wolffd@0: if isempty(value) | value < 0 | value ~= round(value) wolffd@0: errordlg('Window length must be positive integer.'); wolffd@0: return; wolffd@0: end wolffd@0: wolffd@0: if value > length(sData.data(:,1)) wolffd@0: errordlg('Length of window is too big.'); wolffd@0: return; wolffd@0: end wolffd@0: end wolffd@0: wolffd@0: index=getfield(get_indices,{1}); wolffd@0: wolffd@0: sData=eval_operation(sData,value,data.mode,data.eval_mode,data.position,index); wolffd@0: sData.comp_norm(index)={[]}; wolffd@0: u_data=get(pre_h,'UserData'); wolffd@0: u_data.sData=sData; wolffd@0: u_data.undo.sData=undo; wolffd@0: u_data.undo.selected=u_data.selected_vects; wolffd@0: wolffd@0: if ~LOG wolffd@0: u_data.LOG{length(u_data.LOG)+1}=... wolffd@0: '% Evaluating the wanted ''windowed'' -operation.'; wolffd@0: u_data.LOG{length(u_data.LOG)+1}=cat(2,'preprocess(''eval_windowed'',',... wolffd@0: '''',num2str(value),... wolffd@0: ' ',data.position,' ',data.mode,... wolffd@0: ' ',data.eval_mode,''');'); wolffd@0: end wolffd@0: wolffd@0: set(pre_h,'UserData',u_data); wolffd@0: old=gcf; wolffd@0: set(0,'CurrentFigure',pre_h); wolffd@0: wolffd@0: if strcmp(data.eval_mode,'expand'); wolffd@0: write_sD_stats; wolffd@0: pro_tools('selall'); wolffd@0: else wolffd@0: sel_comp; wolffd@0: cplot_mimema; wolffd@0: end wolffd@0: wolffd@0: set(0,'CurrentFigure',old); wolffd@0: wolffd@0: wolffd@0: wolffd@0: %%% Subfunction: eval_operation %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% wolffd@0: wolffd@0: wolffd@0: function sData=eval_operation(sData,winlen,mode,evalmode,position,n) wolffd@0: wolffd@0: wolffd@0: len=length(sData.data(:,1)); wolffd@0: dim=length(sData.data(1,:)); wolffd@0: wolffd@0: switch(position) wolffd@0: case 'center' wolffd@0: prev=round(winlen/2)-1; wolffd@0: next=winlen-round(winlen/2); wolffd@0: case 'previous' wolffd@0: prev=winlen-1; wolffd@0: next=0; wolffd@0: case 'next' wolffd@0: prev=0; wolffd@0: next=winlen-1; wolffd@0: end wolffd@0: wolffd@0: switch(evalmode) wolffd@0: case 'clip' wolffd@0: for center=1:len wolffd@0: win=center-prev:center-prev+winlen-1; wolffd@0: win=win(find(win > 0 & win <= len)); wolffd@0: str=cat(2,mode,'(sData.data(win(find(~isnan(sData.data(win,n)))),n))'); wolffd@0: tmp(center)=eval(str); wolffd@0: end wolffd@0: sData.data(:,n)=tmp; wolffd@0: case 'expand' wolffd@0: for i=1:len+winlen-1 wolffd@0: win=i-(winlen-1):i; wolffd@0: win=win(find(win > 0 & win <= len)); wolffd@0: str=cat(2,mode,'(sData.data(win(find(~isnan(sData.data(win,n)))),n))'); wolffd@0: tmp(i)=eval(str); wolffd@0: end wolffd@0: sData.data=cat(1,repmat(NaN,next,dim),sData.data,repmat(NaN,prev,dim)); wolffd@0: sData.data(:,n)=tmp; wolffd@0: end wolffd@0: wolffd@0: %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% wolffd@0: wolffd@0: wolffd@0: wolffd@0: %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% wolffd@0: wolffd@0: function pro_tools(arg) wolffd@0: wolffd@0: switch arg wolffd@0: case 'close' wolffd@0: close_preprocess; wolffd@0: case 'c_stat' wolffd@0: write_c_stats; wolffd@0: case 'plot_hist' wolffd@0: plot_hist; wolffd@0: case 'plot' wolffd@0: plot_button; wolffd@0: case 'plxy' wolffd@0: plxy_button; wolffd@0: case 'bplo' wolffd@0: bplo_button; wolffd@0: case 'hist' wolffd@0: hist_button; wolffd@0: end wolffd@0: wolffd@0: wolffd@0: %%% Subfunction close_preprocess %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% wolffd@0: wolffd@0: function close_preprocess wolffd@0: wolffd@0: wolffd@0: pre_h=findobj(get(0,'Children'),'Tag','Preprocess'); wolffd@0: man_h=findobj(get(0,'Children'),'Tag','Management'); wolffd@0: clip_h=findobj(get(0,'Children'),'Tag','Clipping'); wolffd@0: plot_h=findobj(get(0,'Children'),'Tag','PlotWin'); wolffd@0: delay_h=findobj(get(0,'Children'),'Tag','Delay'); wolffd@0: window_h=findobj(get(0,'Children'),'Tag','Window'); wolffd@0: sel_h=findobj(get(0,'Children'),'Tag','Select'); wolffd@0: wolffd@0: if ~isempty(man_h) wolffd@0: close(man_h); wolffd@0: end wolffd@0: if ~isempty(clip_h) wolffd@0: close(clip_h); wolffd@0: end wolffd@0: if ~isempty(plot_h) wolffd@0: close(plot_h); wolffd@0: end wolffd@0: if ~isempty(delay_h) wolffd@0: close(delay_h); wolffd@0: end wolffd@0: if ~isempty(window_h) wolffd@0: close(window_h); wolffd@0: end wolffd@0: if ~isempty(sel_h) wolffd@0: close(sel_h); wolffd@0: end wolffd@0: if ~isempty(pre_h) wolffd@0: close(pre_h); wolffd@0: end wolffd@0: wolffd@0: wolffd@0: wolffd@0: %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% wolffd@0: wolffd@0: %%% Subfunction: undo %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% wolffd@0: wolffd@0: function undo(varargin) wolffd@0: wolffd@0: if nargin == 1 wolffd@0: pre_h=findobj(get(0,'Children'),'Tag','Preprocess'); wolffd@0: set(0,'CurrentFigure',pre_h); wolffd@0: LOG=1; wolffd@0: else wolffd@0: LOG=0; wolffd@0: end wolffd@0: wolffd@0: data=get(gcf,'UserData'); wolffd@0: if ~isempty(data.undo) wolffd@0: if any(strcmp('selected',fieldnames(data.undo))) wolffd@0: data.selected_vects=data.undo.selected; wolffd@0: end wolffd@0: if ~any(strcmp('index',fieldnames(data.undo))) wolffd@0: data.sData=data.undo.sData; wolffd@0: data.undo=[]; wolffd@0: if ~LOG wolffd@0: data.LOG{length(data.LOG)+1}='% Undo the most recent operation.'; wolffd@0: data.LOG{length(data.LOG)+1}='preprocess(''undo'',''foo'');'; wolffd@0: end wolffd@0: set(gcf,'UserData',data); wolffd@0: set_compnames(data.sData,data.comp_names_h); wolffd@0: write_sD_stats; wolffd@0: vect_means(data.sData,data.vect_mean_h,data.selected_vects); wolffd@0: sel_comp; wolffd@0: cplot_mimema; wolffd@0: return; wolffd@0: end wolffd@0: wolffd@0: % 'undo.sData' does not exist in sD_set - array wolffd@0: wolffd@0: index=data.undo.index; wolffd@0: data.undo.sData=rmfield(data.undo.sData,[{'INDEX'};{'MODIFIED'}]); wolffd@0: if index<=length(data.sD_set) wolffd@0: rest=data.sD_set(index:length(data.sD_set)); wolffd@0: else wolffd@0: rest=[]; wolffd@0: end wolffd@0: data.sD_set=cat(2,data.sD_set(1:index-1),data.undo.sData,rest); wolffd@0: data.undo=[]; wolffd@0: if ~LOG wolffd@0: data.LOG{length(data.LOG)+1}='% Undo the most recent operation.'; wolffd@0: data.LOG{length(data.LOG)+1}='preprocess(''undo'',''foo'');'; wolffd@0: end wolffd@0: set(gcf,'UserData',data); wolffd@0: set(getfield(get(gcf,'UserData'),'sD_set_h'),'Value',index); wolffd@0: set_sD_stats; wolffd@0: sel_sD; wolffd@0: else wolffd@0: msgbox('Can''t do...'); wolffd@0: end wolffd@0: wolffd@0: %%% Subfunction: write_c_stats %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% wolffd@0: wolffd@0: function write_c_stats(varargin) wolffd@0: wolffd@0: wolffd@0: pre_h=findobj(get(0,'Children'),'Tag','Preprocess'); wolffd@0: comp_names_h=getfield(get(pre_h,'UserData'),'comp_names_h'); wolffd@0: sel_comp_h=getfield(get(pre_h,'UserData'),'sel_comp_h'); wolffd@0: sel_chist_h=getfield(get(pre_h,'UserData'),'sel_chist_h'); wolffd@0: wolffd@0: if nargin==1 wolffd@0: val1=varargin(1); wolffd@0: else wolffd@0: val1=get(sel_comp_h,'String'); wolffd@0: end wolffd@0: wolffd@0: if ~isempty(val1) & iscell(val1) wolffd@0: selected_vects=getfield(get(pre_h,'UserData'),'selected_vects'); wolffd@0: sData=getfield(get(pre_h,'UserData'),'sData'); wolffd@0: sel_cdata_h=getfield(get(pre_h,'UserData'),'sel_cdata_h'); wolffd@0: name=getfield(get(sel_comp_h,'String'),{get(sel_comp_h,'Value')}); wolffd@0: name=name{1}; wolffd@0: i=2; wolffd@0: wolffd@0: while ~isempty(str2num(name(i))) wolffd@0: value(i-1)=name(i); wolffd@0: i=i+1; wolffd@0: end wolffd@0: wolffd@0: value=str2num(value); wolffd@0: wolffd@0: wolffd@0: data=sData.data(selected_vects,value); wolffd@0: wolffd@0: string{1} = cat(2,'Min: ',sprintf('%-10.3g',min(data))); wolffd@0: string{2} = cat(2,'Mean: ',sprintf('%-10.3g',mean(data(find(~isnan(data)))))); wolffd@0: string{3} = cat(2,'Max: ',sprintf('%-10.3g',max(data))); wolffd@0: string{4} = cat(2,'Std: ',sprintf('%-10.3g',std(data(find(~isnan(data)))))); wolffd@0: string{5} = cat(2,'Number of NaNs: ',sprintf('%-10.3g',sum(isnan(data)))); wolffd@0: string{6} = cat(2,'NaN (%):',... wolffd@0: sprintf('%-10.3g',100*sum(isnan(data))/length(data))); wolffd@0: string{7} = cat(2,'Number of values: ',sprintf('%-10.3g',... wolffd@0: length(find(~isnan(unique(data)))))); wolffd@0: set(sel_cdata_h,'String',string); wolffd@0: set(sel_cdata_h,'HorizontalAlignment','left'); wolffd@0: end wolffd@0: wolffd@0: %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% wolffd@0: wolffd@0: %%% Subfunction plot_hist %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% wolffd@0: wolffd@0: function plot_hist wolffd@0: wolffd@0: pre_h=findobj(get(0,'Children'),'Tag','Preprocess'); wolffd@0: sel_chist_h=getfield(get(pre_h,'UserData'),'sel_chist_h'); wolffd@0: sData=getfield(get(pre_h,'UserData'),'sData'); wolffd@0: selected=getfield(get(pre_h,'UserData'),'selected_vects'); wolffd@0: wolffd@0: value=get(getfield(get(pre_h,'UserData'),'sel_comp_h'),'Value'); wolffd@0: subplot(sel_chist_h); wolffd@0: hold off; wolffd@0: cla; wolffd@0: if all(isnan(sData.data(:,value))); wolffd@0: return; wolffd@0: end wolffd@0: hold on; wolffd@0: lim1=min(sData.data(:,value)); wolffd@0: lim2=max(sData.data(:,value)); wolffd@0: if lim2 - lim1 >= eps wolffd@0: x=lim1:(lim2-lim1)/(30-1):lim2; wolffd@0: set(sel_chist_h,'XLim',[lim1 lim2]); wolffd@0: elseif lim1 ~= 0 wolffd@0: x=(lim1)/2:lim1/(30-1):lim1+(lim1)/2; wolffd@0: set(sel_chist_h,'Xlim',[lim1-abs(lim1/2) lim1+abs(lim1/2)]); wolffd@0: else wolffd@0: x=-1:2/(30-1):1; wolffd@0: set(sel_chist_h,'XLim',[-1 1]); wolffd@0: end wolffd@0: wolffd@0: hist(sData.data(selected,value),x); wolffd@0: wolffd@0: %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% wolffd@0: wolffd@0: %%% Subfunction: select_all %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% wolffd@0: wolffd@0: function select_all(varargin) wolffd@0: wolffd@0: if nargin == 1 wolffd@0: LOG=1; wolffd@0: else wolffd@0: LOG=0; wolffd@0: end wolffd@0: wolffd@0: data=get(gcf,'UserData'); wolffd@0: data.selected_vects=(1:length(data.sData.data(:,1))); wolffd@0: if ~LOG wolffd@0: data.LOG{length(data.LOG)+1}='% Select all vectors.'; wolffd@0: data.LOG{length(data.LOG)+1}='selall(''foo'');'; wolffd@0: end wolffd@0: set(gcf,'UserData',data); wolffd@0: tmp=zeros(1,length(data.sData.data(:,1))); wolffd@0: tmp(data.selected_vects)=1; wolffd@0: draw_vectors(tmp,data.vector_h); wolffd@0: cplot_mimema; wolffd@0: vect_means(data.sData,data.vect_mean_h,data.selected_vects); wolffd@0: sel_comp; wolffd@0: %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% wolffd@0: wolffd@0: %%% Subfunction: plot_button %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% wolffd@0: wolffd@0: function plot_button wolffd@0: wolffd@0: %PLOT_BUTTON A callback function. Plots all the components and marks wolffd@0: % the chosen components. wolffd@0: % wolffd@0: % wolffd@0: wolffd@0: sData=getfield(get(gcf,'UserData'),'sData'); wolffd@0: selected=getfield(get(gcf,'UserData'),'selected_vects'); wolffd@0: wolffd@0: indices=get_indices; wolffd@0: if isempty(indices) wolffd@0: return; wolffd@0: end wolffd@0: h=findobj(get(0,'Children'),'Tag','PlotWin'); wolffd@0: if isempty(h) wolffd@0: h= figure; wolffd@0: set(h,'Tag','PlotWin'); wolffd@0: end wolffd@0: wolffd@0: names=sData.comp_names(indices); wolffd@0: data=sData.data(:,indices); wolffd@0: wolffd@0: set(0,'CurrentFigure',h); wolffd@0: hold off; wolffd@0: clf; wolffd@0: t=0:1/(getfield(size(data),{1})-1):1; wolffd@0: tmp=setdiff(1:length(data(:,1)),selected); wolffd@0: for i=1:length(names) wolffd@0: subplot(length(names),1,i); wolffd@0: hold on; wolffd@0: if max(data(:,i))- min(data(:,i)) <= eps wolffd@0: set(gca,'YLim',[max(data(:,i))-1 max(data(:,i))+1]); wolffd@0: end wolffd@0: plot(t,data(:,i)); wolffd@0: if ~isempty(tmp); wolffd@0: data(tmp,i)=NaN; wolffd@0: end wolffd@0: plot(t,data(:,i),'red'); wolffd@0: ylabel(names{i}); wolffd@0: set(gca,'XTick',[]); wolffd@0: end wolffd@0: set(gcf,'Name','Plotted Data Components'); wolffd@0: wolffd@0: %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% wolffd@0: wolffd@0: %%% Subfunction: plxy_button %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% wolffd@0: wolffd@0: function plxy_button wolffd@0: wolffd@0: %PLXY_BUTTON A callback function. XY-plots the first and the second wolffd@0: % components chosen. wolffd@0: % wolffd@0: % wolffd@0: wolffd@0: wolffd@0: sData=getfield(get(gcf,'UserData'),'sData'); wolffd@0: selected=getfield(get(gcf,'UserData'),'selected_vects'); wolffd@0: wolffd@0: inds = get_indices; wolffd@0: if length(inds) < 2 wolffd@0: errordlg('There must be two components chosen for XY-plot.'); wolffd@0: return; wolffd@0: end wolffd@0: wolffd@0: inds=inds(1:2); wolffd@0: names=getfield(sData,'comp_names',{inds}); wolffd@0: wolffd@0: h=findobj(get(0,'Children'),'Tag','PlotWin'); wolffd@0: wolffd@0: if isempty(h) wolffd@0: h= figure; wolffd@0: set(h,'Tag','PlotWin'); wolffd@0: end wolffd@0: wolffd@0: set(0,'CurrentFigure',h); wolffd@0: clf; wolffd@0: axes; wolffd@0: if max(sData.data(:,inds(1))) - min(sData.data(:,inds(1))) <= eps wolffd@0: set(gca,'XLim',[max(sData.data(:,inds(1)))-1 max(sData.data(:,inds(1)))+1]); wolffd@0: end wolffd@0: if max(sData.data(:,inds(2))) - min(sData.data(:,inds(2))) <= eps wolffd@0: set(gca,'YLim',[max(sData.data(:,inds(2)))-1 max(sData.data(:,inds(2)))+1]); wolffd@0: end wolffd@0: hold on; wolffd@0: plot(sData.data(:,inds(1)),sData.data(:,inds(2)),'o'); wolffd@0: x=sData.data(selected,inds(1)); wolffd@0: y=sData.data(selected,inds(2)); wolffd@0: wolffd@0: plot(x,y,'ored','MarkerSize',4); wolffd@0: xlabel(names(1)); wolffd@0: ylabel(names(2)); wolffd@0: set(h,'Name','Plotted Data Components'); wolffd@0: wolffd@0: %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% wolffd@0: wolffd@0: %%% Sub_function: bplo_button %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% wolffd@0: wolffd@0: function bplo_button wolffd@0: wolffd@0: %BPLO_BUTTON A callback function. Box-plots the first component chosen. wolffd@0: wolffd@0: wolffd@0: sData=getfield(get(gcf,'UserData'),'sData'); wolffd@0: selected=getfield(get(gcf,'UserData'),'selected_vects'); wolffd@0: wolffd@0: if length(selected) == 1 wolffd@0: errordlg('There are too few vectors chosen for box-plotting.'); wolffd@0: else wolffd@0: indices=get_indices; wolffd@0: if isempty(indices) wolffd@0: return; wolffd@0: end wolffd@0: for i=1:length(indices) wolffd@0: if length(unique(sData.data(selected,indices(i))))==1 wolffd@0: errordlg('All the values are the same. Operation can''t be evaluated.'); wolffd@0: return; wolffd@0: end wolffd@0: end wolffd@0: names=getfield(sData,'comp_names',{indices}); wolffd@0: h= findobj(get(0,'Children'),'Tag','PlotWin'); wolffd@0: if isempty(h) wolffd@0: h= figure; wolffd@0: set(h,'Tag','PlotWin'); wolffd@0: end wolffd@0: wolffd@0: data=sData.data(selected,indices); wolffd@0: wolffd@0: set(0,'CurrentFigure',h); wolffd@0: hold off; wolffd@0: clf; wolffd@0: hold on; wolffd@0: for i=1:getfield(size(data),{2}) wolffd@0: subplot(getfield(size(data),{2}),1,i); wolffd@0: if ~all(isnan(data(:,i))) wolffd@0: boxplot(data(:,i)); wolffd@0: end wolffd@0: name=names{i}; wolffd@0: tmp=get(get(gca,'YLabel'),'String'); wolffd@0: ylabel(cat(2,sprintf('[%s] ',name),tmp)); wolffd@0: end wolffd@0: set(h,'Name','Box-plot'); wolffd@0: end wolffd@0: wolffd@0: %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% wolffd@0: wolffd@0: %%% Subfunction: hist_button %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% wolffd@0: wolffd@0: function hist_button wolffd@0: wolffd@0: no_of_bins_h=getfield(get(gcf,'UserData'),'no_of_bins_h'); wolffd@0: selected=getfield(get(gcf,'UserData'),'selected_vects'); wolffd@0: sData=getfield(get(gcf,'UserData'),'sData'); wolffd@0: n=str2num(get(no_of_bins_h,'String')); wolffd@0: s1='Invalid number of bins.'; wolffd@0: s2=sprintf('\nSet new value to the box under the ''Histogram''-button.'); wolffd@0: wolffd@0: if isempty(n) wolffd@0: errordlg(cat(2,s1,s2)); wolffd@0: else wolffd@0: indices=get_indices; wolffd@0: if isempty(indices) wolffd@0: return; wolffd@0: end wolffd@0: n=round(n); wolffd@0: if n < 1 wolffd@0: errordlg('Number of bins must be positive integer.'); wolffd@0: else wolffd@0: h= findobj(get(0,'Children'),'Tag','PlotWin'); wolffd@0: if isempty(h) wolffd@0: h= figure; wolffd@0: set(h,'Tag','PlotWin'); wolffd@0: end wolffd@0: wolffd@0: set(0,'CurrentFigure',h); wolffd@0: hold off; wolffd@0: clf; wolffd@0: data=sData.data(selected,indices); wolffd@0: names=sData.comp_names(indices); wolffd@0: for i=1:length(names) wolffd@0: subplot(length(names),1,i); wolffd@0: hold on; wolffd@0: lim1=min(sData.data(:,indices(i))); wolffd@0: lim2=max(sData.data(:,indices(i))); wolffd@0: if n > 1 wolffd@0: if lim2 - lim1 >= eps wolffd@0: x=lim1:(lim2-lim1)/(n-1):lim2; wolffd@0: set(gca,'XLim',[lim1 lim2]); wolffd@0: elseif lim1 ~= 0 wolffd@0: x=lim1/2:lim1/(n-1):lim1/2+lim1; wolffd@0: if ~all(isnan([lim1 lim2])) wolffd@0: set(gca,'XLim',[lim1-abs(lim1/2) lim1+abs(lim1/2)]); wolffd@0: end wolffd@0: else wolffd@0: x=-1:2/(n-1):1; wolffd@0: set(gca,'XLim',[-1 1]); wolffd@0: end wolffd@0: else wolffd@0: x=1; wolffd@0: if lim2 ~= lim1 wolffd@0: set(gca,'XLim',[lim1 lim2]); wolffd@0: else wolffd@0: set(gca,'XLim',[lim1/2 lim1/2+lim1]); wolffd@0: end wolffd@0: end wolffd@0: if ~all(isnan(data(:,i))) wolffd@0: hist(data(:,i),x); wolffd@0: end wolffd@0: name=names{i}; wolffd@0: xlabel(name); wolffd@0: end wolffd@0: set(h,'Name','Histogram'); wolffd@0: end wolffd@0: end wolffd@0: wolffd@0: %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% wolffd@0: wolffd@0: %%% Subfunction: no_of_values %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% wolffd@0: wolffd@0: function no_of_values(varargin); wolffd@0: wolffd@0: %NO_OF_VALUES A callback function. Calculates the number of different wolffd@0: % values of the chosen components. wolffd@0: % wolffd@0: % wolffd@0: wolffd@0: if nargin==1; wolffd@0: LOG=1; wolffd@0: else wolffd@0: LOG=0; wolffd@0: end wolffd@0: wolffd@0: pre_h=findobj(get(0,'Children'),'Tag','Preprocess'); wolffd@0: results_h=getfield(get(pre_h,'UserData'),'results_h'); wolffd@0: sData=getfield(get(pre_h,'UserData'),'sData'); wolffd@0: selected=getfield(get(pre_h,'UserData'),'selected_vects'); wolffd@0: str1='There must be one component chosen for ''Number of Values''-operation'; wolffd@0: wolffd@0: wolffd@0: if ~LOG & isempty(get_indices) wolffd@0: errordlg(str1); wolffd@0: else wolffd@0: indices=get_indices; wolffd@0: data=sData.data(selected,indices); wolffd@0: wolffd@0: string{1} = 'Number of different values:'; wolffd@0: wolffd@0: for i=1:getfield(size(data),{2}) wolffd@0: wolffd@0: tmp=data(:,i); wolffd@0: string{i+1}=cat(2,sprintf('#%d:',indices(i)),... wolffd@0: sprintf('%d',length(find(~isnan(unique(data(:,i))))))); wolffd@0: end wolffd@0: wolffd@0: set(results_h,'String',string); wolffd@0: set(results_h,'HorizontalAlignment','left'); wolffd@0: if ~LOG wolffd@0: data=get(pre_h,'UserData'); wolffd@0: data.LOG{length(data.LOG)+1}='% Number of values'; wolffd@0: data.LOG{length(data.LOG)+1}='preprocess(''noof'',''foo'');'; wolffd@0: set(pre_h,'UserData',data); wolffd@0: end wolffd@0: end wolffd@0: wolffd@0: %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% wolffd@0: wolffd@0: %%% Subfunction: correlation %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% wolffd@0: wolffd@0: function correlation(varargin) wolffd@0: wolffd@0: if nargin == 1 wolffd@0: LOG=1; wolffd@0: else wolffd@0: LOG=0; wolffd@0: end wolffd@0: wolffd@0: pre_h=findobj(get(0,'Children'),'Tag','Preprocess'); wolffd@0: results_h=getfield(get(pre_h,'UserData'),'results_h'); wolffd@0: selected=getfield(get(pre_h,'UserData'),'selected_vects'); wolffd@0: sData=getfield(get(pre_h,'UserData'),'sData'); wolffd@0: wolffd@0: if length(get_indices) < 2 wolffd@0: errordlg('There must be two components chosen for Correlation'); wolffd@0: else wolffd@0: indices=getfield(get_indices,{1:2}); wolffd@0: data=sData.data(selected,indices); wolffd@0: inds=find(~isnan(data(:,1)) & ~isnan(data(:,2))); wolffd@0: value=getfield(corrcoef(data(inds,1),data(inds,2)),{1,2}); wolffd@0: names=sData.comp_names(indices); wolffd@0: string{1}='Correlation between'; wolffd@0: string{2}=cat(2,names{1},' and ',names{2},':'); wolffd@0: string{3}=sprintf('%-10.3g',value); wolffd@0: wolffd@0: set(results_h,'String',string); wolffd@0: set(results_h,'HorizontalAlignment','left'); wolffd@0: if ~LOG wolffd@0: data=get(pre_h,'UserData'); wolffd@0: data.LOG{length(data.LOG)+1}='% Correlation'; wolffd@0: data.LOG{length(data.LOG)+1}='preprocess(''corr'',''foo'');'; wolffd@0: set(pre_h,'UserData',data); wolffd@0: end wolffd@0: end wolffd@0: wolffd@0: %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% wolffd@0: wolffd@0: %%% Subfunction: unit_length %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% wolffd@0: wolffd@0: function unit_length(varargin) wolffd@0: wolffd@0: %UNIT_LENGTH A callback function Scales all the vectors to the unit wolffd@0: % length. wolffd@0: % wolffd@0: % wolffd@0: wolffd@0: if nargin==1 wolffd@0: LOG=1; wolffd@0: else wolffd@0: LOG=0; wolffd@0: end wolffd@0: wolffd@0: vect_mean_h=getfield(get(gcf,'UserData'),'vect_mean_h'); wolffd@0: sData=getfield(get(gcf,'UserData'),'sData'); wolffd@0: sData.MODIFIED=1; wolffd@0: scaled=sData.data; wolffd@0: comp_names_h=getfield(get(gcf,'UserData'),'comp_names_h'); wolffd@0: wolffd@0: if ~LOG & isempty(get(comp_names_h,'Value')) wolffd@0: errordlg('There must be components chosen for the ''unit length''- operation'); wolffd@0: return; wolffd@0: end wolffd@0: inds=get_indices; wolffd@0: for i=1:length(scaled(:,1)); wolffd@0: x=find(~isnan(scaled(i,inds))); wolffd@0: scaled(i,inds(x))=(1/sqrt(sum(scaled(i,inds(x)).^2)))*scaled(i,inds(x)); wolffd@0: end wolffd@0: wolffd@0: data=get(gcf,'UserData'); wolffd@0: wolffd@0: wolffd@0: data.undo.sData = sData; wolffd@0: data.sData.data=scaled; wolffd@0: wolffd@0: for i=1:length(inds) wolffd@0: data.sData.comp_norm{inds(i)}=[]; wolffd@0: end wolffd@0: wolffd@0: if ~LOG wolffd@0: data.LOG{length(data.LOG)+1}='% Unit length'; wolffd@0: data.LOG{length(data.LOG)+1}='preprocess(''unit'',''foo'');'; wolffd@0: end wolffd@0: set(gcf,'UserData',data); wolffd@0: wolffd@0: vects=zeros(1,length(sData.data(:,1))); wolffd@0: vects(data.selected_vects)=1; wolffd@0: wolffd@0: draw_vectors(vects,data.vector_h); wolffd@0: vect_means(sData,vect_mean_h,data.selected_vects); wolffd@0: cplot_mimema; wolffd@0: plot_hist; wolffd@0: wolffd@0: %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% wolffd@0: wolffd@0: %%% Subfunction: one_of_n %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% wolffd@0: wolffd@0: function one_of_n(varargin) wolffd@0: wolffd@0: if nargin==1 wolffd@0: LOG=1; wolffd@0: else wolffd@0: LOG=0; wolffd@0: end wolffd@0: wolffd@0: data=get(gcf,'UserData'); wolffd@0: vector_h=getfield(get(gcf,'Userdata'),'vector_h'); wolffd@0: comp_names_h=getfield(get(gcf,'Userdata'),'comp_names_h'); wolffd@0: vect_mean_h=getfield(get(gcf,'UserData'),'vect_mean_h'); wolffd@0: sData=data.sData; wolffd@0: undo=data.sData; wolffd@0: selected=getfield(get(gcf,'UserData'),'selected_vects'); wolffd@0: msg='Creating over 10 new components. Stop operation?'; wolffd@0: wolffd@0: if ~LOG wolffd@0: if isempty(get(data.comp_names_h,'Value')) wolffd@0: errordlg('There must be one component chosen for ''Add: N binary types'' -operation'); wolffd@0: return; wolffd@0: end wolffd@0: end wolffd@0: wolffd@0: index=getfield(get_indices,{1}); wolffd@0: wolffd@0: tmp=unique(sData.data(:,index)); wolffd@0: n=length(tmp); wolffd@0: wolffd@0: if ~LOG wolffd@0: if n>10 wolffd@0: answer=questdlg(msg,'Question','Yes','No','Yes'); wolffd@0: wolffd@0: if strcmp(answer,'Yes') wolffd@0: msgbox('Operation stopped.'); wolffd@0: return; wolffd@0: end wolffd@0: wolffd@0: end wolffd@0: end wolffd@0: wolffd@0: dim1=getfield(size(sData.data),{1}); wolffd@0: dim2=getfield(size(sData.data),{2}); wolffd@0: sData.data=cat(2,sData.data,zeros(dim1,n)); wolffd@0: wolffd@0: dim=dim2+n; wolffd@0: for i=1:n wolffd@0: sData.data(:,dim-(n-i))=(sData.data(:,index) == tmp(i)); wolffd@0: end wolffd@0: wolffd@0: INDEX=sData.INDEX; wolffd@0: for i=1:n wolffd@0: sData.comp_names{dim2+i}=sprintf('%dNewVar',dim2+i); wolffd@0: end wolffd@0: tmp_norm=cat(1,sData.comp_norm,cell(n,1)); wolffd@0: sData=som_data_struct(sData.data,... wolffd@0: 'name',sData.name,... wolffd@0: 'labels',sData.labels,... wolffd@0: 'comp_names',sData.comp_names); wolffd@0: wolffd@0: sData.MODIFIED=1; wolffd@0: sData.INDEX=INDEX; wolffd@0: sData.comp_norm=tmp_norm; wolffd@0: data.undo.sData=undo; wolffd@0: data.sData=sData; wolffd@0: data.selected_vects=1:length(sData.data(:,1)); wolffd@0: if ~LOG wolffd@0: data.LOG{length(data.LOG)+1}='% Add: N binary types'; wolffd@0: data.LOG{length(data.LOG)+1}='preprocess(''oneo'',''foo'');'; wolffd@0: end wolffd@0: set(gcf,'UserData',data); wolffd@0: clear_button; wolffd@0: write_sD_stats; wolffd@0: set_compnames(sData,comp_names_h); wolffd@0: tmp=ones(1,length(sData.data(:,1))); wolffd@0: draw_vectors(tmp,vector_h); wolffd@0: vect_means(sData,vect_mean_h,1:length(sData.data(:,1))); wolffd@0: cplot_mimema; wolffd@0: sel_comp; wolffd@0: wolffd@0: %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% wolffd@0: wolffd@0: %%% Subfunction: add_zeros %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% wolffd@0: wolffd@0: function add_zeros(varargin) wolffd@0: wolffd@0: if nargin == 1 wolffd@0: LOG=1; wolffd@0: else wolffd@0: LOG=0; wolffd@0: end wolffd@0: wolffd@0: data=get(gcf,'UserData'); wolffd@0: vector_h=getfield(get(gcf,'Userdata'),'vector_h'); wolffd@0: comp_names_h=getfield(get(gcf,'Userdata'),'comp_names_h'); wolffd@0: vect_mean_h=getfield(get(gcf,'UserData'),'vect_mean_h'); wolffd@0: sData=data.sData; wolffd@0: undo=sData; wolffd@0: wolffd@0: dim1=getfield(size(sData.data),{1}); wolffd@0: dim2=getfield(size(sData.data),{2}); wolffd@0: sData.data=cat(2,sData.data,zeros(dim1,1)); wolffd@0: wolffd@0: INDEX=sData.INDEX; wolffd@0: wolffd@0: sData.comp_names{dim2+1}=sprintf('%dNewVar',dim2+1); wolffd@0: tmp_norm=cat(1,sData.comp_norm,cell(1,1)); wolffd@0: sData=som_data_struct(sData.data,... wolffd@0: 'name',sData.name,... wolffd@0: 'labels',sData.labels,... wolffd@0: 'comp_names',sData.comp_names); wolffd@0: wolffd@0: sData.MODIFIED=1; wolffd@0: sData.INDEX=INDEX; wolffd@0: sData.comp_norm=tmp_norm; wolffd@0: data.sData=sData; wolffd@0: data.undo.sData=undo; wolffd@0: data.selected_vects=1:length(sData.data(:,1)); wolffd@0: if ~LOG wolffd@0: data.LOG{length(data.LOG)+1}='% Add: zeros'; wolffd@0: data.LOG{length(data.LOG)+1}='preprocess(''zero'',''foo'');'; wolffd@0: end wolffd@0: set(gcf,'UserData',data); wolffd@0: clear_button; wolffd@0: write_sD_stats; wolffd@0: set_compnames(sData,comp_names_h); wolffd@0: tmp=ones(1,length(sData.data(:,1))); wolffd@0: draw_vectors(tmp,vector_h); wolffd@0: vect_means(sData,vect_mean_h,1:length(sData.data(:,1))); wolffd@0: cplot_mimema; wolffd@0: sel_comp; wolffd@0: wolffd@0: %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% wolffd@0: wolffd@0: %%% Subfunction: move_component %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% wolffd@0: wolffd@0: function move_component(varargin) wolffd@0: wolffd@0: %MOVE_COMPONENT A callback function. Moves one component of vectors to wolffd@0: % the position wanted. wolffd@0: % wolffd@0: % wolffd@0: wolffd@0: if nargin == 1 wolffd@0: LOG=1; wolffd@0: i=1; wolffd@0: while varargin{1}(i) ~= ' ' wolffd@0: value(i)=varargin{1}(i); wolffd@0: i=i+1; wolffd@0: end wolffd@0: value=str2num(value); % the new place wolffd@0: index=str2num(varargin{1}(i:length(varargin{1}))); % index of the chosen wolffd@0: % component wolffd@0: else wolffd@0: LOG=0; wolffd@0: end wolffd@0: wolffd@0: data=get(gcf,'UserData'); wolffd@0: sData=data.sData; wolffd@0: undo=sData; wolffd@0: prompt='Enter the number of the new component place:'; wolffd@0: wolffd@0: wolffd@0: if isempty(get(data.comp_names_h,'Value')) wolffd@0: errordlg('There must be one component chosen for ''Move Component''-operation'); wolffd@0: return; wolffd@0: end wolffd@0: wolffd@0: if ~LOG wolffd@0: index=getfield(get_indices,{1}); wolffd@0: answer=inputdlg(prompt); wolffd@0: wolffd@0: if isempty(answer) | (iscell(answer) & isempty(answer{1})) wolffd@0: msgbox('No components moved'); wolffd@0: return; wolffd@0: end wolffd@0: wolffd@0: value=str2num(answer{1}); wolffd@0: wolffd@0: wolffd@0: dims=size(value); wolffd@0: wolffd@0: if dims(1) ~= 1 | dims(2) ~= 1 | ~isreal(value) wolffd@0: errordlg('The new component place must be positive integer.') wolffd@0: return; wolffd@0: end wolffd@0: wolffd@0: if value <= 0 | round(value) ~= value wolffd@0: errordlg('The new component place must be positive integer.'); wolffd@0: return; wolffd@0: end wolffd@0: wolffd@0: if value > getfield(size(sData.data),{2}) wolffd@0: errordlg('Too big value for the new component place.'); wolffd@0: return; wolffd@0: end wolffd@0: end wolffd@0: wolffd@0: sData.MODIFIED=1; wolffd@0: if index < value wolffd@0: indices1=setdiff(1:value,index); wolffd@0: indices2=setdiff(value+1:length(sData.data(1,:)),index); wolffd@0: elseif index > value wolffd@0: indices1=setdiff(1:value-1,index); wolffd@0: indices2=setdiff(value:length(sData.data(1,:)),index); wolffd@0: else wolffd@0: data.sData=sData; wolffd@0: data.undo.sData=undo; wolffd@0: set(gcf,'UserData',data); wolffd@0: return; wolffd@0: end wolffd@0: wolffd@0: tmp1=sData.data(:,indices1); wolffd@0: tmp2=sData.data(:,indices2); wolffd@0: sData.data=cat(2,tmp1,sData.data(:,index),tmp2); wolffd@0: wolffd@0: tmp1=sData.comp_names(indices1); wolffd@0: tmp2=sData.comp_names(indices2); wolffd@0: sData.comp_names=cat(1,tmp1,sData.comp_names(index),tmp2); wolffd@0: wolffd@0: tmp1=sData.comp_norm(indices1); wolffd@0: tmp2=sData.comp_norm(indices2); wolffd@0: sData.comp_norm=cat(1,tmp1,sData.comp_norm(index),tmp2); wolffd@0: wolffd@0: data.sData=sData; wolffd@0: data.undo.sData=undo; wolffd@0: if ~LOG wolffd@0: data.LOG{length(data.LOG)+1}='% Move component.'; wolffd@0: data.LOG{length(data.LOG)+1}=sprintf('preprocess(''move'',''%s %s'');',... wolffd@0: num2str(value),num2str(index)); wolffd@0: end wolffd@0: comp_names_h=getfield(get(gcf,'UserData'),'comp_names_h'); wolffd@0: vect_mean_h=getfield(get(gcf,'UserData'),'vect_mean_h'); wolffd@0: vector_h=getfield(get(gcf,'UserData'),'vector_h'); wolffd@0: data.selected_vects=1:length(sData.data(:,1)); wolffd@0: set(gcf,'UserData',data); wolffd@0: clear_button; wolffd@0: set_compnames(sData,comp_names_h); wolffd@0: draw_vectors(ones(1,length(sData.data(:,1))),vector_h); wolffd@0: vect_means(sData,vect_mean_h,data.selected_vects); wolffd@0: cplot_mimema; wolffd@0: sel_comp; wolffd@0: %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% wolffd@0: wolffd@0: %%% Subfunction: copy_component %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% wolffd@0: wolffd@0: function copy_component(varargin) wolffd@0: wolffd@0: %COPY_COMPONENT Copies one component of vectors to the position wanted. wolffd@0: % wolffd@0: % wolffd@0: wolffd@0: if nargin == 1 wolffd@0: LOG=1; wolffd@0: i=1; wolffd@0: while varargin{1}(i) ~= ' ' wolffd@0: value(i)=varargin{1}(i); wolffd@0: i=i+1; wolffd@0: end wolffd@0: value=str2num(value); % the new place wolffd@0: index=str2num(varargin{1}(i:length(varargin{1}))); % index of the chosen wolffd@0: % component wolffd@0: else wolffd@0: LOG=0; wolffd@0: end wolffd@0: wolffd@0: wolffd@0: data=get(gcf,'UserData'); wolffd@0: sData=data.sData; wolffd@0: undo=sData; wolffd@0: if ~LOG wolffd@0: prompt='Enter the number of the new component place:'; wolffd@0: wolffd@0: wolffd@0: if isempty(get(data.comp_names_h,'Value')) wolffd@0: errordlg('There must be one component chosen for ''Copy Component''-operation'); wolffd@0: return; wolffd@0: end wolffd@0: wolffd@0: index=getfield(get_indices,{1}); wolffd@0: answer=inputdlg(prompt); wolffd@0: wolffd@0: if isempty(answer) | (iscell(answer) & isempty(answer{1})) wolffd@0: msgbox('No components moved'); wolffd@0: return wolffd@0: end wolffd@0: wolffd@0: wolffd@0: value=str2num(answer{1}); wolffd@0: dims=size(value); wolffd@0: wolffd@0: if dims(1) ~= 1 | dims(2) ~= 1 | ~isreal(value) wolffd@0: errordlg('The new component place must be positive integer.') wolffd@0: return; wolffd@0: end wolffd@0: wolffd@0: if value <= 0 | round(value) ~= value wolffd@0: errordlg('The new component place must be positive integer.'); wolffd@0: return; wolffd@0: end wolffd@0: wolffd@0: if value > getfield(size(sData.data),{2}) + 1 wolffd@0: errordlg('Too big value for the new component place.'); wolffd@0: return; wolffd@0: end wolffd@0: end wolffd@0: wolffd@0: sData.MODIFIED=1; wolffd@0: wolffd@0: indices1=1:value-1; wolffd@0: indices2=value:length(sData.data(1,:)); wolffd@0: tmp1=sData.data(:,indices1); wolffd@0: tmp2=sData.data(:,indices2); wolffd@0: sData.data=cat(2,tmp1,sData.data(:,index),tmp2); wolffd@0: wolffd@0: tmp1=sData.comp_names(indices1); wolffd@0: tmp2=sData.comp_names(indices2); wolffd@0: name=cell(1,1); wolffd@0: name{1}=cat(2,'Copied',sData.comp_names{index}); wolffd@0: sData.comp_names=cat(1,tmp1,name,tmp2); wolffd@0: wolffd@0: tmp1=sData.comp_norm(indices1); wolffd@0: tmp2=sData.comp_norm(indices2); wolffd@0: norm=cell(1,1); wolffd@0: norm{1}=sData.comp_norm{index}; wolffd@0: sData.comp_norm=cat(1,tmp1,norm,tmp2); wolffd@0: wolffd@0: data.sData=sData; wolffd@0: data.undo.sData=undo; wolffd@0: if ~LOG wolffd@0: data.LOG{length(data.LOG)+1}='% Copy component'; wolffd@0: data.LOG{length(data.LOG)+1}=sprintf('preprocess(''copy'',''%s %s'');',... wolffd@0: num2str(value),num2str(index)); wolffd@0: end wolffd@0: wolffd@0: wolffd@0: comp_names_h=getfield(get(gcf,'UserData'),'comp_names_h'); wolffd@0: vect_mean_h=getfield(get(gcf,'UserData'),'vect_mean_h'); wolffd@0: vector_h=getfield(get(gcf,'UserData'),'vector_h'); wolffd@0: data.selected_vects=1:length(sData.data(:,1)); wolffd@0: set(gcf,'UserData',data); wolffd@0: clear_button; wolffd@0: write_sD_stats; wolffd@0: set_compnames(sData,comp_names_h); wolffd@0: draw_vectors(ones(1,length(sData.data(:,1))),vector_h); wolffd@0: vect_means(sData,vect_mean_h,data.selected_vects); wolffd@0: cplot_mimema; wolffd@0: sel_comp; wolffd@0: wolffd@0: %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% wolffd@0: wolffd@0: %%% Subfunction: remove_component %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% wolffd@0: wolffd@0: function remove_component(varargin) wolffd@0: wolffd@0: if nargin == 1 wolffd@0: LOG=1; wolffd@0: value=str2num(varargin{1}); wolffd@0: else wolffd@0: LOG=0; wolffd@0: end wolffd@0: wolffd@0: data=get(gcf,'UserData'); wolffd@0: vect_mean_h=getfield(get(gcf,'UserData'),'vect_mean_h'); wolffd@0: vector_h=getfield(get(gcf,'UserData'),'vector_h'); wolffd@0: comp_names_h=getfield(get(gcf,'UserData'),'comp_names_h'); wolffd@0: sData=data.sData; wolffd@0: undo=sData; wolffd@0: prompt='Enter the number of component to be removed.'; wolffd@0: dim=length(sData.data(1,:)); wolffd@0: wolffd@0: if ~LOG wolffd@0: answer=inputdlg(prompt); wolffd@0: wolffd@0: if isempty(answer) | (iscell(answer) & isempty(answer{1})) wolffd@0: msgbox('Components not removed.'); wolffd@0: return; wolffd@0: end wolffd@0: wolffd@0: value=str2num(answer{1}); wolffd@0: dims=size(value); wolffd@0: wolffd@0: if dims(1) ~= 1 | dims(2) ~= 1 | ~isreal(value) wolffd@0: errordlg('Number of the component to be removed must be positive integer.') wolffd@0: return; wolffd@0: end wolffd@0: wolffd@0: if value <= 0 | round(value) ~= value wolffd@0: errordlg('Number of the component to be removed must be positive integer.'); wolffd@0: return; wolffd@0: end wolffd@0: wolffd@0: if value > getfield(size(sData.data),{2}) wolffd@0: errordlg('There are less components.'); wolffd@0: return; wolffd@0: end wolffd@0: end wolffd@0: wolffd@0: sD_set_h=getfield(get(gcf,'UserData'),'sD_set_h'); wolffd@0: index=get(sD_set_h,'Value'); wolffd@0: if value == 1 & getfield(size(sData.data),{2}) == 1 wolffd@0: if length(get(sD_set_h,'String')) == 1 wolffd@0: msgbox('No data left. Closing program...') wolffd@0: pro_tools('close'); wolffd@0: return; wolffd@0: end wolffd@0: wolffd@0: set1=data.sD_set(1:index-1); wolffd@0: set2=data.sD_set(index+1:length(data.sD_set)); wolffd@0: data.sD_set=[set1 set2]; wolffd@0: set(gcf,'UserData',data); wolffd@0: wolffd@0: set_sD_stats; wolffd@0: sel_sD; wolffd@0: data=get(gcf,'UserData'); wolffd@0: data.undo.sData=undo; wolffd@0: data.undo.index=index; wolffd@0: set(gcf,'UserData',data); wolffd@0: return; wolffd@0: end wolffd@0: dims=size(sData.data); wolffd@0: tmp_data=cat(2,sData.data(:,1:value-1),sData.data(:,value+1:dims(2))); wolffd@0: tmp_norm=cat(1,sData.comp_norm(1:value-1),sData.comp_norm(value+1:dims(2))); wolffd@0: names=cat(1,sData.comp_names(1:value-1),sData.comp_names(value+1:dims(2))); wolffd@0: INDEX=sData.INDEX; wolffd@0: comp_norm=sData.comp_norm; wolffd@0: sData=som_data_struct(tmp_data,... wolffd@0: 'name',sData.name,... wolffd@0: 'labels',sData.labels,... wolffd@0: 'comp_names',names); wolffd@0: sData.comp_norm=tmp_norm; wolffd@0: sData.MODIFIED=1; wolffd@0: sData.INDEX=INDEX; wolffd@0: data=get(gcf,'UserData'); wolffd@0: data.sData=sData; wolffd@0: data.undo.sData=undo; wolffd@0: data.selected_vects=1:length(sData.data(:,1)); wolffd@0: if ~LOG wolffd@0: data.LOG{length(data.LOG)+1}='% Remove component'; wolffd@0: data.LOG{length(data.LOG)+1}=sprintf('preprocess(''remove'',''%s'');',... wolffd@0: answer{1}); wolffd@0: end wolffd@0: set(gcf,'UserData',data); wolffd@0: clear_button; wolffd@0: write_sD_stats; wolffd@0: set_compnames(sData,comp_names_h); wolffd@0: tmp=ones(1,length(sData.data(:,1))); wolffd@0: draw_vectors(tmp,vector_h); wolffd@0: vect_means(sData,vect_mean_h,1:length(sData.data(:,1))); wolffd@0: cplot_mimema; wolffd@0: sel_comp; wolffd@0: wolffd@0: %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% wolffd@0: wolffd@0: %%% Subfunction: remove_vects %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% wolffd@0: wolffd@0: function remove_vects(varargin) wolffd@0: wolffd@0: if nargin==1 wolffd@0: LOG=1; wolffd@0: tmp_str=varargin{1}; wolffd@0: else wolffd@0: LOG=0; wolffd@0: tmp_str='_foo'; wolffd@0: end wolffd@0: data=get(gcf,'UserData'); wolffd@0: vect_mean_h=data.vect_mean_h; wolffd@0: vector_h=data.vector_h; wolffd@0: sData=data.sData; wolffd@0: undo=sData; wolffd@0: wolffd@0: if length(data.selected_vects) == getfield(size(sData.data),{1}) wolffd@0: if LOG wolffd@0: answer='Yes'; wolffd@0: else wolffd@0: answer=questdlg('Do you want to delete this data set?'); wolffd@0: end wolffd@0: if strcmp(answer,'No') wolffd@0: return; wolffd@0: else wolffd@0: index=get(data.sD_set_h,'Value'); wolffd@0: if length(get(data.sD_set_h,'String')) == 1 wolffd@0: msgbox('No data left. Closing program...') wolffd@0: pro_tools('close'); wolffd@0: return; wolffd@0: end wolffd@0: wolffd@0: set1=data.sD_set(1:index-1); wolffd@0: set2=data.sD_set(index+1:length(data.sD_set)); wolffd@0: data.sD_set=[set1 set2]; wolffd@0: set(gcf,'UserData',data); wolffd@0: wolffd@0: set(data.sD_set_h,'Value',1); wolffd@0: set_sD_stats; wolffd@0: sel_sD; wolffd@0: data=get(gcf,'UserData'); wolffd@0: data.undo.sData=undo; wolffd@0: data.undo.index=index; wolffd@0: if ~LOG wolffd@0: data.LOG{length(data.LOG)+1}='% Remove selected vectors'; wolffd@0: data.LOG{length(data.LOG)+1}=cat(2,'preprocess(''remove_vects'',''',... wolffd@0: tmp_str,''');'); wolffd@0: end wolffd@0: set(gcf,'UserData',data); wolffd@0: return; wolffd@0: end wolffd@0: end wolffd@0: wolffd@0: tmp=sData.data(data.selected_vects,:); wolffd@0: if ~LOG wolffd@0: answer=questdlg('Do you want to save removed values to workspace?'); wolffd@0: else wolffd@0: if ~strcmp(tmp_str,'_foo') wolffd@0: answer='Yes'; wolffd@0: else wolffd@0: answer='No'; wolffd@0: end wolffd@0: end wolffd@0: old=gcf; wolffd@0: if strcmp(answer,'Yes') wolffd@0: if ~LOG wolffd@0: answer=inputdlg('Give the name of the output -variable.'); wolffd@0: else wolffd@0: answer={tmp_str}; wolffd@0: end wolffd@0: if isvalid_var_name(answer) wolffd@0: assignin('base',answer{1},tmp); wolffd@0: disp(sprintf('Removed values are set to workspace as''%s''.',answer{1})); wolffd@0: tmp_str=answer{1}; wolffd@0: end wolffd@0: end wolffd@0: set(0,'CurrentFigure',old); wolffd@0: sData.data(data.selected_vects,:)=[]; wolffd@0: sData.labels(data.selected_vects,:)=[]; wolffd@0: sData.MODIFIED=1; wolffd@0: data.sData=sData; wolffd@0: data.selected=1:length(sData.data(:,1)); wolffd@0: data.undo.sData=undo; wolffd@0: if ~LOG wolffd@0: data.LOG{length(data.LOG)}='% Remove selected vectors'; wolffd@0: data.LOG{length(data.LOG)+1}=cat(2,'preprocess(''remove_vects'',''',... wolffd@0: tmp_str,''');'); wolffd@0: end wolffd@0: set(gcf,'UserData',data); wolffd@0: wolffd@0: wolffd@0: draw_vectors(ones(1,length(data.selected)),data.vector_h); wolffd@0: write_sD_stats; wolffd@0: select_all('foo'); wolffd@0: wolffd@0: wolffd@0: %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% wolffd@0: wolffd@0: wolffd@0: wolffd@0: wolffd@0: %%% Subfunction: eval1 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% wolffd@0: wolffd@0: function eval1(varargin); wolffd@0: wolffd@0: if nargin == 1 wolffd@0: answer=varargin wolffd@0: LOG=1; wolffd@0: else wolffd@0: LOG=0; wolffd@0: end wolffd@0: wolffd@0: pre_h=findobj(get(0,'Children'),'Tag','Preprocess'); wolffd@0: if isempty(pre_h) wolffd@0: errordlg('''Preprocess''-figure does not exist. Terminating program...'); wolffd@0: pro_tools('close'); wolffd@0: return; wolffd@0: end wolffd@0: wolffd@0: undo=getfield(get(pre_h,'UserData'),'sData'); wolffd@0: wolffd@0: if ~LOG wolffd@0: prompt={'Enter the expression to be evaluated.',... wolffd@0: 'Enter the inverse normalization method (optional).'}; wolffd@0: title='Single component eval.'; wolffd@0: answer= inputdlg(prompt,title,1); wolffd@0: end wolffd@0: wolffd@0: if ~isempty(answer) wolffd@0: tmp=[]; wolffd@0: if ~isempty(answer{1}) wolffd@0: [tmp,method]=build_expr(answer{1},'single'); wolffd@0: if ~isstr(tmp) wolffd@0: sData=getfield(get(gcf,'UserData'),'sData'); wolffd@0: tmp='Done.'; wolffd@0: %if ~isempty(answer{2}) wolffd@0: % sN=som_norm_struct('eval',{method,answer{2}}); wolffd@0: %else wolffd@0: % sN=som_norm_struct('eval',{method}); wolffd@0: %end wolffd@0: %sN=som_set(sN,'status','done'); wolffd@0: params={answer{1};answer{2}}; wolffd@0: ind=getfield(get_indices,{1}); wolffd@0: x.type=''; wolffd@0: x.method='eval'; wolffd@0: x.params={answer{1};answer{2}}; wolffd@0: x.status=''; wolffd@0: sData.comp_norm{ind}=x; wolffd@0: data=get(gcf,'UserData'); wolffd@0: data.undo.sData=undo; wolffd@0: data.sData=sData; wolffd@0: if ~LOG wolffd@0: data.LOG{length(data.LOG)+1}='% Eval (1-comp)'; wolffd@0: data.LOG{length(data.LOG)+1}=cat(2,'preprocess eval1 ',... wolffd@0: sprintf('{''%s'' ''%s''};',answer{1},answer{2})); wolffd@0: end wolffd@0: set(pre_h,'UserData',data); wolffd@0: wolffd@0: end wolffd@0: end wolffd@0: set(getfield(get(pre_h,'UserData'),'results_h'),'String',tmp); wolffd@0: end wolffd@0: wolffd@0: wolffd@0: %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% wolffd@0: wolffd@0: %%% Subfunction: eval2 wolffd@0: wolffd@0: function eval2(varargin) wolffd@0: wolffd@0: if nargin == 1 wolffd@0: answer=varargin{1}; wolffd@0: LOG=1; wolffd@0: else wolffd@0: LOG=0; wolffd@0: end wolffd@0: wolffd@0: undo=getfield(get(gcf,'UserData'),'sData'); wolffd@0: pre_h=findobj(get(0,'Children'),'Tag','Preprocess'); wolffd@0: wolffd@0: if isempty(pre_h) wolffd@0: errordlg('''Preprocess''-figure does not exist. Terminating program.'); wolffd@0: pro_tools('close'); wolffd@0: return; wolffd@0: end wolffd@0: wolffd@0: if ~LOG wolffd@0: prompt='Enter the expression to be evaluated.'; wolffd@0: title ='Eval'; wolffd@0: answer=inputdlg(prompt,title,1); wolffd@0: end wolffd@0: wolffd@0: if ~isempty(answer) & ~isempty(answer{1}) wolffd@0: str=answer{1}; wolffd@0: [answer,foo]=build_expr(answer{1},'multiple'); wolffd@0: if ~isstr(answer) wolffd@0: wolffd@0: answer='Done.'; wolffd@0: data=get(gcf,'UserData'); wolffd@0: data.undo.sData=undo; wolffd@0: if ~LOG wolffd@0: data.LOG{length(data.LOG)+1}='% Eval'; wolffd@0: data.LOG{length(data.LOG)+1}=cat(2,'preprocess(''eval2'',',... wolffd@0: sprintf('{''%s''});',str)); wolffd@0: end wolffd@0: set(gcf,'UserData',data); wolffd@0: end wolffd@0: end wolffd@0: wolffd@0: set(getfield(get(pre_h,'UserData'),'results_h'),'String',answer); wolffd@0: wolffd@0: %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% wolffd@0: wolffd@0: %%% Subfunction: zero2one_scale %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% wolffd@0: wolffd@0: function zero2one_scale(varargin) wolffd@0: wolffd@0: if nargin == 1 wolffd@0: LOG=1; wolffd@0: else wolffd@0: LOG=0; wolffd@0: end wolffd@0: wolffd@0: wolffd@0: data=get(gcf,'UserData'); wolffd@0: sData=data.sData; wolffd@0: undo=sData; wolffd@0: INDEX=sData.INDEX; wolffd@0: sData=rmfield(sData,[{'INDEX'};{'MODIFIED'}]); wolffd@0: wolffd@0: if isempty(get(data.comp_names_h,'Value')) wolffd@0: errordlg('There must be components chosen for scaling.'); wolffd@0: return; wolffd@0: end wolffd@0: wolffd@0: sData=som_normalize(sData,'range',get_indices); wolffd@0: sData.MODIFIED=1; wolffd@0: sData.INDEX=INDEX; wolffd@0: wolffd@0: data.sData=sData; wolffd@0: data.undo.sData=undo; wolffd@0: if ~LOG wolffd@0: data.LOG{length(data.LOG)+1}='% Scale [0,1]'; wolffd@0: data.LOG{length(data.LOG)+1}='preprocess(''zscale'', ''foo'');'; wolffd@0: end wolffd@0: set(gcf,'UserData',data); wolffd@0: wolffd@0: vects=zeros(1,length(sData.data(:,1))); wolffd@0: vects(data.selected_vects)=1; wolffd@0: wolffd@0: cplot_mimema; wolffd@0: plot_hist; wolffd@0: vect_means(sData,data.vect_mean_h,data.selected_vects); wolffd@0: draw_vectors(vects,data.vector_h); wolffd@0: wolffd@0: %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% wolffd@0: wolffd@0: %%% Subfunction: var_scale %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% wolffd@0: wolffd@0: function var_scale(varargin) wolffd@0: wolffd@0: if nargin == 1 wolffd@0: LOG=1; wolffd@0: else wolffd@0: LOG=0; wolffd@0: end wolffd@0: wolffd@0: data=get(gcf,'UserData'); wolffd@0: sData=data.sData; wolffd@0: undo=sData; wolffd@0: INDEX=sData.INDEX; wolffd@0: sData=rmfield(sData,[{'INDEX'};{'MODIFIED'}]); wolffd@0: wolffd@0: if isempty(get(data.comp_names_h,'Value')) wolffd@0: errordlg('There must be components chosen for scaling.'); wolffd@0: return; wolffd@0: end wolffd@0: wolffd@0: sData=som_normalize(sData,'var',get_indices); wolffd@0: wolffd@0: sData.INDEX=INDEX; wolffd@0: sData.MODIFIED=1; wolffd@0: wolffd@0: data.sData=sData; wolffd@0: data.undo.sData=undo; wolffd@0: if ~LOG wolffd@0: data.LOG{length(data.LOG)+1}='% Scale var=1'; wolffd@0: data.LOG{length(data.LOG)+1}='preprocess(''vscale'', ''foo'');'; wolffd@0: end wolffd@0: set(gcf,'UserData',data); wolffd@0: wolffd@0: vects=zeros(1,length(sData.data(:,1))); wolffd@0: vects(data.selected_vects)=1; wolffd@0: wolffd@0: cplot_mimema; wolffd@0: plot_hist; wolffd@0: vect_means(sData,data.vect_mean_h,data.selected_vects); wolffd@0: draw_vectors(vects,data.vector_h); wolffd@0: wolffd@0: %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% wolffd@0: wolffd@0: %%% Subfunction: hist_eq %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% wolffd@0: wolffd@0: function hist_eq(varargin) wolffd@0: wolffd@0: if nargin == 1 wolffd@0: LOG=1; wolffd@0: else wolffd@0: LOG=0; wolffd@0: end wolffd@0: wolffd@0: data=get(gcf,'UserData'); wolffd@0: sData=data.sData; wolffd@0: undo=sData; wolffd@0: INDEX=sData.INDEX; wolffd@0: sData=rmfield(sData,[{'INDEX'},{'MODIFIED'}]); wolffd@0: wolffd@0: if isempty(get(data.comp_names_h,'Value')) wolffd@0: errordlg('There must be components chosen for ''Histogram eq''.'); wolffd@0: return; wolffd@0: end wolffd@0: wolffd@0: sData=som_normalize(sData,'histD',get_indices); wolffd@0: wolffd@0: sData.INDEX=INDEX; wolffd@0: sData.MODIFIED=1; wolffd@0: wolffd@0: data.sData=sData; wolffd@0: data.undo.sData=undo; wolffd@0: if ~LOG wolffd@0: data.LOG{length(data.LOG)+1}='% Histogram eq'; wolffd@0: data.LOG{length(data.LOG)+1}='preprocess(''histeq'', ''foo'');'; wolffd@0: end wolffd@0: set(gcf,'UserData',data); wolffd@0: wolffd@0: vects=zeros(1,length(sData.data(:,1))); wolffd@0: vects(data.selected_vects)=1; wolffd@0: wolffd@0: cplot_mimema; wolffd@0: plot_hist; wolffd@0: vect_means(sData,data.vect_mean_h,data.selected_vects); wolffd@0: draw_vectors(vects,data.vector_h); wolffd@0: wolffd@0: %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% wolffd@0: wolffd@0: %%% Subfunction: hist_eq2 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% wolffd@0: wolffd@0: function hist_eq2(varargin) wolffd@0: wolffd@0: if nargin == 1 wolffd@0: LOG=1; wolffd@0: else wolffd@0: LOG=0; wolffd@0: end wolffd@0: wolffd@0: wolffd@0: data=get(gcf,'UserData'); wolffd@0: sData=data.sData; wolffd@0: undo=sData; wolffd@0: wolffd@0: INDEX=sData.INDEX; wolffd@0: sData=rmfield(sData,[{'INDEX'};{'MODIFIED'}]); wolffd@0: wolffd@0: if isempty(get(data.comp_names_h,'Value')) wolffd@0: errordlg('There must be components chosen for ''Histogram eq2''.'); wolffd@0: return; wolffd@0: end wolffd@0: wolffd@0: inds=get_indices; wolffd@0: %%%[sData,ok]=som_normalize(sData,inds,'histC'); wolffd@0: sData=som_normalize(sData,'histC',inds); wolffd@0: sData.INDEX=INDEX; wolffd@0: sData.MODIFIED=1; wolffd@0: wolffd@0: data.sData=sData; wolffd@0: data.undo.sData=undo; wolffd@0: if ~LOG wolffd@0: data.LOG{length(data.LOG)+1}='% Histogram eq2'; wolffd@0: data.LOG{length(data.LOG)+1}='preprocess(''histeq2'', ''foo'');'; wolffd@0: end wolffd@0: set(gcf,'UserData',data); wolffd@0: wolffd@0: vects=zeros(1,length(sData.data(:,1))); wolffd@0: vects(data.selected_vects)=1; wolffd@0: wolffd@0: cplot_mimema; wolffd@0: plot_hist; wolffd@0: vect_means(sData,data.vect_mean_h,data.selected_vects); wolffd@0: draw_vectors(vects,data.vector_h); wolffd@0: wolffd@0: %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% wolffd@0: wolffd@0: %%% Subfunction: logarithm %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% wolffd@0: wolffd@0: function logarithm(varargin) wolffd@0: wolffd@0: if nargin == 1 wolffd@0: LOG=1; wolffd@0: else wolffd@0: LOG=0; wolffd@0: end wolffd@0: wolffd@0: data=get(gcf,'UserData'); wolffd@0: sData=data.sData; wolffd@0: undo=sData; wolffd@0: wolffd@0: INDEX=sData.INDEX; wolffd@0: sData=rmfield(sData,[{'INDEX'},{'MODIFIED'}]); wolffd@0: wolffd@0: if isempty(get(data.comp_names_h,'Value')) wolffd@0: errordlg('There must be components chosen for ''Log''.'); wolffd@0: return; wolffd@0: end wolffd@0: wolffd@0: Data=som_normalize(sData,'log',get_indices); wolffd@0: wolffd@0: sData.INDEX=INDEX; wolffd@0: sData.MODIFIED=1; wolffd@0: wolffd@0: data.sData=sData; wolffd@0: data.undo.sData=undo; wolffd@0: if ~LOG wolffd@0: data.LOG{length(data.LOG)+1}='% Log'; wolffd@0: data.LOG{length(data.LOG)+1}='preprocess(''log'', ''foo'');'; wolffd@0: end wolffd@0: set(gcf,'UserData',data); wolffd@0: wolffd@0: vects=zeros(1,length(sData.data(:,1))); wolffd@0: vects(data.selected_vects)=1; wolffd@0: wolffd@0: cplot_mimema; wolffd@0: plot_hist; wolffd@0: vect_means(sData,data.vect_mean_h,data.selected_vects); wolffd@0: draw_vectors(vects,data.vector_h); wolffd@0: wolffd@0: %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% wolffd@0: wolffd@0: function [answer,method]=build_expr(string,evaltype) wolffd@0: wolffd@0: pre_h=findobj(get(0,'Children'),'Tag','Preprocess'); wolffd@0: wolffd@0: method=[]; wolffd@0: if isempty(pre_h) wolffd@0: close_preprocess; wolffd@0: errordlg('''Preprocess'' -figure does not exist. Terminating program...'); wolffd@0: return; wolffd@0: wolffd@0: end wolffd@0: wolffd@0: if isempty(string) wolffd@0: str = '[]'; wolffd@0: return; wolffd@0: end wolffd@0: wolffd@0: tmp=[]; wolffd@0: [name,assign,skip]=check_assign(string,evaltype); wolffd@0: wolffd@0: if ~strcmp(assign,'NOTASSIGN') & ~strcmp(assign,'error') wolffd@0: string=string(skip:length(string)); wolffd@0: end wolffd@0: wolffd@0: if ~strcmp(assign,'error') wolffd@0: if isempty(string) wolffd@0: answer='Illegal expression.'; wolffd@0: return; wolffd@0: end wolffd@0: [str,skip]=check_token(string,evaltype); wolffd@0: method=string; wolffd@0: while ~strcmp(str,'error') & ~strcmp(tmp,'error') & skip < length(string) wolffd@0: if ~strcmp(tmp,')') wolffd@0: str=cat(2,str,tmp); wolffd@0: end wolffd@0: [tmp,skip2]=check_token(string(skip+1:length(string)),evaltype); wolffd@0: skip=skip+skip2; wolffd@0: wolffd@0: end wolffd@0: if ~strcmp(tmp,')') & ~strcmp(tmp,'error') wolffd@0: str=cat(2,str,tmp); wolffd@0: elseif strcmp(tmp,'error') wolffd@0: str='error'; wolffd@0: end wolffd@0: end wolffd@0: wolffd@0: if ~strcmp(assign,'error') & ~strcmp(str,'error'); wolffd@0: answer=evalin('caller',str,'lasterr'); wolffd@0: else wolffd@0: answer='??? Illegal expression.'; wolffd@0: end wolffd@0: wolffd@0: wolffd@0: data=get(pre_h,'UserData'); wolffd@0: sData=data.sData; wolffd@0: if strcmp(assign,'NOTASSIGN') & strcmp(evaltype,'single') & ~isstr(answer) wolffd@0: if isempty(get(getfield(get(pre_h,'UserData'),'comp_names_h'),'Value')) wolffd@0: errordlg('There are not components chosen.'); wolffd@0: answer='??? Illegal expression.'; wolffd@0: return; wolffd@0: end wolffd@0: index=getfield(get_indices,{1}); wolffd@0: if strcmp(assign,'NOTASSIGN') wolffd@0: if length(sData.data(:,index)) ~=length(answer) & ~isscalar(answer) wolffd@0: answer='??? Illegal assignment.'; wolffd@0: else wolffd@0: sData.data(:,index)=answer; wolffd@0: sData.MODIFIED=1; wolffd@0: data.sData=sData; wolffd@0: set(pre_h,'UserData',data); wolffd@0: end wolffd@0: else wolffd@0: if length(sData.data(str2num(assign),index)) ~=length(answer) & ~isscalar(answer) wolffd@0: answer='??? Illegal assignment.'; wolffd@0: else wolffd@0: sData.data(str2num(assign),index)=answer; wolffd@0: sData.MODIFIED=1; wolffd@0: data.sData=sData; wolffd@0: set(pre_h,'UserData',data); wolffd@0: end wolffd@0: end wolffd@0: elseif ~strcmp(assign,'error') & ~isstr(answer) & ~strcmp(assign,'NOTASSIGN') wolffd@0: switch name wolffd@0: case 'x' wolffd@0: if isempty(get(data.comp_names_h,'Value')) wolffd@0: return; wolffd@0: end wolffd@0: index = getfield(get_indices,{1}); wolffd@0: if isempty(assign) wolffd@0: if length(sData.data(:,index)) ~= length(answer) & ~isscalar(answer) wolffd@0: answer='??? Illegal assignment.'; wolffd@0: else wolffd@0: sData.data(:,index)=answer; wolffd@0: sData.MODIFIED=1; wolffd@0: data.sData=sData; wolffd@0: if strcmp(evaltype,'multiple') wolffd@0: data.sData.comp_norm(index)={[]}; wolffd@0: end wolffd@0: set(pre_h,'UserData',data); wolffd@0: end wolffd@0: else wolffd@0: args=create_args(assign,'x'); wolffd@0: if length(args) == 1 wolffd@0: len=max(str2num(args{1})); wolffd@0: if ~isscalar(len) wolffd@0: answer='??? Illegal assignment.'; wolffd@0: return; wolffd@0: elseif len > length(sData.data(:,1)) | min(str2num(args{1})) < 1 wolffd@0: answer='??? Illegal assignment.'; wolffd@0: return; wolffd@0: elseif ~all(size(sData.data(str2num(args{1}),index))) == size(answer) & ~isscalar(answer) wolffd@0: answer='??? Illegal assignment.'; wolffd@0: return; wolffd@0: else wolffd@0: sData.data(str2num(args{1}),index)=answer; wolffd@0: sData.MODIFIED=1; wolffd@0: data.sData=sData; wolffd@0: if strcmp(evaltype,'multiple') wolffd@0: data.sData.comp_norm(index)={[]}; wolffd@0: end wolffd@0: set(pre_h,'UserData',data); wolffd@0: end wolffd@0: else wolffd@0: len=max(str2num(args{1})); wolffd@0: dim=max(str2num(args{2})); wolffd@0: asize=size(answer); wolffd@0: msize=size(sData.data); wolffd@0: if ~isscalar(len) | ~isscalar(dim) wolffd@0: answer='??? Illegal assignment.'; wolffd@0: return; wolffd@0: elseif len > length(sData.data(:,1)) | len < 1 wolffd@0: answer='??? Illegal assignment.'; wolffd@0: return; wolffd@0: elseif dim > 1 | dim > msize(2) | min(str2num(args{2})) < 1 wolffd@0: answer='??? Illegal assignment.'; wolffd@0: return; wolffd@0: end wolffd@0: len=length(str2num(args{1})); wolffd@0: dim=length(str2num(args{1})); wolffd@0: if ~all([len dim] == asize) & ~isscalar(answer) wolffd@0: answer='??? Illegal assignment.'; wolffd@0: return; wolffd@0: else wolffd@0: tmp=sData.data(:,index); wolffd@0: tmp([str2num(args{1})],[str2num(args{2})])=answer; wolffd@0: sData.data(:,index)=tmp; wolffd@0: sData.MODIFIED=1; wolffd@0: data.sData=sData; wolffd@0: if strcmp(evaltype,'multiple') wolffd@0: data.sData.comp_norm(index)={[]}; wolffd@0: end wolffd@0: set(pre_h,'UserData',data); wolffd@0: end wolffd@0: end wolffd@0: end wolffd@0: wolffd@0: case 'xs' wolffd@0: if isempty(get(data.comp_names_h,'Value')) wolffd@0: return; wolffd@0: end wolffd@0: indices=get_indices; wolffd@0: if isempty(assign) wolffd@0: if ~all(size(answer) == size(sData.data(:,indices))) & ~isscalar(answer) wolffd@0: answer='??? Illegal assignment.'; wolffd@0: else wolffd@0: sData.data(:,indices) = answer; wolffd@0: sData.MODIFIED=1; wolffd@0: data.sData=sData; wolffd@0: data.sData.comp_norm(indices)={[]}; wolffd@0: set(pre_h,'UserData',data); wolffd@0: end wolffd@0: else wolffd@0: args=create_args(assign,'xs'); wolffd@0: if length(args) == 1 wolffd@0: len=max(str2num(args{1})); wolffd@0: if ~isscalar(len) wolffd@0: answer='??? Illegal assignment.'; wolffd@0: return; wolffd@0: elseif len > length(sData.data(:,1)) | min(str2num(args{1})) < 1 wolffd@0: answer='??? Illegal assignment.'; wolffd@0: return; wolffd@0: end wolffd@0: if ~all(size(answer) == size(sData.data(str2num(args{1})))) &... wolffd@0: ~isscalar(answer) wolffd@0: answer='??? Illegal assignment.'; wolffd@0: return; wolffd@0: else wolffd@0: tmp=sData.data(:,indices); wolffd@0: tmp(str2num(args{1}))=answer; wolffd@0: sData.data(:,indices)=tmp; wolffd@0: sData.MODIFIED=1; wolffd@0: sData.comp_norm{indices}={[]}; wolffd@0: data.sData=sData; wolffd@0: set(pre_h,'UserData',data); wolffd@0: end wolffd@0: else wolffd@0: len=max(str2num(args{1})); wolffd@0: dim=max(str2num(args{2})); wolffd@0: asize=size(answer); wolffd@0: msize=size(sData.data(:,indices)); wolffd@0: if ~isscalar(len) | ~isscalar(dim) wolffd@0: answer='??? Illegal assignment.'; wolffd@0: return; wolffd@0: elseif len > msize(1) | min(str2num(args{1})) < 1 wolffd@0: answer='??? Illegal assignment.'; wolffd@0: return; wolffd@0: elseif dim > msize(2) | min(str2num(args{2})) < 1 wolffd@0: answer='??? Illegal assignment.'; wolffd@0: return; wolffd@0: end wolffd@0: len=length(str2num(args{1})); wolffd@0: dim=length(str2num(args{2})); wolffd@0: if ~all([len dim] == asize) & ~isscalar(answer) wolffd@0: answer='??? Illegal assignment'; wolffd@0: return; wolffd@0: else wolffd@0: tmp=sData.data(:,indices); wolffd@0: tmp([str2num(args{1})],[str2num(args{2})])=answer; wolffd@0: sData.MODIFIED=1; wolffd@0: sData.data(:,indices)=tmp; wolffd@0: data.sData=sData; wolffd@0: data.sData.comp_norm(indices)={[]}; wolffd@0: set(pre_h,'UserData',data); wolffd@0: end wolffd@0: wolffd@0: end wolffd@0: end wolffd@0: wolffd@0: case 'D' wolffd@0: if isempty(assign) wolffd@0: if ~all(size(answer) == size(sData.data)) & ~isscalar(answer) wolffd@0: answer='??? Illegal assignment.'; wolffd@0: else wolffd@0: if isscalar(answer) wolffd@0: sData.data(:,:)=answer; wolffd@0: else wolffd@0: sData.data=answer; wolffd@0: end wolffd@0: sData.MODIFIED=1; wolffd@0: data.sData=sData; wolffd@0: data.sData.comp_norm(1:length(sData.data(1,:)))={[]}; wolffd@0: set(pre_h,'UserData',data); wolffd@0: end wolffd@0: else wolffd@0: args=create_args(assign,'D'); wolffd@0: if length(args) == 1 wolffd@0: len=max(str2num(args{1})); wolffd@0: if ~isscalar(len) wolffd@0: answer='??? Illegal assignment.'; wolffd@0: return; wolffd@0: elseif len > length(sData.data(:,1)) | min(str2num(args{1})) < 1 wolffd@0: answer='??? Illegal assignment.'; wolffd@0: return; wolffd@0: end wolffd@0: if ~all(size(answer) == size(sData.data(str2num(args{1})))) &... wolffd@0: ~isscalar(answer) wolffd@0: answer='??? Illegal assignment.'; wolffd@0: else wolffd@0: sData.data(str2num(args{1}))=answer; wolffd@0: sData.MODIFIED=1; wolffd@0: data.sData=sData; wolffd@0: [i,j]=ind2sub(size(sData.data),str2num(args{1})); wolffd@0: data.sData.comp_norm(j)={[]}; wolffd@0: set(pre_h,'UserData',data); wolffd@0: end wolffd@0: else wolffd@0: len=max(str2num(args{1})); wolffd@0: dim=max(str2num(args{2})); wolffd@0: asize=size(answer); wolffd@0: msize=size(sData.data); wolffd@0: if ~isscalar(len) | ~isscalar(dim) wolffd@0: answer='??? Illegal assignment.'; wolffd@0: return; wolffd@0: elseif len > msize(1) | min(str2num(args{1})) < 1 wolffd@0: answer='??? Illegal assignment.'; wolffd@0: return; wolffd@0: elseif dim > msize(2) | min(str2num(args{2})) < 1 wolffd@0: answer= '??? Illegal assignment.'; wolffd@0: return; wolffd@0: end wolffd@0: len = length(str2num(args{1})); wolffd@0: dim = length(str2num(args{2})); wolffd@0: if ~all([len dim] == asize) & ~isscalar(answer) wolffd@0: answer='??? Illegal assignment.'; wolffd@0: return; wolffd@0: else wolffd@0: sData.data([str2num(args{1})],[str2num(args{2})])=answer; wolffd@0: sData.MODIFIED=1; wolffd@0: data.sData=sData; wolffd@0: data.sData.comp_norm(str2num(args{2}))={[]}; wolffd@0: set(pre_h,'UserData',data); wolffd@0: end wolffd@0: end wolffd@0: end wolffd@0: end wolffd@0: end wolffd@0: if sData.MODIFIED wolffd@0: selected=getfield(get(pre_h,'UserData'),'selected_vects'); wolffd@0: vector_h=getfield(get(pre_h,'UserData'),'vector_h'); wolffd@0: vect_mean_h=getfield(get(pre_h,'UserData'),'vect_mean_h'); wolffd@0: vects=zeros(length(sData.data(:,1))); wolffd@0: vects(selected)=1; wolffd@0: draw_vectors(vects,vector_h); wolffd@0: vect_means(sData,vect_mean_h,selected); wolffd@0: pro_tools('plot_hist'); wolffd@0: pro_tools('c_stat'); wolffd@0: cplot_mimema; wolffd@0: end wolffd@0: wolffd@0: wolffd@0: %%% Subfunction: check_assign %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% wolffd@0: wolffd@0: function [name,string,skip]=check_assign(string,evaltype) wolffd@0: wolffd@0: wolffd@0: reswords=[{'D'};{'x'};{'xs'}]; wolffd@0: flag=0; wolffd@0: pre_h=findobj(get(0,'Children'),'Tag','Preprocess'); wolffd@0: wolffd@0: if isempty(pre_h) wolffd@0: man_h=findobj(get(0,'Children'),'Tag','Management'); wolffd@0: clip_h=findobj(get(0,'Children'),'Tag','Clipping'); wolffd@0: errordlg('''Preprocess'' -window does not exist. Terminating program.'); wolffd@0: if ~isempty(man_h) wolffd@0: close man_h; wolffd@0: end wolffd@0: if ~isempty(clip_h) wolffd@0: close clip_h; wolffd@0: end wolffd@0: return; wolffd@0: end wolffd@0: wolffd@0: EMPTY=isempty(get(getfield(get(pre_h,'UserData'),'comp_names_h'),'Value')); wolffd@0: wolffd@0: [name,s]=give_token(string,evaltype); wolffd@0: skip=length(s); wolffd@0: wolffd@0: if strcmp(evaltype,'single') & ~strcmp(name,'x') wolffd@0: string='NOTASSIGN'; wolffd@0: return; wolffd@0: end wolffd@0: wolffd@0: if strcmp(name,'other') & ~strcmp(s,'x') wolffd@0: string = 'error'; wolffd@0: return; wolffd@0: end wolffd@0: wolffd@0: if strcmp(name,[{'x'};{'xs'}]) wolffd@0: comp_names_h=getfield(get(gcf,'UserData'),'comp_names_h'); wolffd@0: if isempty(get(comp_names_h,'Value')) wolffd@0: errordlg('There are not components chosen.'); wolffd@0: string='error'; wolffd@0: return; wolffd@0: end wolffd@0: end wolffd@0: wolffd@0: wolffd@0: if skip == length(string) | ~strcmp(name,reswords) wolffd@0: string = 'NOTASSIGN'; wolffd@0: return; wolffd@0: end wolffd@0: wolffd@0: if (strcmp(name,'x') | strcmp(name,'xs')) & EMPTY wolffd@0: errordlg('There are not components chosen.'); wolffd@0: string = 'error'; wolffd@0: return; wolffd@0: end wolffd@0: wolffd@0: [t,s]=give_token(string(length(name)+1),evaltype); wolffd@0: wolffd@0: if strcmp(t,'(') wolffd@0: flag=1; wolffd@0: end wolffd@0: wolffd@0: [foo,skip]=check_token(string,evaltype); wolffd@0: if length(name) ~= skip-1 wolffd@0: skip=skip-1; wolffd@0: tmp=string(length(name)+1:skip); wolffd@0: else wolffd@0: tmp = []; wolffd@0: end wolffd@0: wolffd@0: if flag & tmp(length(tmp)) ~= ')' wolffd@0: tmp(length(tmp)+1)=')'; wolffd@0: end wolffd@0: wolffd@0: if skip==length(string) wolffd@0: return; wolffd@0: end wolffd@0: wolffd@0: skip=skip+1; wolffd@0: if length(string) ~= skip wolffd@0: [t,s]=give_token(string(skip+1:length(string)),evaltype); wolffd@0: else wolffd@0: string='NOTASSIGN'; wolffd@0: return; wolffd@0: end wolffd@0: wolffd@0: if ~strcmp(t,'=') wolffd@0: string = 'NOTASSIGN'; wolffd@0: return; wolffd@0: end wolffd@0: string=tmp; wolffd@0: skip = skip+2; wolffd@0: wolffd@0: %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% wolffd@0: wolffd@0: %%% Subfunction: isscalar %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% wolffd@0: wolffd@0: function bool = isscalar(x) wolffd@0: wolffd@0: m= size(x); wolffd@0: wolffd@0: bool = m(1) == 1 & m(2) == 1; wolffd@0: wolffd@0: %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% wolffd@0: wolffd@0: %%% Subfunction: create_args %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% wolffd@0: wolffd@0: function args=create_args(string,type) wolffd@0: wolffd@0: arg2=''; wolffd@0: i=2; wolffd@0: j=1; wolffd@0: pre_h=findobj(get(0,'Children'),'Tag','Preprocess'); wolffd@0: msize=size(getfield(getfield(get(pre_h,'UserData'),'sData'),'data')); wolffd@0: wolffd@0: wolffd@0: if string(i) == ':' wolffd@0: arg1=num2str(cat(2,'1:',num2str(msize(1)))); wolffd@0: i=i+1; wolffd@0: j=j+length(arg1); wolffd@0: end wolffd@0: wolffd@0: while string(i) ~=',' & string(i) ~=')' wolffd@0: arg1(j)=string(i); wolffd@0: i=i+1; wolffd@0: j=j+1; wolffd@0: end wolffd@0: wolffd@0: wolffd@0: wolffd@0: if string(i) ==',' wolffd@0: j=1; wolffd@0: i=i+1; wolffd@0: if string(i)==':' wolffd@0: switch type wolffd@0: case 'x' wolffd@0: arg2='1'; wolffd@0: case 'cs' wolffd@0: arg2=num2str(get_indices); wolffd@0: case 'D' wolffd@0: arg2=num2str(cat(2,'1:',num2str(msize(2)))); wolffd@0: end wolffd@0: i=i+1; wolffd@0: j=j+length(arg2); wolffd@0: end wolffd@0: wolffd@0: while string(i) ~= ')' wolffd@0: arg2(j)=string(i); wolffd@0: j=j+1; wolffd@0: i=i+1; wolffd@0: end wolffd@0: end wolffd@0: wolffd@0: wolffd@0: args{1}=arg1; wolffd@0: if ~isempty(arg2) wolffd@0: args{2} = arg2; wolffd@0: end wolffd@0: wolffd@0: %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% wolffd@0: wolffd@0: function [str,skip] = check_token(string,evaltype) wolffd@0: wolffd@0: pre_h=findobj(get(0,'Children'),'Tag','Preprocess'); wolffd@0: wolffd@0: tmp_string=string; wolffd@0: [t,s]=give_token(tmp_string,evaltype); wolffd@0: skip=length(s); wolffd@0: wolffd@0: if strcmp(t,'c') wolffd@0: if isempty(get(getfield(get(pre_h,'UserData'),'comp_names_h'),'Value')) wolffd@0: errordlg('There are no components chosen.'); wolffd@0: str='error'; wolffd@0: return; wolffd@0: end wolffd@0: index=getfield(get_indices,{1}); wolffd@0: str=cat(2,'[',num2str(index),']'); wolffd@0: if skip == length(tmp_string) wolffd@0: return; wolffd@0: end wolffd@0: tmp_string=tmp_string(skip+1:length(tmp_string)); wolffd@0: [t,s] = give_token(tmp_string,evaltype); wolffd@0: if ~strcmp(t,'(') wolffd@0: return; wolffd@0: end wolffd@0: [args,skip2] = get_args(tmp_string(length(s)+1:length(tmp_string)),'c',... wolffd@0: evaltype); wolffd@0: skip=skip+skip2+2; wolffd@0: if strcmp(args,'error') wolffd@0: str = 'error' wolffd@0: return; wolffd@0: elseif ~strcmp(args,'all') wolffd@0: str=cat(2,'getfield(',str,',',args,')'); wolffd@0: else wolffd@0: str=cat(2,'getfield(',str,',{[1]})'); wolffd@0: end wolffd@0: elseif strcmp(t,'cs') wolffd@0: if isempty(get(getfield(get(pre_h,'UserData'),'comp_names_h'),'Value')) wolffd@0: errordlg('There are no components chosen.'); wolffd@0: str='error'; wolffd@0: return; wolffd@0: end wolffd@0: str =cat(2,'[',num2str(get_indices),']'); wolffd@0: if length(s) == length(string) wolffd@0: return; wolffd@0: end wolffd@0: tmp_string=tmp_string(1+length(s):length(string)); wolffd@0: [t,s]=give_token(tmp_string,evaltype); wolffd@0: if ~strcmp(t,'(') wolffd@0: return; wolffd@0: else wolffd@0: [args,skip2]=get_args(tmp_string(1+length(s):length(tmp_string)),'cs',... wolffd@0: evaltype); wolffd@0: skip=2+skip+skip2; wolffd@0: if strcmp(args,'error') wolffd@0: str='error'; wolffd@0: return; wolffd@0: elseif ~strcmp(args,'all') wolffd@0: str = cat(2,'getfield(',str,',',args,')'); wolffd@0: else wolffd@0: tmp_str=str; wolffd@0: str=cat(2,'[getfield(',str,',','{1})'); wolffd@0: for i=2:length(get_indices) wolffd@0: str=cat(2,str,';getfield(',tmp_str,',',sprintf('{%d})',i)); wolffd@0: end wolffd@0: str=cat(2,str,']'); wolffd@0: end wolffd@0: end wolffd@0: elseif strcmp(t,'dim') wolffd@0: ind1=getfield(size(getfield(getfield(get(pre_h,'UserData'),'sData'),'data')),{2}); wolffd@0: str=cat(2,'[',num2str(ind1),']'); wolffd@0: if length(s)==length(string) wolffd@0: return; wolffd@0: end wolffd@0: tmp_string=string(1+length(s):length(string)); wolffd@0: [t,s]=give_token(tmp_string,evaltype); wolffd@0: if ~strcmp(t,'(') wolffd@0: return; wolffd@0: end wolffd@0: skip=1+skip+length(s); wolffd@0: [args,skip2]=get_args(tmp_string(1+length(s):length(tmp_string)),'dim',... wolffd@0: evaltype); wolffd@0: if strcmp(args,'error') wolffd@0: str = 'error'; wolffd@0: return; wolffd@0: else wolffd@0: skip=skip+skip2; wolffd@0: if ~strcmp(args,'all') wolffd@0: str=cat(2,'getfield(',str,',',args,')'); wolffd@0: end wolffd@0: end wolffd@0: wolffd@0: elseif strcmp(t,'dlen') wolffd@0: ind1=getfield(size(getfield(getfield(get(pre_h,'UserData'),'sData'),'data')),{1}); wolffd@0: str=cat(2,'[',num2str(ind1),']'); wolffd@0: if length(s)==length(string) wolffd@0: return; wolffd@0: end wolffd@0: tmp_string=string(1+length(s):length(string)); wolffd@0: [t,s]=give_token(tmp_string,evaltype); wolffd@0: if ~strcmp(t,'(') wolffd@0: return; wolffd@0: end wolffd@0: skip=skip+length(s); wolffd@0: [args,skip2]=get_args(tmp_string(1+length(s):length(tmp_string)),'dlen',... wolffd@0: evaltype); wolffd@0: if strcmp(args,'error') wolffd@0: str='error'; wolffd@0: return; wolffd@0: else wolffd@0: skip=1+skip+skip2; wolffd@0: if ~strcmp(args,'all') wolffd@0: str=cat(2,'getfield(',str,',',args,')'); wolffd@0: end wolffd@0: end wolffd@0: wolffd@0: elseif strcmp(t,'x') wolffd@0: if isempty(get(getfield(get(pre_h,'UserData'),'comp_names_h'),'Value')) wolffd@0: errordlg('There are not components chosen.'); wolffd@0: str='error'; wolffd@0: return; wolffd@0: end wolffd@0: len=getfield(size(getfield(getfield(get(pre_h,'UserData'),... wolffd@0: 'sData'),'data')),{1}); wolffd@0: index=num2str(getfield(get_indices,{1})); wolffd@0: h_str='findobj(get(0,''Children''),''Tag'',''Preprocess'')'; wolffd@0: get_str=cat(2,'getfield(get(',h_str,',''UserData''),''sData'')'); wolffd@0: get_str=cat(2,'getfield(',get_str,',''data'')'); wolffd@0: str=cat(2,'getfield(',get_str,',{[1:',num2str(len),'],',index,'})'); wolffd@0: if length(s) == length(string) wolffd@0: return; wolffd@0: end wolffd@0: tmp_string=string(1+length(s):length(string)); wolffd@0: [t,s]=give_token(tmp_string,evaltype); wolffd@0: if ~strcmp(t,'('); wolffd@0: return; wolffd@0: end wolffd@0: skip=skip+length(s); wolffd@0: [args,skip2]=get_args(tmp_string(1+length(s):length(tmp_string)),'x',... wolffd@0: evaltype); wolffd@0: if strcmp(args,'error') wolffd@0: str = 'error'; wolffd@0: return; wolffd@0: else wolffd@0: skip=1+skip+skip2; wolffd@0: if ~strcmp(args,'all') wolffd@0: str=cat(2,'getfield(',str,',',args,')'); wolffd@0: end wolffd@0: end wolffd@0: wolffd@0: elseif strcmp(t,'xs') wolffd@0: if isempty(get(getfield(get(pre_h,'UserData'),'comp_names_h'),'Value')) wolffd@0: errordlg('There are not components chosen.'); wolffd@0: str='error'; wolffd@0: return; wolffd@0: end wolffd@0: len=getfield(size(getfield(getfield(get(pre_h,'UserData'),... wolffd@0: 'sData'),'data')),{1}); wolffd@0: index=get_indices; wolffd@0: index=cat(2,'[',num2str(index),']'); wolffd@0: h_str='findobj(get(0,''Children''),''Tag'',''Preprocess'')'; wolffd@0: get_str=cat(2,'getfield(get(',h_str,',''UserData''),''sData'')'); wolffd@0: get_str=cat(2,'getfield(',get_str,',''data'')'); wolffd@0: str=cat(2,'getfield(',get_str,',{[1:',num2str(len),'],',index,'})'); wolffd@0: if length(s) == length(string) wolffd@0: return; wolffd@0: end wolffd@0: tmp_string=string(1+length(s):length(string)); wolffd@0: [t,s]=give_token(tmp_string,evaltype); wolffd@0: if ~strcmp(t,'(') wolffd@0: return; wolffd@0: end wolffd@0: skip=1+skip+length(s); wolffd@0: wolffd@0: [args,skip2]=get_args(tmp_string(1+length(s):length(tmp_string)),'xs',... wolffd@0: evaltype); wolffd@0: if strcmp(args,'error') wolffd@0: str = 'error'; wolffd@0: return; wolffd@0: elseif ~strcmp(args,'all') wolffd@0: str=cat(2,'getfield(',str,',',args,')'); wolffd@0: skip=skip+skip2; wolffd@0: else wolffd@0: skip=skip+skip2; wolffd@0: [dlen,dim]=size(eval(str)); wolffd@0: tmp_str=str; wolffd@0: str=cat(2,'[','getfield(',tmp_str,sprintf(',{1:%d,1})',dlen)); wolffd@0: for i=2:dim wolffd@0: tmp=sprintf(',{1:%d,%d})',dlen,dim); wolffd@0: str=cat(2,str,';','getfield(',tmp_str,tmp); wolffd@0: end wolffd@0: str=cat(2,str,']'); wolffd@0: end wolffd@0: elseif strcmp(t,'D') wolffd@0: get_h='findobj(get(0,''Children''),''Tag'',''Preprocess'')'; wolffd@0: str=cat(2,'getfield(getfield(get(',get_h,',''UserData''),''sData''),''data'')'); wolffd@0: wolffd@0: if length(s) >= length(tmp_string) wolffd@0: return; wolffd@0: end wolffd@0: wolffd@0: tmp_string=tmp_string(1+length(s):length(tmp_string)); wolffd@0: [t,s]=give_token(tmp_string,evaltype); wolffd@0: if ~strcmp(t,'(') wolffd@0: return; wolffd@0: else wolffd@0: tmp_string=tmp_string(1+length(s):length(tmp_string)); wolffd@0: skip = skip+length(s); wolffd@0: [args, skip2]=get_args(tmp_string,'D',evaltype); wolffd@0: if strcmp(args,'error') wolffd@0: str='error'; wolffd@0: return; wolffd@0: elseif ~strcmp(args,'all') wolffd@0: str=cat(2,'getfield(',str,',',args,')'); wolffd@0: skip=1+skip+skip2; wolffd@0: else wolffd@0: skip=1+skip+skip2; wolffd@0: [dlen,dim]=size(eval(str)); wolffd@0: tmp_str=str; wolffd@0: str=cat(2,'[getfield(',str,sprintf(',{1:%d,1})',dlen)); wolffd@0: for i=2:dim wolffd@0: tmp=sprintf(',{1:%d,%d}',dlen,i); wolffd@0: str=cat(2,str,';getfield(',tmp_str,tmp,')'); wolffd@0: end wolffd@0: str=cat(2,str,']'); wolffd@0: end wolffd@0: end wolffd@0: else wolffd@0: if strcmp(t,'(') wolffd@0: str = t; wolffd@0: str2=''; wolffd@0: tmp_string=tmp_string(1+length(s):length(tmp_string)); wolffd@0: while ~strcmp(str2,')') & ~isempty(tmp_string) wolffd@0: [str2,skip2]=check_token(tmp_string,evaltype); wolffd@0: if strcmp(str2,'error') wolffd@0: str='error'; wolffd@0: return; wolffd@0: end wolffd@0: skip=skip+skip2; wolffd@0: tmp_string=tmp_string(skip2+1:length(tmp_string)); wolffd@0: str=cat(2,str,str2); wolffd@0: end wolffd@0: if ~strcmp(str2,')') wolffd@0: str = 'error'; wolffd@0: end wolffd@0: else wolffd@0: str = s; wolffd@0: end wolffd@0: end wolffd@0: wolffd@0: %%% Subfunction: get_args %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% wolffd@0: wolffd@0: function [str,skip] = get_args(string,flag,evaltype) wolffd@0: wolffd@0: res_words=[{'D'};{'c'};{'cs'};{'dim'};{'dlen'};{'x'};{'xs'}]; wolffd@0: NOTALL=1; wolffd@0: if isempty(string) wolffd@0: str='error' wolffd@0: skip=[]; wolffd@0: return; wolffd@0: end wolffd@0: [t,s] = give_token(string,evaltype); wolffd@0: wolffd@0: wolffd@0: skip=length(s); wolffd@0: if any(strcmp(t,res_words)); wolffd@0: [str,skip2] = check_token(string,evaltype); wolffd@0: string=string(1+length(s):length(string)); wolffd@0: str=cat(2,'{[',str); wolffd@0: [t,s]=give_token(string,evaltype); wolffd@0: elseif t==')' | t==',' wolffd@0: str = 'error'; wolffd@0: return; wolffd@0: elseif strcmp(t,':'); wolffd@0: if length(s) == length(string) wolffd@0: str='error'; wolffd@0: return; wolffd@0: end wolffd@0: [t,s]=give_token(string(1+length(s):length(string)),evaltype); wolffd@0: if t == ')' wolffd@0: str = 'all'; wolffd@0: return; wolffd@0: end wolffd@0: switch flag wolffd@0: case {'c','cs','dim','dlen'} wolffd@0: str= '{[1'; wolffd@0: otherwise wolffd@0: str=cat(2,'{[',get_all('vect')); wolffd@0: end wolffd@0: NOTALL=0; wolffd@0: string=string(1+length(s):length(string)); wolffd@0: [t,s]=give_token(string,evaltype); wolffd@0: skip=skip+1; wolffd@0: else wolffd@0: str = cat(2,'{[',s); wolffd@0: end wolffd@0: str2 =[]; wolffd@0: wolffd@0: wolffd@0: if ~strcmp(t,',') & ~strcmp(t,')') wolffd@0: skip=skip-length(s); wolffd@0: end wolffd@0: wolffd@0: wolffd@0: wolffd@0: while ~strcmp(t,',') & ~strcmp(t,')') & NOTALL; wolffd@0: str=cat(2,str,str2); wolffd@0: [t,s] = give_token(string,evaltype); wolffd@0: if length(s) == length(string) wolffd@0: str = 'error'; wolffd@0: return; wolffd@0: end wolffd@0: string=string(1+length(s):length(string)); wolffd@0: skip=skip+length(s); wolffd@0: [t,s]=give_token(string,evaltype); wolffd@0: if length(s) == length(string) & ~strcmp(t,')') wolffd@0: str = 'error'; wolffd@0: return; wolffd@0: end wolffd@0: wolffd@0: [str2,foo]=check_token(string,evaltype); wolffd@0: end wolffd@0: wolffd@0: if NOTALL & ~strcmp(t,')') wolffd@0: skip=skip+1; wolffd@0: end wolffd@0: wolffd@0: if strcmp(t,')') wolffd@0: str=cat(2,str,']}'); wolffd@0: return wolffd@0: end wolffd@0: wolffd@0: str=cat(2,str,']',',','['); wolffd@0: str2 = []; wolffd@0: wolffd@0: wolffd@0: [t,s] = give_token(string,evaltype); wolffd@0: if strcmp(t,')') wolffd@0: str = 'error' wolffd@0: return; wolffd@0: end wolffd@0: NOTALL=1; wolffd@0: string=string(1+length(s):length(string)); wolffd@0: [t,s]=give_token(string,evaltype); wolffd@0: if strcmp(t,':'); wolffd@0: switch flag wolffd@0: case {'c','dim','dlen','x'} wolffd@0: str=cat(2,str,'1'); wolffd@0: case 'D' wolffd@0: str=cat(2,str,get_all('comp')); wolffd@0: case {'cs','xs'} wolffd@0: str=cat(2,str,'1:',num2str(length(get_indices))); wolffd@0: end wolffd@0: NOTALL=0; wolffd@0: if length(s) == length(string) wolffd@0: str='error'; wolffd@0: return; wolffd@0: end wolffd@0: string=string(1+length(s):length(string)); wolffd@0: [t,s]=give_token(string,evaltype); wolffd@0: end wolffd@0: wolffd@0: if ~strcmp(t,')') & NOTALL wolffd@0: skip=skip-1; wolffd@0: end wolffd@0: wolffd@0: while ~strcmp(t,')') & NOTALL wolffd@0: str=cat(2,str,str2); wolffd@0: skip=skip+length(s); wolffd@0: if length(s) == length(string) & ~strcmp(t,')') wolffd@0: str='error'; wolffd@0: return; wolffd@0: end wolffd@0: [str2,foo]=check_token(string,evaltype); wolffd@0: string=string(1+length(s):length(string)); wolffd@0: [t,s]=give_token(string,evaltype); wolffd@0: end wolffd@0: if ~strcmp(t,')') wolffd@0: str='error'; wolffd@0: return; wolffd@0: end wolffd@0: wolffd@0: wolffd@0: str=cat(2,str,str2,']}'); wolffd@0: skip=skip+length(s); wolffd@0: wolffd@0: %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% wolffd@0: wolffd@0: %%% Subfunction: get_all %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% wolffd@0: wolffd@0: function str=get_all(vect_or_comp) wolffd@0: wolffd@0: pre_h=findobj(get(0,'Children'),'Tag','Preprocess'); wolffd@0: wolffd@0: switch vect_or_comp wolffd@0: case 'vect' wolffd@0: dim=getfield(size(getfield(getfield(get(pre_h,'UserData'),... wolffd@0: 'sData'),'data')),{1}); wolffd@0: str=cat(2,'1:',num2str(dim)); wolffd@0: case 'comp' wolffd@0: dim=getfield(size(getfield(getfield(get(pre_h,'UserData'),... wolffd@0: 'sData'),'data')),{2}); wolffd@0: str=cat(2,'1:',num2str(dim)); wolffd@0: end wolffd@0: wolffd@0: %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% wolffd@0: wolffd@0: function [token,str]=give_token(string,evaltype) wolffd@0: wolffd@0: n=length(string); wolffd@0: i=1; wolffd@0: char=string(i); wolffd@0: wolffd@0: switch analyze_char(string(i)); wolffd@0: case 'num' wolffd@0: token='num'; wolffd@0: while i <= n & strcmp('num',analyze_char(string(i))) wolffd@0: str(i)=string(i); wolffd@0: i=i+1; wolffd@0: end wolffd@0: case 'other' wolffd@0: switch string(i) wolffd@0: case ':' wolffd@0: token = ':'; wolffd@0: case ',' wolffd@0: token = ','; wolffd@0: case '(' wolffd@0: token = '('; wolffd@0: case ')' wolffd@0: token = ')'; wolffd@0: case '=' wolffd@0: token = '='; wolffd@0: otherwise wolffd@0: token='other'; wolffd@0: end wolffd@0: str=string(i); wolffd@0: case 'alpha' wolffd@0: while i <= n & strcmp('alpha',analyze_char(string(i))) wolffd@0: str(i)=string(i); wolffd@0: i=i+1; wolffd@0: end wolffd@0: token = find_res_word(str,evaltype); wolffd@0: end wolffd@0: wolffd@0: %%% Subfunction: analyze_char %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% wolffd@0: wolffd@0: function type=analyze_char(char) wolffd@0: wolffd@0: wolffd@0: if ((char-0) >= ('0'-0) & (char-0) <= ('9'-0)) wolffd@0: type='num'; wolffd@0: elseif ((char-0) >= ('a'-0) & (char-0) <= ('z'-0)) ... wolffd@0: | ((char-0) >= ('A'-0) & (char-0) <= ('Z'-0)) wolffd@0: type='alpha'; wolffd@0: else wolffd@0: type='other'; wolffd@0: end wolffd@0: wolffd@0: wolffd@0: %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% wolffd@0: wolffd@0: %%% Subfunction: find_res_word %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% wolffd@0: wolffd@0: function token = find_res_word(string,evaltype) wolffd@0: wolffd@0: reswords=[{'D'};{'c'};{'cs'};{'dim'};{'dlen'};{'x'};{'xs'};{'other'}]; wolffd@0: wolffd@0: for i=1:length(reswords); wolffd@0: token=reswords{i}; wolffd@0: if strcmp(string,reswords{i}) wolffd@0: if strcmp(evaltype,'single') & ~strcmp(string,'x') wolffd@0: token = 'other'; wolffd@0: end wolffd@0: return; wolffd@0: end wolffd@0: end wolffd@0: wolffd@0: %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% wolffd@0: wolffd@0: function close_func(varargin) wolffd@0: wolffd@0: switch varargin{1} wolffd@0: case 'close_c' wolffd@0: str='% Closing the ''Clipping'' -window...'; wolffd@0: clip_h=findobj(get(0,'Children'),'Tag','Clipping'); wolffd@0: close(clip_h); wolffd@0: case 'close_sD' wolffd@0: str='% Closing the ''Data Set Management'' -window...'; wolffd@0: sD_h=findobj(get(0,'Children'),'Tag','Management'); wolffd@0: close(sD_h); wolffd@0: case 'close_w' wolffd@0: str='% Closing the ''Windowed'' -window...'; wolffd@0: win_h=findobj(get(0,'Children'),'Tag','Window'); wolffd@0: close(win_h); wolffd@0: case 'close_s' wolffd@0: str='% Closing the ''Select'' -window...'; wolffd@0: sel_h=findobj(get(0,'Children'),'Tag','Select'); wolffd@0: close(sel_h); wolffd@0: case 'close_d' wolffd@0: str='% Closing the ''Delay'' -window...'; wolffd@0: del_h=findobj(get(0,'Children'),'Tag','Delay'); wolffd@0: close(del_h); wolffd@0: end wolffd@0: wolffd@0: if nargin ~= 2 wolffd@0: pre_h=findobj(get(0,'Children'),'Tag','Preprocess'); wolffd@0: preh_udata=get(pre_h,'UserData'); wolffd@0: str2=cat(2,'preprocess(''',varargin{1},''',''foo'');'); wolffd@0: preh_udata.LOG{length(preh_udata.LOG)+1}=str; wolffd@0: preh_udata.LOG{length(preh_udata.LOG)+1}=str2; wolffd@0: set(pre_h,'UserData',preh_udata); wolffd@0: end wolffd@0: wolffd@0: %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% wolffd@0: wolffd@0: function log_file wolffd@0: wolffd@0: answer=inputdlg('Give the name of the outputfile:','LOG function',1,... wolffd@0: {'log_function'}); wolffd@0: wolffd@0: if isempty(answer) wolffd@0: return; wolffd@0: end wolffd@0: wolffd@0: wolffd@0: tmp=clock; wolffd@0: str =cat(2,'% Created: ',... wolffd@0: date,... wolffd@0: ' ',sprintf('%d:%d\n%\n\n',tmp(4),tmp(5))); wolffd@0: pre_h=findobj(get(0,'Children'),'Tag','Preprocess'); wolffd@0: LOG=getfield(get(pre_h,'UserData'),'LOG'); wolffd@0: file=cat(2,pwd,'/',answer{1},'.m'); wolffd@0: fid =fopen(file,'w'); wolffd@0: wolffd@0: arg=LOG{2}(12:length(LOG{2})-2); wolffd@0: fprintf(fid,'%s\n \n',cat(2,'function ',answer{1},'(',arg,')')); wolffd@0: fprintf(fid,'%s\n',str); wolffd@0: for i=1:length(LOG) wolffd@0: fprintf(fid,'%s\n',LOG{i}); wolffd@0: end wolffd@0: fclose(fid); wolffd@0: disp(sprintf('LOG-file ''%s'' is done.',file)); wolffd@0: wolffd@0: %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% wolffd@0: wolffd@0: function get_selected_inds(varargin) wolffd@0: wolffd@0: if nargin == 1 wolffd@0: LOG=1; wolffd@0: answer = {varargin{1}}; wolffd@0: else wolffd@0: LOG=0; wolffd@0: end wolffd@0: wolffd@0: selected=getfield(get(gcf,'UserData'),'selected_vects'); wolffd@0: if ~LOG wolffd@0: answer=inputdlg('Give the name of the output variable:',... wolffd@0: '',1,{'indices'}); wolffd@0: end wolffd@0: wolffd@0: if isempty(answer) | isempty(answer{1}) wolffd@0: return; wolffd@0: else wolffd@0: assignin('base',answer{1},selected); wolffd@0: disp(cat(2,'Indices of the selected vectors are set to the workspace ',... wolffd@0: sprintf(' as ''%s''.',answer{1}))); wolffd@0: if ~LOG wolffd@0: data=get(gcf,'UserData'); wolffd@0: data.LOG{length(data.LOG)+1}=... wolffd@0: '% Saving indices of the selected vectors to the workspace.'; wolffd@0: data.LOG{length(data.LOG)+1}=cat(2,'preprocess(''get_inds'',',... wolffd@0: '''',answer{1},''');'); wolffd@0: set(gcf,'UserData',data); wolffd@0: end wolffd@0: end wolffd@0: wolffd@0: %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% wolffd@0: wolffd@0: function no_of_selected(varargin) wolffd@0: wolffd@0: if nargin == 1 wolffd@0: pre_h=findobj(get(0,'Children'),'Tag','Preprocess'); wolffd@0: set(0,'CurrentFigure',pre_h); wolffd@0: LOG = 1; wolffd@0: else wolffd@0: LOG = 0; wolffd@0: end wolffd@0: wolffd@0: results_h=getfield(get(gcf,'UserData'),'results_h'); wolffd@0: no=length(getfield(get(gcf,'UserData'),'selected_vects')); wolffd@0: str={sprintf('Number of selected vectors: %d\n', no)}; wolffd@0: set(results_h,'String',str,'HorizontalAlignment','left'); wolffd@0: wolffd@0: if ~LOG wolffd@0: data=get(gcf,'UserData'); wolffd@0: data.LOG{length(data.LOG)+1}='% Number of selected vectors'; wolffd@0: data.LOG{length(data.LOG)+1}='preprocess(''no_of_sel'',''foo'');'; wolffd@0: set(gcf,'UserData',data); wolffd@0: end wolffd@0: wolffd@0: %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% wolffd@0: wolffd@0: function select_all_comps(varargin) wolffd@0: wolffd@0: if nargin == 1 wolffd@0: pre_h=findobj(get(0,'Children'),'Tag','Preprocess'); wolffd@0: set(0,'CurrentFigure',pre_h); wolffd@0: LOG=1; wolffd@0: else wolffd@0: LOG=0; wolffd@0: end wolffd@0: wolffd@0: comp_names_h=getfield(get(gcf,'UserData'),'comp_names_h'); wolffd@0: wolffd@0: set(comp_names_h,'Value',[1:length(get(comp_names_h,'String'))]); wolffd@0: sel_comp; wolffd@0: wolffd@0: if ~LOG wolffd@0: data=get(gcf,'UserData'); wolffd@0: data.LOG{length(data.LOG)+1}='% Select all components'; wolffd@0: data.LOG{length(data.LOG)+1}='preprocess(''sel_all_comps'',''foo'');'; wolffd@0: set(gcf,'UserData',data); wolffd@0: end wolffd@0: wolffd@0: %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% wolffd@0: wolffd@0: function code=write_log_code(indices,arg1,arg2,arg3,arg4,arg5,arg6); wolffd@0: wolffd@0: str=textwrap({num2str(indices)},500); wolffd@0: wolffd@0: code{1}=sprintf('inds=[];'); wolffd@0: for i=1:length(str); wolffd@0: code{i+1}=sprintf(' inds=cat(2,inds,[%s]);',str{i}); wolffd@0: end wolffd@0: str=cat(2,'preprocess(''''clip_data'''',''''',arg1,' ',num2str(arg2),' ',... wolffd@0: num2str(arg3),' ',num2str(arg4),... wolffd@0: ' ',num2str(arg5),' ',num2str(arg6),' '); wolffd@0: code{length(code)+1}=cat(2,'eval(cat(2,',... wolffd@0: '''',str,'''',... wolffd@0: ',num2str(inds),'''''');''));'); wolffd@0: wolffd@0: %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%