www.gusucode.com > wavelet工具箱matlab源码程序 > wavelet/wmultisig1d/showclusters.m
function varargout = showclusters(varargin) %SHOWCLUSTERS Show clusters tool (Multisignal 1D). % VARARGOUT = SHOWCLUSTERS(VARARGIN) % Last Modified by GUIDE v2.5 05-Jul-2013 09:45:35 % % M. Misiti, Y. Misiti, G. Oppenheim, J.M. Poggi 17-May-2005. % Last Revision 11-Jul-2013. % Copyright 1995-2013 The MathWorks, Inc. % $Revision: 1.1.6.7 $ $Date: 2013/08/23 23:45:53 $ %*************************************************************************% % BEGIN initialization code - DO NOT EDIT % % ---------------------------------------- % %*************************************************************************% gui_Singleton = 0; gui_State = struct('gui_Name', mfilename, ... 'gui_Singleton', gui_Singleton, ... 'gui_OpeningFcn', @showclusters_OpeningFcn, ... 'gui_OutputFcn', @showclusters_OutputFcn, ... 'gui_LayoutFcn', [] , ... 'gui_Callback', []); if nargin && ischar(varargin{1}) gui_State.gui_Callback = str2func(varargin{1}); end if nargout [varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:}); else gui_mainfcn(gui_State, varargin{:}); end %*************************************************************************% % END initialization code - DO NOT EDIT % %*************************************************************************% %*************************************************************************% % BEGIN Opening Function % % ---------------------- % % --- Executes just before showclusters is made visible. % %*************************************************************************% function showclusters_OpeningFcn(hObject,eventdata,handles,varargin) % This function has no output args, see OutputFcn. % Choose default command line output for showclusters handles.output = hObject; % Update handles structure guidata(hObject,handles); %%!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!% % TOOL INITIALISATION Introduced manualy in the automatic generated code % %%!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!% Init_Tool(hObject,eventdata,handles,varargin{:}); %*************************************************************************% % END Opening Function % %*************************************************************************% %*************************************************************************% % BEGIN Output Function % % --------------------- % % --- Outputs from this function are returned to the command line. % %*************************************************************************% function varargout = showclusters_OutputFcn(~,~,handles) % varargout cell array for returning output args (see VARARGOUT); % Get default command line output from handles structure varargout{1} = handles.output; %*************************************************************************% % END Output Function % %*************************************************************************% %=========================================================================% % BEGIN Tool Initialization % %=========================================================================% function Init_Tool(fig,~,handles,varargin) % Check input Parameters. %------------------------ nbIN = length(varargin); switch nbIN case 2 callingFILE = varargin{1}; caller = varargin{2}; [callingOBJ,callingFIG] = gcbo; toolMode = 'client'; fig_PAR = callingFIG; fig_PAR_INFO = guidata(fig_PAR); fig_Storage = fig_PAR_INFO.fig_Storage; % fig_Storage is a structure: % [callingFIG , fig_ORI , fig_DorC , fig_SEL <=== fig_PAR] fig_INI = fig_Storage.callingFIG; fig_INI_INFO = guidata(fig_INI); DirDEC = fig_INI_INFO.data_ORI.dir_DEC; SET_of_Partitions = wtbxappdata('get',fig_INI,'SET_of_Partitions'); nbPART = length(SET_of_Partitions); if nbPART>0 nbSIG = length(get(SET_of_Partitions(1),'IdxCLU')); TAB_Partitions = zeros(nbSIG,nbPART); for k = 1:nbPART TAB_Partitions(:,k) = get(SET_of_Partitions(k),'IdxCLU'); end part_NAMES = getpartnames(SET_of_Partitions); else part_NAMES = {}; TAB_Partitions = []; end switch caller case 'CLU' set([handles.Pop_PART_SEL,handles.Txt_PART_SEL],... 'Visible','Off'); case 'PAR' end referFIG = fig_INI; Data_Name = get(fig_INI_INFO.Edi_Data_NS,'String'); tool_Name = caller; case 3 callingFILE = []; callingOBJ = []; callingFIG = []; toolMode = 'auto'; [Data_Name,TAB_Partitions,DirDEC] = deal(varargin{:}); tool_Name = 'PAR'; referFIG = fig; end if ~isempty(TAB_Partitions) TAB_Partitions = tab2part(TAB_Partitions); end nbPART = length(TAB_Partitions); % Begin initialization. %---------------------- set(fig,'Visible','off'); mdw1dutils('data_INFO_MNGR','create',fig,tool_Name,referFIG); % WTBX -- Install DynVTool %------------------------- dynvtool('Install_V3',fig,handles); % WTBX -- Initialize GUIDE Figure. %--------------------------------- wfigmngr('beg_GUIDE_FIG',fig); % UIMENU Installation. %--------------------- m_files = wfigmngr('getmenus',fig,'file'); m_close = wfigmngr('getmenus',fig,'close'); cb_close = ... [mfilename '(''Pus_CloseWin_Callback'',gcbo,[],guidata(gcbo));']; set(m_close,'Callback',cb_close); hdl_Menus = struct('m_files',m_files,'m_close',m_close); wtbxappdata('set',fig,'hdl_Menus',hdl_Menus); % WTBX -- Terminate GUIDE Figure. %-------------------------------- wfigmngr('end_GUIDE_FIG',fig,mfilename); % Other Initializations. %----------------------- switch toolMode case 'auto' signals = msloadutl(Data_Name); if isequal(lower(DirDEC(1)),'c') , signals = signals'; end sizSIG = size(signals); data_SEL.sel_DAT = signals; data_SEL.Attrb_SEL = {0,0,0}; mdw1dutils('data_INFO_MNGR','set',fig,'SEL',data_SEL); [~,name,ext] = fileparts(Data_Name); if isequal(ext,'.mat') , ext = ''; end nbSTR = int2str(sizSIG(1)); strNAM = [name , ext , ' (' nbSTR 'x' int2str(sizSIG(2)) ... ') - ' nbSTR ' sig.']; numPART = 1:nbPART; part_NAMES = [repmat('Part ',nbPART,1) , int2str(numPART')]; part_NAMES = num2cell(part_NAMES,2); case 'client' strNAM = Data_Name; switch caller case 'CLU' clu_INFO = ... blockdatamngr('get',callingFIG,'current_PART','clu_INFO'); nbSIG = length(clu_INFO.IdxCLU); TAB_Partitions = [clu_INFO , TAB_Partitions]; part_NAMES = [getWavMSG('Wavelet:moreMSGRF:Curr_Part') ; ... part_NAMES]; data_To_Clust = wtbxappdata('get',fig_PAR,'data_To_Clust'); wtbxappdata('set',fig,'data_To_Clust',data_To_Clust); set(handles.Pan_PLOT_SELECT,'Visible','On') nbSTR = int2str(nbSIG); strNAM = [strNAM , ' - ' nbSTR ' sig.']; case 'PAR' fig_PAR_INFO.data_SEL.sel_DAT; data_SEL.sel_DAT = fig_PAR_INFO.data_SEL.sel_DAT; data_SEL.Attrb_SEL = {0,0,0}; mdw1dutils('data_INFO_MNGR','set',fig,'SEL',data_SEL); end end set(handles.Edi_Data_NS,'String',strNAM); set(handles.Pop_PART_SEL,'String',part_NAMES,'Value',1); set([handles.Pus_MEAN_MED,handles.Pus_glb_STD,handles.Pus_loc_STD], ... 'FontWeight','bold'); TAB_Partitions = renumpart('col',TAB_Partitions); clusters_INFO = tab2part(TAB_Partitions(:,1)); Keep_DynV_Enabled = get(handles.Pan_ON_OFF,'Children'); struct_CALL = struct('Fig',callingFIG,'Obj',callingOBJ,'File',callingFILE); wtbxappdata('set',fig,'struct_CALL',struct_CALL); wtbxappdata('set',fig,'TAB_Partitions',TAB_Partitions); wtbxappdata('set',fig,'clusters_INFO',clusters_INFO); wtbxappdata('set',fig,'Keep_DynV_Enabled',Keep_DynV_Enabled); showClust_FUNC(handles) %=========================================================================% % END Tool Initialization % %=========================================================================% %=========================================================================% % BEGIN Callback Functions % % ------------------------ % %=========================================================================% function showClust_FUNC(handles,varargin) nb_GRA_Max = 12; fig = handles.Current_Fig; % Begin waiting. %--------------- wwaiting('msg',fig,getWavMSG('Wavelet:commongui:WaitCompute')); numPART = get(handles.Pop_PART_SEL,'Value'); TAB_Partitions = wtbxappdata('get',fig,'TAB_Partitions'); PART = TAB_Partitions(numPART); NbCLU = PART.NbCLU; IdxCLU = PART.IdxCLU; NbInCLU = PART.NbInCLU; IdxInCLU = PART.IdxInCLU; Nb_AXE = min([NbCLU,nb_GRA_Max]); Axe_CLU = handles.Axe_CLU; set(Axe_CLU,'Visible','Off') child = allchild(Axe_CLU); child = cat(1,child{:}); delete(child); if nargin<2 usr = get(handles.Pan_Show_CLU,'UserData'); if isempty(usr) pos_Axe = get(Axe_CLU,'Position'); pos_Axe = cat(1,pos_Axe{:}); [pos_Axe,idx] = sortrows(pos_Axe,[-2,1]); Axe_CLU = Axe_CLU(idx); set(handles.Pan_Show_CLU,'UserData',{Axe_CLU,pos_Axe}); else Axe_CLU = usr{1}; pos_Axe = usr{2}; end switch Nb_AXE case 1 case {2,3,4,5,6,7,8,9} if Nb_AXE<9 , nbX = 2; else nbX = 3; end nbY = ceil(Nb_AXE/nbX); dx = 1/12; dxEnd = 1/20; wA = (1-nbX*dx-dxEnd)/nbX; dy1 = 1/10; dy2 = 1/10; dy3 = 1/16; hA = (1-dy1-(nbY-1)*dy2-dy3)/nbY; yA = 1-dy1-hA; for k = 1:nbX:Nb_AXE for j = 1:nbX xA = dx+(j-1)*(wA+dx); set(Axe_CLU(k+j-1),'Position',[xA,yA,wA,hA]); end yA = yA-dy2-hA; end case {10,11,12} for k = 1:Nb_AXE , set(Axe_CLU(k),'Position',pos_Axe(k,:)); end end set(Axe_CLU(1:Nb_AXE),'Visible','On') else usr = get(handles.Pan_Show_CLU,'UserData'); Axe_CLU = usr{1}; end Signaux_Traites = blockdatamngr('get',fig,'data_SEL','sel_DAT'); sig_COL = [1 0.5 0.5]; clu_COL = [0.4 0.6 1]; mean_COL = [200 30 30]/255; median_COL = mean_COL; loc_COL = [0.15 0.15 0.95]; gbl_COL = [80 220 40]/255; LW_Med = 2; sig_FLAG = get(handles.Rad_SEE_CLU_SIG,'Value'); switch sig_FLAG case 0 Signaux_Traites = wtbxappdata('get',fig,'data_To_Clust'); disp_COL = clu_COL; case 1 data_SEL = mdw1dutils('data_INFO_MNGR','get',fig,'SEL'); Signaux_Traites = data_SEL.sel_DAT; disp_COL = sig_COL; end [NbSIG,NbPts] = size(Signaux_Traites); [sdtQ1,sdtQ2,glb_STD,meanVAL,medianVAL,loc_STD] = ... partstdqual(PART,Signaux_Traites,1); sigSTR = 'Sig. '; sep = ' - '; cluSTR = 'Clu. '; oneIDX = ones(NbSIG,1); sigSTR = [sigSTR(oneIDX,:) num2str((1:NbSIG)','%4.0f') ... sep(oneIDX,:) cluSTR(oneIDX,:) num2str(IdxCLU(:),'%3.0f')]; sigSTR = num2cell(sigSTR,2); strPOP = ['none' ; sigSTR]; set(handles.Pop_HIG_CLU,'String',strPOP,'Value',1) set([handles.Txt_HIG_CLU,handles.Pop_HIG_CLU],'Enable','On'); title_STR = getWavMSG('Wavelet:mdw1dRF:Edi_TIT_Show_CLU',numPART,NbCLU); set(handles.Pan_Show_CLU,'title',formatPanTitle(title_STR)); if NbCLU<=nb_GRA_Max idx_CLA = (1:NbCLU); last = NbCLU; else [~,idx_CLA] = sort(NbInCLU,'descend'); last = nb_GRA_Max-1; end meanFLAG = get(handles.Pus_MEAN_MED,'UserData'); vis_MEAN = 'Off'; vis_MED = 'Off'; vis_SIG = get(handles.Pus_SIG_OnOff,'UserData'); if isempty(vis_SIG) , vis_SIG = 'On'; end if meanFLAG view_MEAN_MED = get(handles.Rad_MEAN,'UserData'); switch view_MEAN_MED case 1 , vis_MEAN = 'On'; case 2 , vis_MED = 'On'; end end loc_stdFLAG = get(handles.Pus_loc_STD,'UserData'); switch loc_stdFLAG case 0 , vis_loc_STD = 'Off'; case 1 , vis_loc_STD = 'On'; end glb_stdFLAG = get(handles.Pus_glb_STD,'UserData'); switch glb_stdFLAG case 0 , vis_glb_STD = 'Off'; case 1 , vis_glb_STD = 'On'; end nbSTD = get(handles.Rad_loc_STD(1),'UserData'); p_lin_LOC_STD = {... 'LineWidth',2,'Color',loc_COL,'LineStyle','-',... 'Visible',vis_loc_STD,'Tag','lin_LOC_STD'}; p_lin_GLB_STD = {... 'LineWidth',2,'Color',gbl_COL,'LineStyle','-',... 'Visible',vis_glb_STD,'Tag','lin_GLB_STD'}; set(fig,'HandleVisibility','On') formatPER = '%5.2f'; for k = 1:last num = idx_CLA(k); nbIN = NbInCLU(num); strPER = [num2str(100*nbIN/NbSIG,formatPER) '%']; strT1 = ['Class ' int2str(num) ' - Nb ' int2str(nbIN) ' - ' strPER]; strT1 = [strT1 ' -- D = ' num2str(glb_STD(num),'%9.3f')]; %#ok<*AGROW> strT2 = ['Q1 = 1 - D / max = ' num2str(sdtQ1(num),'%6.3f')]; if last<9 strT2 = [strT2, ... ' -- Q2 = D / (max-min) = ' num2str(sdtQ2(num),'%6.3f') , '' ]; end strTIT = {strT1 , strT2}; axe = Axe_CLU(k); set(axe,'Visible','On'); axes(axe) %#ok<*LAXES> sigToPLOT = Signaux_Traites(IdxInCLU{num},:); plot((1:NbPts),sigToPLOT','Color',disp_COL,... 'Visible',vis_SIG,'Tag','Signals'); if NbPts>1 , xlim = [1 NbPts]; else xlim = [0.99 1.01]; end set(axe,'XLim',xlim); title(axe,strTIT); old = get(axe,'NextPlot'); % Ylim = get(axe,'YLim'); set(axe,'NextPlot','add'); plot((1:NbPts),meanVAL(num,:)+nbSTD*loc_STD(num,:),p_lin_LOC_STD{:}); plot((1:NbPts),meanVAL(num,:)-nbSTD*loc_STD(num,:),p_lin_LOC_STD{:}); plot((1:NbPts),meanVAL(num,:)+nbSTD*glb_STD(num),p_lin_GLB_STD{:}); plot((1:NbPts),meanVAL(num,:)-nbSTD*glb_STD(num),p_lin_GLB_STD{:}); plot((1:NbPts),meanVAL(num,:),'LineWidth',LW_Med,'Color',mean_COL,... 'Visible',vis_MEAN,'Tag','lin_MEAN',... 'UserData',{loc_STD(num,:),glb_STD(num)}); plot((1:NbPts),medianVAL(num,:),'LineWidth',LW_Med,... 'Color',median_COL ,'Visible',vis_MED,'Tag','lin_MED'); set(axe,'NextPlot',old); sigToPLOT = [... sigToPLOT ; ... meanVAL(num,:)+2*glb_STD(num); ... meanVAL(num,:)-2*glb_STD(num)]; [yMini,yMaxi] = getMinMax(sigToPLOT,0,0.01); set(axe,'YLim',[yMini,yMaxi]); end if last<NbCLU indices = idx_CLA(nb_GRA_Max:NbCLU) ; idxToPlot = cat(1,IdxInCLU{indices}); eff = length(idxToPlot); strPER = [num2str(100*eff/NbSIG,formatPER) '%']; strTIT = getWavMSG('Wavelet:mdw1dRF:Tit_Remaining_Classes', ... NbCLU-last,eff,strPER); axe = Axe_CLU(nb_GRA_Max); set(axe,'Visible','On'); axes(axe) %#ok<*MAXES> plot((1:NbPts),Signaux_Traites(idxToPlot,:)','Color',disp_COL); set(axe,'XLim',[1 NbPts]); title(axe,strTIT,'Color','r'); end dynvtool('get',fig,0); axe_IND = []; axe_CMD = Axe_CLU; axe_ACT = []; dynvtool('init',fig,axe_IND,axe_CMD,axe_ACT,[1 0],'','','','real'); set(handles.Pan_Show_CLU,'Visible','On') set(fig,'HandleVisibility','Callback') % End waiting. %------------- wwaiting('off',fig); %-------------------------------------------------------------------------- function Pus_SIG_OnOff_Callback(hObject,eventdata,handles) %#ok<*INUSL,*DEFNU> Axe_CLU = handles.Axe_CLU; lin_SIG = findobj(Axe_CLU,'Type','line','Tag','Signals'); vis = get(lin_SIG(1),'Visible'); switch lower(vis) case 'on' vis = 'Off'; strPUS = getWavMSG('Wavelet:mdw1dRF:Signals_ON'); case 'off' vis = 'On'; strPUS = getWavMSG('Wavelet:mdw1dRF:Signals_OFF'); end set(lin_SIG,'Visible',vis); set(hObject,'String',strPUS,'UserData',vis); %-------------------------------------------------------------------------- function Pop_PART_SEL_Callback(hObject,eventdata,handles) val = get(hObject,'Value'); usr = get(hObject,'UserData'); if isequal(val,usr), return; end set(hObject,'UserData',val); TAB_Partitions = wtbxappdata('get',hObject,'TAB_Partitions'); wtbxappdata('set',hObject,'clusters_INFO',TAB_Partitions(val)); showClust_FUNC(handles) %-------------------------------------------------------------------------- function Pus_MEAN_MED_Callback(hObject,eventdata,handles) meanFLAG = get(hObject,'UserData'); meanFLAG = 1-meanFLAG; vis_MEAN = 'Off'; vis_MED = 'Off'; switch meanFLAG case 0 ena = 'Off'; str_PUS = getWavMSG('Wavelet:mdw1dRF:Str_ON'); case 1 ena = 'On'; str_PUS = getWavMSG('Wavelet:mdw1dRF:Str_OFF'); view_MEAN_MED = get(handles.Rad_MEAN,'UserData'); switch view_MEAN_MED case 1 , vis_MEAN = 'On'; case 2 , vis_MED = 'On'; end end set([handles.Rad_MEAN,handles.Rad_MED],'Enable',ena); set(hObject,'UserData',meanFLAG,'String',str_PUS); Axe_CLU = handles.Axe_CLU; LMean = findobj(Axe_CLU,'Type','line','Tag','lin_MEAN'); LMed = findobj(Axe_CLU,'Type','line','Tag','lin_MED'); lin_ON_OFF(LMean,vis_MEAN) lin_ON_OFF(LMed,vis_MED) %-------------------------------------------------------------------------- function Rad_MEAN_MED_Callback(hObject,eventdata,handles) Rad = [handles.Rad_MEAN,handles.Rad_MED]; view_MEAN_MED = find(Rad==hObject); old_VIEW = get(Rad(1),'UserData'); set(Rad,'Value',0,'UserData',view_MEAN_MED); set(hObject,'Value',1); if isequal(view_MEAN_MED,old_VIEW) return; end switch view_MEAN_MED case 1 , vis_MEAN = 'On'; vis_MED = 'Off'; case 2 , vis_MED = 'On'; vis_MEAN = 'Off'; end Axe_CLU = handles.Axe_CLU; LMean = findobj(Axe_CLU,'Type','line','Tag','lin_MEAN'); LMed = findobj(Axe_CLU,'Type','line','Tag','lin_MED'); lin_ON_OFF(LMean,vis_MEAN) lin_ON_OFF(LMed,vis_MED) strGLB = get(handles.Txt_glb_STD,'String'); strLOC = get(handles.Txt_loc_STD,'String'); switch view_MEAN_MED case 1 , addSTR = getWavMSG('Wavelet:mdw1dRF:Str_Mean'); case 2 , addSTR = getWavMSG('Wavelet:mdw1dRF:Str_Med'); end strGLB{1} = [addSTR ' + n * D']; strLOC{1} = [addSTR ' + n * P']; set(handles.Txt_glb_STD,'String',strGLB); set(handles.Txt_loc_STD,'String',strLOC); glb_stdFLAG = get(handles.Pus_glb_STD,'UserData'); if glb_stdFLAG Rad = handles.Rad_glb_STD; valRad = get(Rad,'Value'); Rad = Rad(cat(1,valRad{:})>0); Rad_glb_STD_Callback(Rad,eventdata,handles) end loc_stdFLAG = get(handles.Pus_loc_STD,'UserData'); if loc_stdFLAG Rad = handles.Rad_loc_STD; valRad = get(Rad,'Value'); Rad = Rad(cat(1,valRad{:})>0); Rad_loc_STD_Callback(Rad,eventdata,handles) end %-------------------------------------------------------------------------- function Pus_loc_STD_Callback(hObject,eventdata,handles) loc_stdFLAG = get(hObject,'UserData'); loc_stdFLAG = 1-loc_stdFLAG; switch loc_stdFLAG case 0 , vis = 'Off'; str_PUS = getWavMSG('Wavelet:mdw1dRF:Str_ON'); case 1 , vis = 'On'; str_PUS = getWavMSG('Wavelet:mdw1dRF:Str_OFF'); end set(hObject,'UserData',loc_stdFLAG,'String',str_PUS); Rad = handles.Rad_loc_STD; set(Rad,'Enable',vis); Axe_CLU = handles.Axe_CLU; L = findobj(Axe_CLU,'Type','line','Tag','lin_LOC_STD'); if isempty(L) , return; end lin_ON_OFF(L,vis) %-------------------------------------------------------------------------- function Rad_loc_STD_Callback(hObject,eventdata,handles) S = get(hObject,'String'); S(S>'9') = []; num = str2double(S); Rad = handles.Rad_loc_STD; set(Rad,'Value',0,'UserData',num); set(hObject,'Value',1); val_MEAN_MED = get(handles.Rad_MEAN,'Value'); switch val_MEAN_MED case 0 , TagSTR = 'lin_MED'; case 1 , TagSTR = 'lin_MEAN'; end Axe_CLU = handles.Axe_CLU; LM = findobj(Axe_CLU,'Type','line','Tag',TagSTR); LM_Std = findobj(Axe_CLU,'Type','line','Tag','lin_MEAN'); if isempty(LM) , return; end for k = 1:length(LM) axe = get(LM(k),'Parent'); Ylim = get(axe,'YLim'); LS = findobj(axe,'Type','line','Tag','lin_LOC_STD'); mean_OR_med_VAL = get(LM(k),'YData'); usr = get(LM_Std(k),'UserData'); std_VAL = usr{1}; set(LS(1),'YData',mean_OR_med_VAL - num*std_VAL); set(LS(2),'YData',mean_OR_med_VAL + num*std_VAL); set(axe,'YLim',Ylim); end %-------------------------------------------------------------------------- function Pus_glb_STD_Callback(hObject,eventdata,handles) glb_stdFLAG = get(hObject,'UserData'); glb_stdFLAG = 1-glb_stdFLAG; switch glb_stdFLAG case 0 , vis = 'Off'; str_PUS = getWavMSG('Wavelet:mdw1dRF:Str_ON'); case 1 , vis = 'On'; str_PUS = getWavMSG('Wavelet:mdw1dRF:Str_OFF'); end set(hObject,'UserData',glb_stdFLAG,'String',str_PUS); Rad = handles.Rad_glb_STD; set(Rad,'Enable',vis); Axe_CLU = handles.Axe_CLU; L = findobj(Axe_CLU,'Type','line','Tag','lin_GLB_STD'); if isempty(L) , return; end for k = 1:length(L) axe = get(L(k),'Parent'); YLim = get(axe,'YLim'); set(L(k),'Visible',vis); set(axe,'YLim',YLim); end %-------------------------------------------------------------------------- function Rad_glb_STD_Callback(hObject,eventdata,handles) S = get(hObject,'String'); S(S>'9') = []; num = str2double(S); Rad = handles.Rad_glb_STD; set(Rad,'Value',0,'UserData',num); set(hObject,'Value',1); val_MEAN_MED = get(handles.Rad_MEAN,'Value'); switch val_MEAN_MED case 0 , TagSTR = 'lin_MED'; case 1 , TagSTR = 'lin_MEAN'; end Axe_CLU = handles.Axe_CLU; LM = findobj(Axe_CLU,'Type','line','Tag',TagSTR); LM_Std = findobj(Axe_CLU,'Type','line','Tag','lin_MEAN'); if isempty(LM_Std) , return; end for k = 1:length(LM) axe = get(LM(k),'Parent'); Ylim = get(axe,'YLim'); LS = findobj(axe,'Type','line','Tag','lin_GLB_STD'); mean_OR_med_VAL = get(LM(k),'YData'); usr = get(LM_Std(k),'UserData'); std_VAL = usr{2}; set(LS(1),'YData',mean_OR_med_VAL-num*std_VAL); set(LS(2),'YData',mean_OR_med_VAL+num*std_VAL); set(axe,'YLim',Ylim); end %-------------------------------------------------------------------------- function lin_ON_OFF(L,vis) for k = 1:length(L) axe = get(L(k),'Parent'); YLim = get(axe,'YLim'); set(L(k),'Visible',vis); set(axe,'YLim',YLim); end %-------------------------------------------------------------------------- function Pus_CloseWin_Callback(hObject,eventdata,handles) fig = handles.output; struct_CALL = wtbxappdata('get',fig,'struct_CALL'); if ishandle(struct_CALL.Fig) feval(struct_CALL.File,'Pus_CLU_SHOW_Callback',fig,[],handles); else delete(fig); end %-------------------------------------------------------------------------- function Pop_HIG_Callback(hObject,eventdata,handles) fig = handles.Current_Fig; valPOP = get(hObject,'Value'); strPOP = get(hObject,'String'); strPOP = strPOP{valPOP}; idx = strfind(strPOP,'-'); if ~isempty(idx) , strPOP = strPOP(1:idx-1); end strPOP(abs(strPOP)<48 | abs(strPOP)>57) = []; idxSEL = str2double(strPOP); axeAct = handles.Axe_CLU; old_LINE = findobj(axeAct,'Tag','Line_HIG'); if ~isempty(old_LINE) , delete(old_LINE); end if ~isnan(idxSEL) line_Attrb = {'LineWidth',2,'Tag','Line_HIG'}; usr = get(handles.Pan_Show_CLU,'UserData'); Axe_CLU = usr{1}; axeAct = Axe_CLU; [NbCLU,IdxCLU,NbInCLU] = ... blockdatamngr('get',fig,'clusters_INFO','NbCLU','IdxCLU','NbInCLU'); IdxCLU_SEL = IdxCLU(idxSEL); if NbCLU<13 axeCLA = axeAct(IdxCLU_SEL); else numCLU = (1:NbCLU)'; [~,idxSORT] = sort(NbInCLU,'descend'); numCLU = numCLU(idxSORT); idxAXE = find(numCLU==IdxCLU_SEL); if idxAXE>12 , idxAXE = 12; end axeCLA = axeAct(idxAXE); end sig_FLAG = get(handles.Rad_SEE_CLU_SIG,'Value'); switch sig_FLAG case 0 , sigDisp = wtbxappdata('get',fig,'data_To_Clust'); case 1 data_SEL = mdw1dutils('data_INFO_MNGR','get',fig,'SEL'); sigDisp = data_SEL.sel_DAT; end hig_COL = 'k'; sigDisp = sigDisp(idxSEL,:); lenSIG = length(sigDisp); axes(axeCLA); set(axeCLA,'NextPlot','add'); hL = plot(1:lenSIG,sigDisp,line_Attrb{:},'Color',hig_COL); set(axeCLA,'NextPlot','replacechildren'); mdw1dutils('line_Blink',hL); end %-------------------------------------------------------------------------- function Rad_SEE_SIG_Callback(hObject,eventdata,handles) userdata = get(handles.Rad_SEE_CLU_SIG,'UserData'); if (hObject==handles.Rad_SEE_CLU_SIG) newdata = [1,0]; else newdata = [0,1]; end set(handles.Rad_SEE_CLU_SIG,'Value',newdata(1)) set(handles.Rad_SEE_CLU_DAT,'Value',newdata(2)) if isequal(newdata,userdata) , return; end set(handles.Rad_SEE_CLU_SIG,'UserData',newdata) showClust_FUNC(handles,'Rad_SEE') %-------------------------------------------------------------------------- function [mini,maxi] = getMinMax(val,dim,percent) switch dim case {1,2} mini = min(val,[],dim); maxi = max(val,[],dim); otherwise mini = min(min(val)); maxi = max(max(val)); end delta = maxi-mini; if (delta<eps) , delta = sqrt(eps); end mini = mini-percent*delta; maxi = maxi+percent*delta; %-------------------------------------------------------------------------- function S = formatPanTitle(S) S = [' ' S ' .']; %--------------------------------------------------------------------------