📄 mfbox_pre_datavalueg.m
字号:
function varargout=mfbox_pre_datavalueg(varargin)% MFBOX_PRE_DATAVALUEG M-file for mfbox_pre_datavalueg.fig%% See also: GUIDE, GUIDATA, GUIHANDLES%% Copyright by Peter Gruber and Fabian J. Theis% Signal Processing & Information Theory group% Institute of Biophysics, University of Regensburg, Germany% Homepage: http://research.fabian.theis.name% http://www-aglang.uni-regensburg.de%% This file is free software, subject to the % GNU GENERAL PUBLIC LICENSE, see gpl.txt% Begin initialization code - DO NOT EDITgui_Singleton = 1;gui_State = struct('gui_Name',mfilename, ... 'gui_Singleton',gui_Singleton, ... 'gui_OpeningFcn',@mfbox_pre_datavalueg_OpeningFcn, ... 'gui_OutputFcn',@mfbox_pre_datavalueg_OutputFcn, ... 'gui_LayoutFcn',[], ... 'gui_Callback',[]);if (nargin&&(ischar(varargin{1}))) gui_State.gui_Callback = str2func(varargin{1});endif (nargout) [varargout{1:nargout}] = gui_mainfcn(gui_State,varargin{:});else gui_mainfcn(gui_State,varargin{:});end% End initialization code - DO NOT EDIT% --- Executes just before mfbox_pre_datavalueg is made visible.function mfbox_pre_datavalueg_OpeningFcn(hObject,eventdata,handles,varargin)% varargin{1} contains data X% varargin{2} contains data mask% varargin{3} contains data grid% varargin{4} contains timeline% varargin{5} (optional) contains the parameters% varargin{6} (optional) contains runflag (0: param edit only, 1: param+run, 2: run only)% varargin{7} (optional) contains private struct for mfbox_databackend('redraw_mask',mask,private)handles.output = hObject;handles.X = varargin{1};if (isstruct(handles.X)), s = [handles.X.dim,handles.X.timesteps];else, s = size(handles.X);endhandles.dim = s(1:(end-1));if (length(handles.dim)<2), handles.dim = [1,handles.dim]; endhandles.n = s(end);if (nargin>4), handles.mask = varargin{2}; else handles.mask = logical(ones(handles.dim));endhandles.dim = size(handles.mask);if (nargin>5), handles.grid = varargin{3};else handles.grid = mfbox_mkgrid(handles.dim)';endif (nargin>6), handles.timeline = varargin{4};else handles.timeline = 0:(handles.n-1);endif (nargin>7), handles.params = varargin{5};else handles.params = [];endif (nargin>8), handles.runflag = varargin{6};else handles.runflag = 2;endif (nargin>9), handles.private = varargin{7}; endif (isstruct(handles.X)) handles.minX = ones(handles.X.dim)*Inf; handles.maxX = -ones(handles.X.dim)*Inf; for i=1:handles.X.timesteps v = reshape(mfbox_databackend('getdata',handles.X,i),handles.dim); miv = handles.minX>v; mav = handles.maxX<v; handles.minX(miv) = v(miv); handles.maxX(mav) = v(mav); endelse handles.minX = reshape(min(reshape(handles.X,[],handles.n),[],2),handles.dim); handles.maxX = reshape(max(reshape(handles.X,[],handles.n),[],2),handles.dim);endms = size(handles.mask);ng = mat2cell(mfbox_mkgrid(ms),prod(ms),ones(1,length(ms)));g = {};for i=1:size(handles.grid,1), g{i} = reshape(handles.grid(i,:),handles.dim); endif (~isempty(handles.minX)) handles.minX = reshape(interpn(g{:},handles.minX,ng{:}),handles.dim);endif (~isempty(handles.maxX)) handles.maxX = reshape(interpn(g{:},handles.maxX,ng{:}),handles.dim);endhandles.dim = ms;handles.minval = floor(min(handles.minX(:)));handles.maxval = ceil(max(handles.maxX(:)));miv = max([-1/eps,handles.minval]);mav = min([1/eps,handles.maxval]);handles.params.valmin = max(miv-1,handles.params.valmin);handles.params.valmax = min(mav+1,handles.params.valmax);set(handles.priority,'String',mat2str(handles.params.priority));set(handles.valmin,'Value',handles.params.valmin);set(handles.valmax,'Value',handles.params.valmax);set(handles.valmin,'Min',miv-1,'Max',mav,'Value',handles.params.valmin, ... 'SliderStep',min(ones(1,2)/max(mav-miv+2,1),1));set(handles.valmax,'Min',miv,'Max',mav+1,'Value',handles.params.valmax, ... 'SliderStep',min(ones(1,2)/max(mav-miv+2,1),1));settext(handles);if (handles.runflag<1) if (isfield(handles,'private')), redrawmask(handles); end set(handles.run,'String','Set ...');endguidata(hObject,handles);uiwait(handles.figure1);% --- Outputs from this function are returned to the command line.function varargout=mfbox_pre_datavalueg_OutputFcn(hObject,eventdata,handles) % varargout{1} contains the (edited) parameters% varargout{2} (optional) contains (changed) private handleif (isstruct(handles)) close(handles.figure1); varargout{1} = handles.params; if (nargout>1), varargout{2} = handles.private; endelse varargout{1} = [];end% --- Executes on button press in run.function run_Callback(hObject,eventdata,handles)handles.params.priority = str2double(get(handles.priority,'String'));handles.params.valmin = round(get(handles.valmin,'Value'));handles.params.valmax = round(get(handles.valmax,'Value'));guidata(hObject, handles);uiresume(gcf);function priority_Callback(hObject,eventdata,handles)set(hObject,'String',mat2str(min(max(floor(str2double(get(hObject,'String'))),1),100)));% --- Executes during object creation, after setting all properties.function priority_CreateFcn(hObject, eventdata, handles)if (ispc&&(isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')))) set(hObject,'BackgroundColor','white');end% --- Executes on slider movement.function valmin_Callback(hObject,eventdata,handles)set(hObject,'Value',round(get(hObject,'Value')));settext(handles);if (isfield(handles,'private')), redrawmask(handles); endguidata(hObject,handles);% --- Executes during object creation, after setting all properties.function valmin_CreateFcn(hObject,eventdata,handles)if (isequal(get(hObject,'BackgroundColor'),get(0,'defaultUicontrolBackgroundColor'))) set(hObject,'BackgroundColor',[.9,.9,.9]);end% --- Executes on slider movement.function valmax_Callback(hObject,eventdata,handles)set(hObject,'Value',round(get(hObject,'Value')));settext(handles);if (isfield(handles,'private')), redrawmask(handles); endguidata(hObject,handles);% --- Executes during object creation, after setting all properties.function valmax_CreateFcn(hObject,eventdata,handles)if (isequal(get(hObject,'BackgroundColor'),get(0,'defaultUicontrolBackgroundColor'))) set(hObject,'BackgroundColor',[.9,.9,.9]);end% ---function settext(handles)v = round(get(handles.valmin,'Value')); w = round(get(handles.valmax,'Value'));if (v<w), set(handles.vallabel,'String',sprintf('%2d<value<%2d',v,w));else set(handles.vallabel,'String',sprintf('value<=%2d,%2d<=value',w,v));endfunction redrawmask(handles)v = round(get(handles.valmin,'Value')); w = round(get(handles.valmax,'Value'));if (v<w), mask = (handles.minX>v) & (handles.maxX<w);else mask = (handles.minX<=w)|(handles.maxX>=v);endmfbox_databackend('redraw_mask',mask,handles.private);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -