www.gusucode.com > wavelet工具箱matlab源码程序 > wavelet/wmultisig1d/mdw1dtool.m
function varargout = mdw1dtool(varargin) %MDW1DTOOL Discrete wavelet Multisignal 1D Analysis Tool. % VARARGOUT = MDW1DTOOL(VARARGIN) % Last Modified by GUIDE v2.5 12-Feb-2006 18:25:28 % % M. Misiti, Y. Misiti, G. Oppenheim, J.M. Poggi 29-Mar-2005. % Last Revision: 23-Oct-2014. % Copyright 1995-2014 The MathWorks, Inc. % $Revision: 1.1.6.18 $ $Date: 2013/08/23 23:45:51 $ %*************************************************************************% % BEGIN initialization code - DO NOT EDIT % % ---------------------------------------- % %*************************************************************************% gui_Singleton = 0; gui_State = struct('gui_Name', mfilename, ... 'gui_Singleton', gui_Singleton, ... 'gui_OpeningFcn', @mdw1dtool_OpeningFcn, ... 'gui_OutputFcn', @mdw1dtool_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 mdw1dtool is made visible. % %*************************************************************************% function mdw1dtool_OpeningFcn(hObject, eventdata, handles, varargin) % This function has no output args, see OutputFcn. % Choose default command line output for mdw1dtool handles.output = hObject; % Update handles structure guidata(hObject,handles); %%!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!% % TOOL INITIALISATION Introduced manualy in the automatic generated code % %%!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!% Init_Tool(hObject,eventdata,handles,varargin{:}); if ~isempty(varargin) Load_Callback(hObject,eventdata,handles,varargin{:}) end %*************************************************************************% % END Opening Function % %*************************************************************************% %*************************************************************************% % BEGIN Output Function % % --------------------- % % --- Outputs from this function are returned to the command line. % %*************************************************************************% function varargout = mdw1dtool_OutputFcn(hObject,eventdata,handles) %#ok<INUSL> % 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 Callback Functions % % ------------------------ % %=========================================================================% %-------------------------------------------------------------------------- function Pop_DIR_Callback(hObject,eventdata,handles,varargin) %#ok<VANUS,DEFNU> valPOP = get(hObject,'Value'); usrPOP = get(hObject,'UserData'); if isequal(valPOP,usrPOP) , return; end set(hObject,'UserData',valPOP); fig = handles.Current_Fig; data_ORI = blockdatamngr('get',fig,'data_ORI'); if isempty(data_ORI.siz_INI) , return; end % Cleaning and Setting GUI. %-------------------------- CleanTOOL('load',eventdata,handles,'pop_dir',data_ORI); %-------------------------------------------------------------------------- function Pus_ACTION_Callback(hObject,eventdata,handles,tool,varargin) %#ok<DEFNU> flag_RETURN = (nargin>4); if ~flag_RETURN , fig = handles.output; else fig = hObject; end % Begin waiting. %--------------- wwaiting('msg',fig,getWavMSG('Wavelet:commongui:WaitCompute')); Stats_TBX_Flag = wtbxappdata('get',hObject,'Stats_TBX_Flag'); if ~flag_RETURN % Call Tool : De-noising, Compression, Stats, Clustering. %-------------------------------------------------------- Data_Name = get(handles.Edi_Data_NS,'String'); switch tool case 'CLU' if ~Stats_TBX_Flag WarnStr = isstatstbxinstalled('msg'); uiwait(msgbox(WarnStr,... getWavMSG('Wavelet:mdw1dRF:Warn_UsingCLU'),'warn','modal')); set(handles.Pus_CLU_TOOLS,'Enable','Off'); wtbxappdata('set',fig,'Cluster_Tool_Flag',true); wwaiting('off',fig); return end figACT = mdw1dclus(fig,Data_Name); case 'CMP' , figACT = mdw1dcomp(fig,Data_Name); case 'DEN' , figACT = mdw1ddeno(fig,Data_Name); case 'STA' , figACT = mdw1dstat(fig,Data_Name); end pus_IMPORT_ACT = findobj(figACT,'Tag','Pus_IMPORT'); set(pus_IMPORT_ACT,'Enable',get(handles.Pus_IMPORT,'Enable')) ena_Pus_STA = 'Off'; ena_Pus_CLU = 'Off'; ena_DEN_CMP = 'Off'; ena_SAVE = get(handles.Pus_Compress,'Enable'); set(handles.Pus_Compress,'UserData',ena_SAVE); else handles = guidata(fig); switch tool case 'CLU' case 'STA' case {'CMP','DEN'} status_D_or_C = varargin{1}; if status_D_or_C==1 % fig_D_or_C = varargin{2}; hdl_Menus = wtbxappdata('get',fig,'hdl_Menus'); set([hdl_Menus.m_save,hdl_Menus.m_exp_wrks],'Enable','On'); hM = hdl_Menus.m_save_SYN; switch tool case 'CMP' , lab_hM = getWavMSG('Wavelet:mdw1dRF:CompSig'); case 'DEN' , lab_hM = getWavMSG('Wavelet:mdw1dRF:DenoSig'); end set(hM,'Label',lab_hM,'Enable','On'); end end ena_Pus_STA = 'On'; if Stats_TBX_Flag , ena_Pus_CLU = 'On'; else ena_Pus_CLU = 'Off'; end ena_DEN_CMP = get(handles.Pus_Compress,'UserData'); tool_STATE = blockdatamngr('get',fig,'tool_ATTR','State'); switch tool_STATE case 'INI' , aff_MODE = 'INI'; otherwise , aff_MODE = 'ORI'; end mdw1dafflst(aff_MODE,hObject,eventdata,handles,'init',[]) end set(handles.Pus_Stats,'Enable',ena_Pus_STA); set(handles.Pus_CLU_TOOLS,'Enable',ena_Pus_CLU); set([handles.Pus_Compress,handles.Pus_Denoise],'Enable',ena_DEN_CMP); % End waiting. %------------- wwaiting('off',fig); %-------------------------------------------------------------------------- function Pus_CloseWin_Callback(hObject,eventdata,handles) %#ok<INUSL,DEFNU> hdl_Menus = wtbxappdata('get',hObject,'hdl_Menus'); m_save_SYN = hdl_Menus.m_save_SYN; ena_Save = get(m_save_SYN,'Enable'); if isequal(lower(ena_Save),'on') fig = get(hObject,'Parent'); status = wwaitans({fig,getWavMSG('Wavelet:mdw1dRF:Nam_MDW1D')},... getWavMSG('Wavelet:mdw1dRF:Save_MSig_Quest'),2,'Cancel'); switch status case -1 , return; case 1 wwaiting('msg',fig,getWavMSG('Wavelet:commongui:WaitCompute')); mdw1dmngr('Men_save_FUN',hObject,[],handles,'SYN_ORI_DEC'); wwaiting('off',fig); otherwise end end close(gcbf) %-------------------------------------------------------------------------- function Load_Callback(hObject,eventdata,handles,varargin) % Get figure handle. %------------------- fig = handles.output; % Testing and loading file. %-------------------------- makeDEC = false; flagSIG = true; flagLOAD = true; if nargin<4 ,varargin{1} = 'sig'; end switch varargin{1} case 'sig' % LOAD SIGNALS case 'dec' % LOAD DECOMPOSITIONS flagSIG = false; makeDEC = true; case 'demo' % DEMO SIG flagLOAD = false; [pathstr,shortname,ext] = fileparts(varargin{2}); %#ok<ASGLU> if isempty(ext) filename = [shortname,'.mat']; else filename = [shortname,ext]; end fullName = filename; makeDEC = varargin{3}; case 'sig_wrks' % IMPORT SIGNALS [input_VAL,sigNAM,ok] = wtbximport('mdw1d'); if ~ok , return; end flagSIG = ~isstruct(input_VAL); makeDEC = ~flagSIG; flagLOAD = false; case 'dec_wrks' % IMPORT DECOMPOSITIONS [ok,input_VAL,sigNAM] = wtbximport('mdec1d'); if ~ok , return; end flagSIG = false; makeDEC = true; flagLOAD = false; otherwise error('Wavelet:FunctionArgVal:Invalid_ArgVal', ... getWavMSG('Wavelet:FunctionArgVal:Invalid_ArgVal')); end if flagLOAD mask = {... '*.mat;*.ms1', 'ALL 1D Files (*.mat, *.ms1)'; ... '*.*','All Files (*.*)' }; [filename,pathname] = uigetfile(mask, ... getWavMSG('Wavelet:divGUIRF:Pick_a_file')); if ~isequal(filename,0) && ~isequal(pathname,0) fullName = fullfile(pathname,filename); else return end end flagNot_WRKS_Var = ~isequal(varargin{1},'sig_wrks') && ... ~isequal(varargin{1},'dec_wrks'); if flagNot_WRKS_Var try err = 0; dataInfo = whos('-file',fullName); dataInfoCell = struct2cell(dataInfo); if flagSIG % Signals minSizeSIG = min(cat(1,dataInfo(:).size),[],2); dataInfoCell(:,minSizeSIG<2) = []; idx = find(strcmp(dataInfoCell(1,:),'x')); if isempty(idx) idx = find(strcmp(dataInfoCell(1,:),'X')); if isempty(idx) , idx = find(strcmp(dataInfoCell(1,:),'sigDATA')); if isempty(idx) , idx = find(strcmp(dataInfoCell(1,:),'signals')); if isempty(idx) , idx = 1; end end end end else % decompositions idx = find(strcmp(dataInfoCell(1,:),'dec')); if isempty(idx) idx = find(strcmp(dataInfoCell(1,:),'DEC')); if isempty(idx) , idx = find(strcmp(dataInfoCell(1,:),'sigDEC')); if isempty(idx) , idx = 1; end end end end varNam = dataInfoCell{1,idx}; siz_INPUT = dataInfoCell{2,idx}; data = load(fullName,'-mat'); input_VAL = data.(varNam); if ~flagSIG err = ~isstruct(input_VAL); if ~err FN = fieldnames(input_VAL); FNdec = {... 'dirDec';'level';'wname';'dwtFilters';'dwtEXTM'; ... 'dwtShift';'dataSize';'ca';'cd'}; err = ~isequal(FN,FNdec); end; else input_VAL = double(input_VAL); end catch %#ok<CTCH> err = 1; end else siz_INPUT = size(input_VAL); err = 0; end if err wwarndlg(... getWavMSG('Wavelet:mdw1dRF:Warn_Data_MDW1D'),... getWavMSG('Wavelet:mdw1dRF:Warn_Data_Title'),'modal'); return end if flagNot_WRKS_Var [pathstr,sigNAM] = fileparts(filename); %#ok<ASGLU> end % Cleaning and Setting GUI. %-------------------------- wwaiting('msg',fig,getWavMSG('Wavelet:commongui:WaitClean')); if ~flagSIG % Setting Analysis parameters. %----------------------------- wname = input_VAL.wname; level = input_VAL.level; dirDec = input_VAL.dirDec; switch dirDec case 'r' , valPOP_DIR = 2; case 'c' , valPOP_DIR = 1; end cbanapar('set',fig,'wav',wname,'lev',level); set(handles.Pop_DIR,'Value',valPOP_DIR,'UserData',valPOP_DIR); input_VAL = mdwtrec(input_VAL); siz_INPUT = size(input_VAL); end n_s = [sigNAM ' (' , int2str(siz_INPUT(1)) 'x' int2str(siz_INPUT(2)) ')']; % Cleaning and Setting GUI. %-------------------------- CleanTOOL('load',eventdata,handles,'menu',input_VAL); set(handles.Edi_Data_NS,'String',n_s); partsetmngr('Set_Pus_IMPORT',fig,'Off') % Initialize DYNVTOOL. %--------------------- axe_IND = []; axe_CMD = [handles.Axe_VISU]; axe_ACT = []; dynvtool('init',fig,axe_IND,axe_CMD,axe_ACT,[1 0],'','','','real'); % End of loading. %---------------- hdl_Menus = wtbxappdata('get',hObject,'hdl_Menus'); m_load_PART = hdl_Menus.m_load_PART; m_imp_PART = hdl_Menus.m_imp_PART; m_clear_PART = hdl_Menus.m_clear_PART; m_PART = get(m_load_PART,'Parent'); set([m_PART,m_load_PART,m_imp_PART,m_clear_PART],'Enable','On'); set(m_clear_PART,'Enable','Off'); set(handles.Lst_SEL_DATA,'Value',1); % Make decomposition. %-------------------- if makeDEC Pus_Decompose_Callback(handles.Pus_Decompose,eventdata,handles,'load'); else mdw1dmisc('lst_DAT_SEL',handles,'load'); end % End waiting. %------------- wwaiting('off',fig); %-------------------------------------------------------------------------- function Pop_Ext_Mode_Callback(hObject,eventdata,handles) %#ok<INUSD,DEFNU> %-------------------------------------------------------------------------- function Pus_Decompose_Callback(hObject,eventdata,handles,varargin) % if ~isempty(varargin) % mdw1dmisc('lst_DAT_SEL',handles,'load'); %#### % end % Get figure handle. %------------------- fig = handles.output; % Cleaning. %---------- wwaiting('msg',fig,getWavMSG('Wavelet:commongui:WaitClean')); hdl_Menus = wtbxappdata('get',hObject,'hdl_Menus'); UIC_Ena_OFF = [hdl_Menus.m_save,hdl_Menus.m_exp_wrks]; set(UIC_Ena_OFF,'Enable','Off') mdw1dmngr('set_Tool_View',handles,'ORI','Reset','DEC') % Wavelet decomposition of sig_ORI. %---------------------------------- [wname,level] = cbanapar('get',fig,'wav','lev'); popMode = handles.Pop_Ext_Mode; lst = get(popMode,'String'); extMode = lst{get(popMode,'Value')}; sig_ORI = blockdatamngr('get',fig,'data_ORI','signal'); dec_ORI = mdwtdec('row',sig_ORI,level,wname,'mode',extMode); [Energy,tab_ENER,longs,percentENER,idx_PerSORTED] = ... wdecenergy(dec_ORI,'sort'); % Prepare Pan_SEL_INFO. %---------------------- mdw1dmisc('clean',handles,'Pan_SEL_INFO','dec',level); % Show Selection Info: Compute_ENERGY. %------------------------------------- mdw1dutils('data_INFO_MNGR','reset',fig,dec_ORI,Energy,tab_ENER); wtbxappdata('set',fig,'Energy_Info',{longs,percentENER,idx_PerSORTED}); blockdatamngr('set',fig,'tool_ATTR','State','ORI_ON'); mdw1dmngr('set_Tool_View',handles,'ORI','set_VIEW','LARGE') mdw1dmngr('set_idxSIG_Plot',fig,handles,[]); mdw1dafflst('ORI',hObject,eventdata,handles,'init',[]); % Reset Decomposition Parameters and Axes. %----------------------------------------- set(handles.Pop_Show_Mode,'Value',1,'UserData',[]); strPOP = cell(level,1); levSTR = getWavMSG('Wavelet:commongui:Str_Level'); for k = 1:level strPOP{k} = [levSTR ' ' int2str(k)]; end set(handles.Pan_VISU_DEC,'Title', ... formatPanTitle(getWavMSG('Wavelet:mdw1dRF:View_Decompositions'))); set(handles.Chk_DEC_GRID,'Visible','Off'); set(handles.Pop_DEC_lev,'Visible','On') set(handles.Axe_VIS_DEC,'XGrid','Off','YGrid','Off') set(handles.Pop_DEC_lev,'String',strPOP,'Value',level); mdw1dshow('set_Axe_DEC_Pos','sep',fig,handles,level); mdw1dafflst('DAT','ORI',level,handles.Lst_SIG_DATA,handles.Lst_CFS_DATA); % Reset Plot. %------------ % mdw1dmisc('plot',handles,[],'clean'); %#### axe_IND = []; axe_CMD = [handles.Axe_VISU]; axe_ACT = []; dynvtool('init',fig,axe_IND,axe_CMD,axe_ACT,[1 0],'','','','real'); set(handles.Lst_SEL_DATA,'Value',1); mdw1dmisc('lst_DAT_SEL',handles,'load'); %#### UIC_Ena_ON = [... handles.Pus_Decompose,... hdl_Menus.m_save,hdl_Menus.m_exp_wrks,hdl_Menus.m_save_DEC, ... handles.Txt_LST_CFS,handles.Lst_CFS_DATA, ... handles.Pus_Stats,handles.Pus_Denoise,handles.Pus_Compress ... ]; set(UIC_Ena_ON,'Enable','On') set_Pus_CLU_TOOLS(handles) % End waiting. %------------- wwaiting('off',fig); %=========================================================================% % END Callback Functions % %=========================================================================% %=========================================================================% % BEGIN Callback Menus % %=========================================================================% function demo_FUN(hObject,eventdata,handles,numDEM) demo_CELL_data = {... 's3p3_30' , 'db1' , 5 , 'row'; 'ex_c5_100' , 'db1' , 5 , 'row'; 'ex_c6_50' , 'db1' , 5 , 'row'; 'exvlachos' , 'sym4' , 6 , 'row'; 'ex1mwden' , 'db1' , 4 , 'col'; 'ex2mwden' , 'db1' , 4 , 'col'; 'ex3mwden' , 'db1' , 4 , 'col'; 'ex4mwden' , 'db1' , 4 , 'col'; 'ex5mwden' , 'db1' , 4 , 'col'; 'ex1mdr' 'sym4' , 5 , 'col'; 'ex2mdr' , 'sym4' , 5 , 'col'; 'ex3mdr' , 'sym4' , 5 , 'col'; 'ex4mdr' , 'sym4' , 5 , 'col'; 'exrealdata' ,'sym4' , 6 , 'col'; 'elecsig10' , 'db1' , 5 , 'row'; 'elecsig100', 'db1' , 5 , 'row'; 'noiswom' , 'sym4' , 4 , 'row'; 'noiswom' , 'sym4' , 4 , 'col'; 'jellyfish' ,'db1' , 5 , 'row'; 'jellyfish' ,'db1' , 5 , 'col'; 'thinker' ,'db2' , 4 , 'row' ... }; fname = demo_CELL_data{numDEM,1}; wname = demo_CELL_data{numDEM,2}; level = demo_CELL_data{numDEM,3}; direct = demo_CELL_data{numDEM,4}; % Get figure handle. %------------------- fig = handles.Current_Fig; % Cleaning. %---------- wwaiting('msg',fig,getWavMSG('Wavelet:commongui:WaitClean')); % Loading Signals and Setting GUI. %-------------------------------- Pop_DIR = handles.Pop_DIR; switch direct case 'row' , valPOP = 2; case 'col' , valPOP = 1; end % valPOP = get(Pop_DIR,'Value'); % LstSTR = get(Pop_DIR,'String'); % dir_DEC = LstSTR{valPOP}(1:3); % if ~isequal(dir_DEC,direct) % valPOP = 3-valPOP; set(Pop_DIR,'Value',valPOP,'UserData',valPOP); % end cbanapar('set',fig,'wav',wname,'lev',level); makeDEC = numDEM>0; Load_Callback(hObject,eventdata,handles,'demo',fname,makeDEC); %-------------------------------------------------------------------------% function Export_Callback(hObject,eventdata,handles,type) %#ok<INUSL,DEFNU> fig = handles.output; data_DorC = mdw1dutils('data_INFO_MNGR','get',fig,'DorC'); typ_DorC = upper(data_DorC.typ_DorC); if isempty(typ_DorC) ST = mdw1dutils('data_INFO_MNGR','get',fig,'ORI'); else ST = data_DorC; end % if isempty(typ_DorC) || isequal(type,'SYN_ORI_DEC') % ST = mdw1dutils('data_INFO_MNGR','get',fig,'ORI'); % else % ST = data_DorC; % end switch type case 'sig' X = ST.signal; wtbxexport(X,'name','msig_1D', ... 'title',getWavMSG('Wavelet:mdw1dRF:SyntSig')); case 'dec' dec = ST.dwtDEC; wtbxexport(dec,'name','mdec_1D', ... 'title',getWavMSG('Wavelet:mdw1dRF:MultiSig_Dec')); end %-------------------------------------------------------------------------% %=========================================================================% % END Callback Menus % %=========================================================================% %=========================================================================% % BEGIN CleanTOOL function % %=========================================================================% function CleanTOOL(option,eventdata,handles,varargin) fig = handles.Current_Fig; switch option case 'load' % Begin Cleaning. %---------------- [First_Use,State] = blockdatamngr('get',fig,... 'tool_ATTR','First_Use','State'); if First_Use OBJ_Ena_ON = [... handles.Txt_SEL_DATA,handles.Lst_SEL_DATA,... handles.Txt_SORT,handles.Pus_SORT_Dir,... handles.Pus_SORT_Inv,handles.Pop_SORT,... handles.Pus_AFF_ALL,handles.Pus_AFF_NON,handles.Chk_AFF_MUL,... handles.Pus_Stats, ... handles.Txt_Min,handles.Txt_Mean,handles.Txt_Max, ... handles.Pop_VisPanMode ... ]; set(OBJ_Ena_ON,'Enable','On') set_Pus_CLU_TOOLS(handles) blockdatamngr('set',fig,'tool_ATTR','First_Use',false); hdl_InPan = allchild(handles.Pan_DAT_WAV); set(hdl_InPan,'Enable','On') set(handles.Edi_Data_NS,'Enable','Inactive') else if ~isequal(State,'INI') % None lst_SIG = get(handles.Lst_SIG_DATA,'UserData'); set(handles.Lst_SIG_DATA,'String',lst_SIG,'Value',1); end str_PopSort = {... getWavMSG('Wavelet:mdw1dRF:Idx_Sel'), ... getWavMSG('Wavelet:mdw1dRF:Idx_Sig'), ... getWavMSG('Wavelet:mdw1dRF:Dwt_Attr'), ... getWavMSG('Wavelet:mdw1dRF:Level_L'), ... getWavMSG('Wavelet:mdw1dRF:Type_Sig') ... }; set(handles.Pop_SORT,'String',str_PopSort,'Value',1); end blockdatamngr('set',fig,'tool_ATTR','State','INI'); wtbxappdata('set',fig,'SET_of_Partitions',[]); mdw1dmngr('set_Tool_View',handles,'ORI','set_VIEW','LARGE') % Clean Pan_SEL_INFO. %-------------------- mdw1dmisc('clean',handles,'Pan_SEL_INFO','load') titleSTR = formatPanTitle(getWavMSG('Wavelet:mdw1dRF:Info_SelData')); set(handles.Pan_SEL_INFO,'Title',titleSTR); mdw1dmngr('set_Tool_View',handles,'ORI','Reset','LOAD') mdw1dmisc('plot',handles,[],'clean'); hdl_Menus = wtbxappdata('get',fig,'hdl_Menus'); UIC_Ena_OFF = [... hdl_Menus.m_save,hdl_Menus.m_exp_wrks , ... hdl_Menus.m_save_SYN,hdl_Menus.m_save_DEC,... handles.Pus_Decompose, ... handles.Txt_LST_CFS,handles.Lst_CFS_DATA, ... handles.Pus_Denoise,handles.Pus_Compress ... ]; set(hdl_Menus.m_save_SYN, ... 'Label',getWavMSG('Wavelet:mdw1dRF:SyntSig')); set(UIC_Ena_OFF,'Enable','Off') set(handles.Lst_CFS_DATA,'String','','Value',[]) mdw1dmngr('set_idxSIG_Plot',fig,handles,[]); % Setting Data Structures. %------------------------- Pop_DIR = handles.Pop_DIR; valPOP = get(Pop_DIR,'Value'); switch valPOP case 1 , dir_DEC = 'col'; case 2 , dir_DEC = 'row'; end set(Pop_DIR,'UserData',valPOP); switch varargin{1} case 'menu' sig_ORI = varargin{2}; siz_INI = size(sig_ORI); flag_TRANS = isequal(dir_DEC,'col'); case 'pop_dir' siz_INI = varargin{2}.siz_INI; sig_ORI = varargin{2}.signal; flag_TRANS = true; end lenSIG = mdw1dutils('data_INFO_MNGR','init',... fig,siz_INI,sig_ORI,dir_DEC,flag_TRANS); % Setting GUI values and Analysis parameters. %-------------------------------------------- max_lev_anal = 12; levm = wmaxlev(lenSIG,'haar'); levmax = min(levm,max_lev_anal); [curlev,curlevMAX] = cbanapar('get',fig,'lev','levmax'); if levmax~=curlevMAX str_LEV = int2str((1:levmax)'); val_LEV = min(levmax,curlev); cbanapar('set',fig,'lev',{'String',str_LEV,'Value',val_LEV}); end % Setting List of selected data. %------------------------------- mdw1dafflst('INI',fig,eventdata,handles,'init','INI') % End Cleaning. %-------------- mdw1dutils('set_Lst_DATA',handles,'init') UIC_Ena_ON = [... handles.Fra_SEL_DATA, ... handles.Txt_LST_SIG,handles.Lst_SIG_DATA,handles.Txt_SELECTED, ... handles.Pus_Decompose ... ]; set(UIC_Ena_ON,'Enable','On') UIC_Ena_INA = ... [handles.Txt_SORT,... handles.Edi_TIT_PAN_INFO, handles.Edi_NB_SIG, ... handles.Edi_Min,handles.Edi_Mean,handles.Edi_Max]; % handles.Edi_TIT_SEL,handles.Edi_TIT_VISU, set(UIC_Ena_INA,'Enable','Inactive') end %=========================================================================% % END CleanTOOL function % %=========================================================================% %=========================================================================% % BEGIN Tool Initialization % %=========================================================================% function Init_Tool(fig,eventdata,handles,varargin) %#ok<VANUS,INUSL> % Begin initialization. %---------------------- tool_Name = 'ORI'; set(fig,'Visible','off'); % WTBX -- Install DynVTool %------------------------- dynvtool('Install_V3',fig,handles); % WTBX -- Initialize GUIDE Figure. %--------------------------------- wfigmngr('beg_GUIDE_FIG',fig); % WTBX -- Install ANAPAR FRAME %----------------------------- wnameDEF = 'db1'; maxlevDEF = 12; levDEF = 5; utanapar('Install_V3_CB',fig,'maxlev',maxlevDEF,'deflev',levDEF); cbanapar('set',fig,'wav',wnameDEF,'lev',levDEF); % UIMENU INSTALLATION %-------------------- hdl_Menus = Install_MENUS(fig,tool_Name); wtbxappdata('set',fig,'hdl_Menus',hdl_Menus); % Help and ContextMenus INSTALLATION %------------------------------------ Install_HELP_and_CtxtMenu(fig,handles); % Data Initialization. %--------------------- mdw1dutils('data_INFO_MNGR','create',fig,tool_Name,fig); % WTBX -- Terminate GUIDE Figure. %-------------------------------- wfigmngr('end_GUIDE_FIG',fig,mfilename); % Other Initializations. %----------------------- mdw1dmngr('init_TOOL',handles,'',tool_Name); set(allchild(handles.Pan_DAT_WAV),'Enable','Off') lst_Colors = mdw1dutils('lst_Colors'); edi_TIT_HDL = [... handles.Edi_TIT_PAN_INFO ]; % handles.Edi_TIT_SEL,handles.Edi_TIT_VISU,handles.Edi_TIT_VISU_DEC, set(edi_TIT_HDL,'Enable','Off','ForegroundColor',lst_Colors.sig) Init_Pan_SEL_INFO(handles) % Test Statistics and Machine Learning Toolbox intallation. %------------------------------------- % [Stats_TBX_Flag,WarnStr,errID] = isstatstbxinstalled; % errID_for_TEST = 1; % No license % errID_for_TEST = 2; % Not in path % errID = errID_for_TEST; % switch errID % case 0 % case {1,2} % uiwait(msgbox(WarnStr,'Using clustering tools','warn','modal')); % set(handles.Pus_CLU_TOOLS,'TooltipString','Not available') % end Stats_TBX_Flag = isstatstbxinstalled; % Stats_TBX_Flag = false; % Uncomment this line to make tests. wtbxappdata('set',fig,'Stats_TBX_Flag',Stats_TBX_Flag); wtbxappdata('set',fig,'Cluster_Tool_Flag',false); %=========================================================================% % END Tool Initialization % %=========================================================================% %=========================================================================% % BEGIN Internal Functions % %=========================================================================% function hdl_Menus = Install_MENUS(fig,tool_Name) 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); m_load = uimenu(m_files, ... 'Label',getWavMSG('Wavelet:commongui:Str_Load'), ... 'Tag','Men_Load','Position',1,'Enable','On'); m_save = uimenu(m_files,'Label', ... getWavMSG('Wavelet:commongui:Str_Save'),'Position',2,'Enable','Off'); m_demo = uimenu(m_files, ... 'Label',getWavMSG('Wavelet:commongui:Str_Example'), ... 'Tag','Examples','Position',3,'Separator','Off'); m_imp_wrks = uimenu(m_files, ... 'Label',getWavMSG('Wavelet:commongui:Lab_Import'), ... 'Position',4,'Enable','On','Separator','On' ... ); m_exp_wrks = uimenu(m_files, ... 'Label',getWavMSG('Wavelet:commongui:Lab_Export'),'Position',5, ... 'Enable','Off','Separator','Off'... ); m_PART = uimenu(m_files,'Label',getWavMSG('Wavelet:mdw1dRF:Str_Partitions'),... 'Position',6,'Enable','Off','Separator','On'); m_Load_Sig = uimenu(m_load, ... 'Label',getWavMSG('Wavelet:mdw1dRF:Str_Signals'), ... 'Position',1,'Enable','On', ... 'Tag','Load_Sig', ... 'Callback', ... [mfilename '(''Load_Callback'',gcbo,[],guidata(gcbo));'] ... ); uimenu(m_load, ... 'Label',getWavMSG('Wavelet:mdw1dRF:Str_Decompositions'), ... 'Position',2,'Enable','On', ... 'Tag','Load_Dec', ... 'Callback', ... [mfilename '(''Load_Callback'',gcbo,[],guidata(gcbo),''dec'');'] ... ); cb_save = ... 'mdw1dmngr(''Men_save_FUN'',gcbo,[],guidata(gcbo),''SYN_ORI_SIG'');'; m_save_SYN = uimenu(m_save,... 'Label',getWavMSG('Wavelet:mdw1dRF:SyntSig'),... 'Position',1,'Enable','Off','Callback',cb_save); cb_save = ... 'mdw1dmngr(''Men_save_FUN'',gcbo,[],guidata(gcbo),''SYN_ORI_DEC'');'; m_save_DEC = uimenu(m_save,... 'Label',getWavMSG('Wavelet:mdw1dRF:Str_Decompositions'),... 'Position',2,'Enable','On','Callback',cb_save); tab = char(9); demoSET = {... ['Ex1 : ' tab ' 3 shapes - 3 Periods' tab]; ... ['Ex2 : ' tab ' 5 clusters of 100 signals' tab]; ... ['Ex3 : ' tab ' 6 clusters of 50 signals' tab]; ... ['Ex4 : ' tab ' 10 clusters of 10 synthesized signal' tab]; ... ['Ex5 : ' tab ' 4 noisy signals (1)' tab]; ... ['Ex6 : ' tab ' 4 noisy signals (2)' tab]; ... ['Ex7 : ' tab ' 4 noisy signals (3)' tab]; ... ['Ex8 : ' tab ' 4 noisy signals (4)' tab]; ... ['Ex9 : ' tab ' 8 noisy signals' tab]; ... ['Ex10 : ' tab ' Real noisy signals (1)' tab]; ... ['Ex11 : ' tab ' Real noisy signals (2)' tab]; ... ['Ex12 : ' tab ' Real noisy signals (3)' tab]; ... ['Ex13 : ' tab ' Real noisy signals (4)' tab]; ... ['Ex14 : ' tab ' Real noisy signals (all)' tab]; ... ['Ex15 : ' tab ' 7 clusters of 10 electrical signals' tab];... ['Ex16 : ' tab ' 7 clusters of 100 electrical signals' tab];... ['Ex17 : ' tab ' Noisy Woman (rows)' tab]; ... ['Ex18 : ' tab ' Noisy Woman (col.)' tab]; ... ['Ex19 : ' tab ' Jelly Fish (rows)' tab]; ... ['Ex20 : ' tab ' Jelly Fish (col.)' tab]; ... ['Ex21 : ' tab ' Thinker (rows)' tab] ... }; nbDEM = size(demoSET,1); sepSET = [5,10,15,17,19,21]; for k = 1:nbDEM strNUM = int2str(k); action = [mfilename '(''demo_FUN'',gcbo,[],guidata(gcbo),' strNUM ');']; if find(k==sepSET) , Sep = 'On'; else Sep = 'Off'; end uimenu(m_demo,'Label',[demoSET{k,1}],'Separator',Sep,'Callback',action); end cb_load_PART = ['partsetmngr(''load_PART'',''' , tool_Name ''',gcbf);']; m_load_PART = uimenu(m_PART,'Label', ... getWavMSG('Wavelet:mdw1dRF:Load_FromDisk') ,... 'Position',1,'Enable','On','Callback',cb_load_PART); cb_load_PART = ['partsetmngr(''load_PART'',''' , tool_Name ''',gcbf,''wrks'');']; m_imp_PART = uimenu(m_PART,'Label', ... getWavMSG('Wavelet:commongui:Lab_Import'),... 'Position',2,'Enable','On','Callback',cb_load_PART); cb_clear_PART = ['partsetmngr(''clear_PART'',''' , tool_Name ''',gcbf);']; m_clear_PART = uimenu(m_PART, ... 'Label',getWavMSG('Wavelet:mdw1dRF:Clear_Partition') ,... 'Position',3,'Enable','Off','Separator','On','Callback',cb_clear_PART); uimenu(m_imp_wrks,... 'Label',getWavMSG('Wavelet:mdw1dRF:Import_Signals'),... 'Tag','Import_Sig', ... 'Callback', ... [mfilename '(''Load_Callback'',gcbo,[],guidata(gcbo),''sig_wrks'');'] ... ); uimenu(m_imp_wrks,... 'Label',getWavMSG('Wavelet:mdw1dRF:Import_Decompositions'), ... 'Tag','Import_Dec', ... 'Callback', ... [mfilename '(''Load_Callback'',gcbo,[],guidata(gcbo),''dec_wrks'');'] ... ); uimenu(m_exp_wrks,... 'Label',getWavMSG('Wavelet:mdw1dRF:Export_Signals'), ... 'Tag','Export_Sig', ... 'Callback', ... [mfilename '(''Export_Callback'',gcbo,[],guidata(gcbo),''sig'');'] ... ); uimenu(m_exp_wrks,... 'Label',getWavMSG('Wavelet:mdw1dRF:Export_Decompositions'), ... 'Tag','Export_Dec', ... 'Callback', ... [mfilename '(''Export_Callback'',gcbo,[],guidata(gcbo),''dec'');'] ... ); hdl_Menus = struct(... 'm_files',m_files,'m_close',m_close,'m_Load_Sig',m_Load_Sig,... 'm_save',m_save,'m_save_SYN',m_save_SYN,'m_save_DEC',m_save_DEC, ... 'm_demo',m_demo,'m_exp_wrks',m_exp_wrks,'m_PART',m_PART,... 'm_load_PART',m_load_PART,'m_imp_PART',m_imp_PART, ... 'm_clear_PART',m_clear_PART); %-------------------------------------------------------------------------- %=========================================================================% % END Tool Initialization % %=========================================================================% %=========================================================================% function Install_HELP_and_CtxtMenu(fig,handles) % Add Help for Tool. %------------------ wfighelp('addHelpTool',fig, ... getWavMSG('Wavelet:mdw1dRF:HLP_MutiSig1D'),'MULT_ANA_1D'); % Add Help Item. %---------------- % wfighelp('addHelpItem',fig,... % '&Multisignal 1D - Wavelet Decomposition (1)',''); % Add ContextMenus %----------------- hdl_WAV = [handles.Txt_Wav,handles.Pop_Wav_Fam,handles.Pop_Wav_Num]; wfighelp('add_ContextMenu',fig,hdl_WAV,'UT_WAVELET'); hdl_EXT = [handles.Txt_Ext_Mode,handles.Pop_Ext_Mode]; wfighelp('add_ContextMenu',fig,hdl_EXT,'EXT_MODE'); %=========================================================================% %=========================================================================% % Begin Internal Functions % %=========================================================================% function Init_Pan_SEL_INFO(handles) % Prepare Pan_SEL_INFO. %---------------------- hdl_L2A = [... handles.Txt_Energy;handles.Edi_Energy; ... handles.Txt_PER_A;handles.Edi_PER_A]; pos_L2A = get(hdl_L2A,'Position'); pos_L2A = cat(1,pos_L2A{:}); Edi_D = findobj(handles.Edi_PER_D); usr_Edi_D = get(Edi_D,'UserData'); [usr_Edi_D,idx] = sort(cat(1,usr_Edi_D{:})); %#ok<ASGLU> Edi_D = Edi_D(idx); pos_Edi = get(Edi_D,'Position'); pos_Edi = cat(1,pos_Edi{:}); Txt_D = findobj(handles.Txt_PER_D); usr_Txt_D = get(Txt_D,'UserData'); [usr_Txt_D,idx] = sort(cat(1,usr_Txt_D{:})); %#ok<ASGLU> Txt_D = Txt_D(idx); pos_Txt = get(Txt_D,'Position'); pos_Txt = cat(1,pos_Txt{:}); % Initialize Positions. %---------------------- pos_L2A_Store = repmat(pos_L2A,[1,1,4]); pos_Edi_Store = repmat(pos_Edi,[1,1,4]); pos_Txt_Store = repmat(pos_Txt,[1,1,4]); % Positions: 1<=level<=3. %------------------------ dy = 0.1; pos_L2A_Store(:,2,1) = pos_L2A_Store(:,2,1)-dy; pos_Edi_Store(1:3,2,1) = pos_Edi_Store(1:3,2,1)-2*dy; pos_Txt_Store(1:3,2,1) = pos_Txt_Store(1:3,2,1)-2*dy; % Positions: 4<=level<=6. %------------------------ dy = 0.09; pos_L2A_Store(:,2,2) = pos_L2A_Store(:,2,2)-dy; pos_Edi_Store(1:3,2,2) = pos_Edi_Store(1:3,2,2)-2*dy; pos_Txt_Store(1:3,2,2) = pos_Txt_Store(1:3,2,2)-2*dy; pos_Edi_Store(4:6,2,2) = pos_Edi_Store(4:6,2,2)-3*dy; pos_Txt_Store(4:6,2,2) = pos_Txt_Store(4:6,2,2)-3*dy; % Positions: 7<=level<=9. %------------------------- dy = 0.06; pos_Edi_Store(1:3,2,3) = pos_Edi_Store(1:3,2,3)-dy; pos_Txt_Store(1:3,2,3) = pos_Txt_Store(1:3,2,3)-dy; pos_Edi_Store(4:6,2,3) = pos_Edi_Store(4:6,2,3)-2*dy; pos_Txt_Store(4:6,2,3) = pos_Txt_Store(4:6,2,3)-2*dy; pos_Edi_Store(7:9,2,3) = pos_Edi_Store(7:9,2,3)-3*dy; pos_Txt_Store(7:9,2,3) = pos_Txt_Store(7:9,2,3)-3*dy; % Store handles and Positions. %----------------------------- usr = {Edi_D,pos_Edi_Store,Txt_D,pos_Txt_Store,hdl_L2A,pos_L2A_Store}; set(handles.Pan_ENERGY,'UserData',usr); % Reset FontWeight. %------------------ set([handles.Txt_PER_A,handles.Txt_PER_D],'FontWeight','bold'); %=========================================================================% % END Internal Functions % %=========================================================================% %=========================================================================% % Begin External-Internal Functions % %=========================================================================% function show_Sig_Info(hObject,eventdata,handles,currNum,currSig,nbSIG) %#ok<INUSL> fig = handles.Current_Fig; [formatNum,formatPER,formatNum_Ener] = ... mdw1dutils('numFORMAT',max(abs(currSig))); [Energy,tab_ENER] = blockdatamngr('get',... fig,'data_ORI','Energy','tab_ENER'); decomposeFLAG = ~isempty(Energy); if nbSIG>1 [data_ORI,~,data_DorC] = ... mdw1dutils('data_INFO_MNGR','get',fig,'ORI','SEL','DorC'); %#ok<NASGU> [numSIG,dwtType,sigType] = mdw1dutils('get_Sig_IDENT',fig); %#ok<ASGLU> idx_ORI = unique(numSIG(sigType=='o')); idx_DorC = unique(numSIG(sigType=='d' | sigType=='c')); if decomposeFLAG set(handles.Chk_A_Ener,'Visible','On',... 'UserData',{currNum,currSig,nbSIG}) valAPP = get(handles.Chk_A_Ener,'Value'); % Energy = Energy(idx_ORI); boxTAB = tab_ENER(idx_ORI,:); level = size(boxTAB,2)-1; if valAPP==0 , boxTAB(:,1) = []; end if ~isempty(idx_DorC) [L2_More,tab_More] = blockdatamngr('get',... fig,'data_DorC','Energy','tab_ENER'); if valAPP==0 , tab_More(:,1) = []; end if ~isempty(L2_More) % Energy = [Energy ; L2_More(idx_DorC)]; boxTAB = [boxTAB ; tab_More(idx_DorC,:)]; end end nbSig_2 = size(boxTAB,1); boxTAB = fliplr(boxTAB); if nbSig_2<2 , boxTAB = repmat(boxTAB,2,1); end if valAPP==1 labels = {['A' int2str(level)]}; else labels = {}; end for k = level:-1:1 , labels = [['D' int2str(k)] , labels]; end %#ok<AGROW> xlabSTR = getWavMSG('Wavelet:mdw1dRF:Per_Of_Ener'); ylabSTR = ''; titleSTR = getWavMSG('Wavelet:mdw1dRF:Wavedec_Energy'); else set(handles.Chk_A_Ener,'Visible','Off') currSig = data_ORI.signal(idx_ORI,:); boxTAB = [min(currSig,[],2),mean(currSig,2),max(currSig,[],2)]; labels ={... getWavMSG('Wavelet:mdw1dRF:Str_Minimum'), ... getWavMSG('Wavelet:mdw1dRF:Str_Mean'), ... getWavMSG('Wavelet:mdw1dRF:Str_Max')}; xlabSTR = ''; ylabSTR = ''; titleSTR = getWavMSG('Wavelet:mdw1dRF:Info_Sel_Data'); end mdw1dmisc('clean',handles,'Pan_SEL_INFO','many_sig') axe_Cur = handles.Axe_INFO_VAL; delete(allchild(axe_Cur)); axes(axe_Cur) hBox = wboxplot(boxTAB,'labels',labels,'widths',0.65); set(axe_Cur,'XGrid','On','YGrid','Off') if decomposeFLAG toolCOL = mdw1dutils('colors'); if valAPP==1 set(hBox(5,1:end-1),'Color',0.8*toolCOL.det) set(hBox(5,end),'Color',toolCOL.app) else set(hBox(5,:),'Color',0.8*toolCOL.det) end else colBOX = [0.7 0.7 0.2]; set(hBox(5,:),'Color',colBOX) end xlabel(xlabSTR,'HorizontalAlignment','Right','Parent',axe_Cur) ylabel(ylabSTR,'Parent',axe_Cur); set(handles.Edi_TIT_PAN_INFO,'String',titleSTR); else set(handles.Chk_A_Ener,'Visible','Off') mean_VAL = mean(currSig); max_VAL = max(currSig); min_VAL = min(currSig); [numSIG,dwtType,sigType,levVAL] = mdw1dutils('get_Sig_IDENT',fig,currNum); mdw1dmisc('clean',handles,'Pan_SEL_INFO','one_sig') if isequal(numSIG,currNum) titleSTR = getWavMSG('Wavelet:mdw1dRF:Info_On_Selection',currNum); else titleSTR = ... getWavMSG('Wavelet:mdw1dRF:Selection_Signal',currNum,numSIG); end set(handles.Edi_Min,'String',num2str(min_VAL,formatNum)) set(handles.Edi_Mean,'String',num2str(mean_VAL,formatNum)) set(handles.Edi_Max,'String',num2str(max_VAL,formatNum)) set(handles.Edi_TIT_PAN_INFO,'String',titleSTR); switch sigType case 'o' if isempty(Energy) , return; end Energy = Energy(numSIG); tab_ENER = tab_ENER(numSIG,:); pan_Title = getWavMSG('Wavelet:mdw1dRF:Ener_EnerRatS',numSIG); case {'d','c'} [Energy,tab_ENER] = blockdatamngr('get',... fig,'data_DorC','Energy','tab_ENER'); Energy = Energy(numSIG); tab_ENER = tab_ENER(numSIG,:); pan_Title = getWavMSG('Wavelet:mdw1dRF:Ener_EnerRatDS',numSIG); case 'r' dec_ORI = blockdatamngr('get',fig,'data_ORI','dwtDEC'); dec_DorC = blockdatamngr('get',fig,'data_DorC','dwtDEC'); dec_ORI.ca = dec_ORI.ca - dec_DorC.ca; for k =1:length(dec_ORI.level) dec_ORI.cd{k} = dec_ORI.cd{k}-dec_DorC.cd{k}; end [Energy,tab_ENER] = wdecenergy(dec_ORI,'cfs',numSIG); pan_Title = getWavMSG('Wavelet:mdw1dRF:Ener_EnerRatRS',numSIG); end set(handles.Pan_ENERGY,'Title',formatPanTitle(pan_Title)); hdl_A = handles.Edi_PER_A; hdl_PER_D = handles.Edi_PER_D; nb_DET = size(tab_ENER,2)-1; hdl_D = zeros(1,nb_DET); for k = 1:nb_DET , hdl_D(k) = findobj(hdl_PER_D,'UserData',k); end set(handles.Edi_Energy,'String',num2str(Energy,formatNum_Ener)) set(hdl_A,'String',num2str(tab_ENER(1),formatPER)) for k = 1:nb_DET %------------------------------------------------------------- % Direct Text Dj order (Uncomment if YES). % set(hdl_D(k),'String',num2str(tab_ENER(end-k+1),formatPER)); %------------------------------------------------------------- % Reverse Text Dj order (Comment if NOT). set(hdl_D(k),'String',num2str(tab_ENER(k+1),formatPER)); end set([hdl_A,hdl_D],'ForegroundColor','k'); if isequal(lower(dwtType),'d') txt = findobj(handles.Txt_PER_D); detCOL = get(txt(1),'ForegroundColor'); %------------------------------------------------------------- % Direct Text Dj order (Uncomment if YES). % set(hdl_D(levVAL),'ForegroundColor',detCOL); %------------------------------------------------------------- % Reverse Text Dj order (Comment if NOT). set(hdl_D(end-levVAL+1),'ForegroundColor',detCOL); elseif isequal(lower(dwtType),'a') && levVAL==nb_DET appCOL = mdw1dutils('colors','app'); set(hdl_A,'ForegroundColor',appCOL); end end %-------------------------------------------------------------------------- function Chk_A_Ener_Callback(hObject,eventdata,handles) %#ok<INUSL,DEFNU> usr = get(hObject,'UserData'); % usr = {currNum,currSig,nbSIG}; show_Sig_Info(hObject,[],handles,usr{:}) %-------------------------------------------------------------------------- function set_Pus_CLU_TOOLS(handles) fig = handles.output; Cluster_Tool_Flag = wtbxappdata('get',fig,'Cluster_Tool_Flag'); if Cluster_Tool_Flag , enaCLU = 'Off'; else enaCLU = 'On'; end set(handles.Pus_CLU_TOOLS,'Enable',enaCLU); %-------------------------------------------------------------------------- function S = formatPanTitle(S) S = [' ' S ' .']; %-------------------------------------------------------------------------- %=========================================================================% % END External-Internal Functions % %=========================================================================% %=========================================================================% % BEGIN Demo Utilities % % --------------------- % %=========================================================================% function closeDEMO(hFig,eventdata,handles,varargin) %#ok<VANUS,INUSD,DEFNU> close(hFig); %---------------------------------------------------------- function demoPROC(hFig,eventdata,handles,varargin) %#ok<INUSL,DEFNU> handles = guidata(hFig); numDEM = varargin{1}; demo_FUN(hFig,eventdata,handles,numDEM); %=========================================================================% % END Tool Demo Utilities % %=========================================================================%