www.gusucode.com > wavelet工具箱matlab源码程序 > wavelet/wavelet/dw1dmngr.m
function out1 = dw1dmngr(option,win_dw1dtool,in3,in4,in5) %DW1DMNGR Discrete wavelet 1-D general manager. % OUT1 = DW1DMNGR(OPTION,WIN_DW1DTOOL,IN3,IN4,IN5) % M. Misiti, Y. Misiti, G. Oppenheim, J.M. Poggi 12-Mar-96. % Last Revision: 04-Jul-2013. % Copyright 1995-2013 The MathWorks, Inc. % $Revision: 1.18.4.15 $ % Default values. %---------------- max_lev_anal = 12; % MemBloc0 of stored values. %--------------------------- n_InfoInit = 'DW1D_InfoInit'; ind_filename = 1; ind_pathname = 2; % MemBloc1 of stored values. %--------------------------- n_param_anal = 'DWAn1d_Par_Anal'; ind_sig_name = 1; ind_sig_size = 2; ind_wav_name = 3; ind_lev_anal = 4; % ind_axe_ref = 5; ind_act_option = 6; % ind_ssig_type = 7; ind_thr_val = 8; % MemBloc2 of stored values. %--------------------------- n_coefs_longs = 'Coefs_and_Longs'; ind_coefs = 1; ind_longs = 2; %***********************************************% %** OPTION = 'ini' - Only for precompilation. **% %***********************************************% if strcmp(option,'ini') , return; end %***********************************************% switch option case 'anal' active_option = wmemtool('rmb',win_dw1dtool,n_param_anal,ind_act_option); if ~strcmp(active_option,'load_sig') % Cleaning. %---------- Sig_Anal = dw1dfile('sig',win_dw1dtool); wwaiting('msg',win_dw1dtool,getWavMSG('Wavelet:commongui:WaitClean')); dw1dutil('clean',win_dw1dtool,'load_sig','new_anal'); % Setting GUI values. %-------------------- dw1dutil('set_gui',win_dw1dtool,'load_sig','new_anal'); % Drawing. %--------- dw1dvdrv('plot_sig',win_dw1dtool,Sig_Anal); % Setting enabled values. %------------------------ dw1dutil('Enable',win_dw1dtool,'load_sig'); else wmemtool('wmb',win_dw1dtool,n_param_anal,ind_act_option,'anal'); end % Waiting message. %----------------- wwaiting('msg',win_dw1dtool, ... getWavMSG('Wavelet:commongui:WaitCompute')); % Setting Analysis parameters %----------------------------- dw1dutil('set_par',win_dw1dtool,option); % Setting GUI values. %-------------------- dw1dutil('set_gui',win_dw1dtool,option); mousefrm(0,'watch'); % Computing %----------- if strcmp(active_option,'load_dec') dw1dfile('anal',win_dw1dtool,'new_anal'); else dw1dfile('anal',win_dw1dtool); end % Drawing. %--------- dw1dvdrv('plot_anal',win_dw1dtool); % Setting enabled values. %------------------------ dw1dutil('Enable',win_dw1dtool,option); % Add or Delete Save APP-Menu %------------------------------ Level_Anal = wmemtool('rmb',win_dw1dtool,n_param_anal,ind_lev_anal); Add_OR_Del_SaveAPPMenu(win_dw1dtool,Level_Anal); % End waiting. %------------- wwaiting('off',win_dw1dtool); case 'synt' active_option = wmemtool('rmb',win_dw1dtool,n_param_anal,... ind_act_option); if ~strcmp(active_option,'load_cfs') % Cleaning. %---------- wwaiting('msg',win_dw1dtool,getWavMSG('Wavelet:commongui:WaitClean')); dw1dutil('clean',win_dw1dtool,'load_cfs','new_synt'); % Setting GUI values. %-------------------- dw1dutil('set_gui',win_dw1dtool,'load_cfs'); % Drawing. %--------- dw1dvdrv('plot_cfs',win_dw1dtool); % Setting enabled values. %------------------------ dw1dutil('Enable',win_dw1dtool,'load_cfs'); else wmemtool('wmb',win_dw1dtool,n_param_anal,ind_act_option,'synt'); end % Begin waiting. %-------------- wwaiting('msg',win_dw1dtool, ... getWavMSG('Wavelet:commongui:WaitCompute')); % Setting Analysis parameters %----------------------------- dw1dutil('set_par',win_dw1dtool,option); % Setting GUI values. %-------------------- dw1dutil('set_gui',win_dw1dtool,option); % Computing %----------- dw1dfile('anal',win_dw1dtool,'synt'); % Computing & Drawing. %---------------------- dw1dvdrv('plot_synt',win_dw1dtool); % Setting enabled values. %------------------------ dw1dutil('Enable',win_dw1dtool,option); % End waiting. %------------- wwaiting('off',win_dw1dtool); case 'stat' mousefrm(0,'watch'); drawnow; fig = dw1dstat('create',win_dw1dtool); if nargout>0 , out1 = fig; end case 'hist' mousefrm(0,'watch'); drawnow; fig = dw1dhist('create',win_dw1dtool); if nargout>0 , out1 = fig; end case 'comp' mousefrm(0,'watch'); drawnow; dw1dutil('Enable',win_dw1dtool,option); fig = dw1dcomp('create',win_dw1dtool); if nargout>0 , out1 = fig; end case 'deno' mousefrm(0,'watch'); drawnow; dw1dutil('Enable',win_dw1dtool,option); fig = dw1ddeno('create',win_dw1dtool); if nargout>0 , out1 = fig; end case {'return_comp','return_deno'} % in3 = 1 : preserve compression % in3 = 0 : discard compression % in4 = hld_lin (optional) %-------------------------------------- if in3==1 % Begin waiting. %-------------- wwaiting('msg',win_dw1dtool, ... getWavMSG('Wavelet:commongui:WaitDraw')); % Computing %----------- dw1dfile('comp_ss',win_dw1dtool,in4); % Cleaning axes & drawing. %------------------------ dw1dvmod('ss_vm',win_dw1dtool,[1 4 6],1,0); dw1dvmod('ss_vm',win_dw1dtool,[2 3 5],1); dw1dvmod('ch_vm',win_dw1dtool,2); % End waiting. %------------- wwaiting('off',win_dw1dtool); end dw1dutil('Enable',win_dw1dtool,option); case {'load_sig','import_sig'} switch option case 'load_sig' [sigInfos,Sig_Anal,ok] = ... utguidiv('load_sig',win_dw1dtool,'Signal_Mask',... getWavMSG('Wavelet:commongui:LoadSig')); case 'import_sig' [sigInfos,Sig_Anal,ok] = wtbximport('dw1d'); if size(Sig_Anal,1)>1 , Sig_Anal = Sig_Anal'; end option = 'load_sig'; end if ~ok, return; end wtbxappdata('set',win_dw1dtool,... 'Anal_Data_Info',{Sig_Anal,sigInfos.name}); % Cleaning. %---------- wwaiting('msg',win_dw1dtool,getWavMSG('Wavelet:commongui:WaitClean')); dw1dutil('clean',win_dw1dtool,option,''); % Setting Analysis parameters. %----------------------------- wmemtool('wmb',win_dw1dtool,n_param_anal, ... ind_act_option,option, ... ind_sig_name,sigInfos.name,... ind_sig_size,sigInfos.size ... ); wmemtool('wmb',win_dw1dtool,n_InfoInit, ... ind_filename,sigInfos.filename, ... ind_pathname,sigInfos.pathname ... ); % Setting GUI values. %-------------------- dw1dutil('set_gui',win_dw1dtool,option,''); % Drawing. %--------- dw1dvdrv('plot_sig',win_dw1dtool,Sig_Anal); % Setting enabled values. %------------------------ dw1dutil('Enable',win_dw1dtool,option); % End waiting. %------------- wwaiting('off',win_dw1dtool); case {'load_cfs','import_cfs'} if nargin==2 || isequal(option,'import_cfs') switch option case 'load_cfs' % Testing file. %-------------- [filename,pathname,ok] = utguidiv('load_var',win_dw1dtool, ... '*.mat',getWavMSG('Wavelet:dw1dRF:Load1DCfs'),... {'coefs','longs'}); if ~ok, return; end % Loading file. %-------------- load([pathname filename],'-mat'); Signal_Name = strtok(filename,'.'); case 'import_cfs' [ok,S,varName] = wtbximport('cfs1d'); if ~ok, return; end filename = ''; pathname = ''; coefs = S.coefs; longs = S.longs; Signal_Name = varName; option = 'load_cfs'; end lev = length(longs)-2; if lev>max_lev_anal wwaiting('off',win_dw1dtool); msg = getWavMSG('Wavelet:dw1dRF:LvlTooLarge_msg',max_lev_anal); wwarndlg(msg,getWavMSG('Wavelet:dw1dRF:LvlTooLarge_tit'),'block'); return end in3 = ''; end wtbxappdata('del',win_dw1dtool,'Anal_Data_Info'); % Cleaning. %---------- wwaiting('msg',win_dw1dtool,getWavMSG('Wavelet:commongui:WaitClean')); dw1dutil('clean',win_dw1dtool,option,in3); if nargin==2 || isequal(option,'import_cfs') % Getting Analysis parameters. %----------------------------- len = length(longs); Signal_Size = longs(len); Level_Anal = len-2; % Setting Analysis parameters %----------------------------- wmemtool('wmb',win_dw1dtool,n_param_anal,... ind_act_option,option, ... ind_sig_name,Signal_Name, ... ind_lev_anal,Level_Anal, ... ind_sig_size,Signal_Size ... ); wmemtool('wmb',win_dw1dtool,n_InfoInit,... ind_filename,filename, ... ind_pathname,pathname ... ); % Setting coefs and longs. %------------------------- wmemtool('wmb',win_dw1dtool,n_coefs_longs, ... ind_coefs,coefs,ind_longs,longs); end % Setting GUI values. %-------------------- dw1dutil('set_gui',win_dw1dtool,option); % Drawing. %--------- dw1dvdrv('plot_cfs',win_dw1dtool); % Setting enabled values. %------------------------ dw1dutil('Enable',win_dw1dtool,option); % End waiting. %------------- wwaiting('off',win_dw1dtool); case {'load_dec','import_dec'} switch option case 'load_dec' fileMask = {... '*.wa1;*.mat' , 'Decomposition (*.wa1;*.mat)'; '*.*','All Files (*.*)'}; [filename,pathname,ok] = utguidiv('load_var',win_dw1dtool, ... fileMask,getWavMSG('Wavelet:dw1dRF:Load1DAnal'),... {'coefs','longs','wave_name','data_name'}); if ~ok, return; end % Loading file. %-------------- load([pathname filename],'-mat'); case 'import_dec' [ok,S,varName] = wtbximport('dec1d'); if ~ok, return; end filename = []; pathname = []; coefs = S.coefs; longs = S.longs; data_name = S.data_name; wave_name = S.wave_name; option = 'load_dec'; end lev = length(longs)-2; if lev>max_lev_anal wwaiting('off',win_dw1dtool); msg = getWavMSG('Wavelet:dw1dRF:LvlTooLarge_msg',max_lev_anal); wwarndlg(msg,getWavMSG('Wavelet:dw1dRF:Load1DAnal'),'block'); return end wtbxappdata('del',win_dw1dtool,'Anal_Data_Info'); % Cleaning. %---------- wwaiting('msg',win_dw1dtool,getWavMSG('Wavelet:commongui:WaitClean')); dw1dutil('clean',win_dw1dtool,option); % Getting Analysis parameters. %----------------------------- len = length(longs); Signal_Size = longs(len); Level_Anal = len-2; Signal_Name = data_name; Wave_Name = wave_name; % Setting Analysis parameters %----------------------------- wmemtool('wmb',win_dw1dtool,n_param_anal, ... ind_act_option,option, ... ind_sig_name,Signal_Name, ... ind_wav_name,Wave_Name, ... ind_lev_anal,Level_Anal, ... ind_sig_size,Signal_Size ... ); wmemtool('wmb',win_dw1dtool,n_InfoInit, ... ind_filename,filename, ... ind_pathname,pathname ... ); % Setting coefs and longs. %------------------------- wmemtool('wmb',win_dw1dtool,n_coefs_longs, ... ind_coefs,coefs,ind_longs,longs); % Setting GUI values. %-------------------- dw1dutil('set_gui',win_dw1dtool,option); % Computing %----------- sig_rec = dw1dfile('anal',win_dw1dtool,'load_dec'); % Drawing. %--------- dw1dvdrv('plot_sig',win_dw1dtool,sig_rec,1); dw1dvdrv('plot_anal',win_dw1dtool); % Setting enabled values. %------------------------ dw1dutil('Enable',win_dw1dtool,option); % End waiting. %------------- wwaiting('off',win_dw1dtool); case 'demo' % in3 = Signal_Name % in4 = Wave_Name % in5 = Level_Anal %------------------ Signal_Name = deblank(in3); Wave_Name = deblank(in4); Level_Anal = in5; % Loading file. %------------- filename = [Signal_Name '.mat']; pathname = utguidiv('WTB_DemoPath',filename); [sigInfos,Sig_Anal,ok] = ... utguidiv('load_dem1D',win_dw1dtool,pathname,filename); if ~ok, return; end wtbxappdata('del',win_dw1dtool,'Anal_Data_Info'); % Cleaning. %---------- wwaiting('msg',win_dw1dtool,getWavMSG('Wavelet:commongui:WaitClean')); dw1dutil('clean',win_dw1dtool,option); % Setting Analysis parameters %----------------------------- wmemtool('wmb',win_dw1dtool,n_param_anal, ... ind_act_option,option, ... ind_sig_name,sigInfos.name, ... ind_wav_name,Wave_Name, ... ind_lev_anal,Level_Anal, ... ind_sig_size,sigInfos.size ... ); wmemtool('wmb',win_dw1dtool,n_InfoInit, ... ind_filename,sigInfos.filename, ... ind_pathname,sigInfos.pathname ... ); % Setting GUI values. %-------------------- dw1dutil('set_gui',win_dw1dtool,option); % Drawing. %--------- dw1dvdrv('plot_sig',win_dw1dtool,Sig_Anal,1); % Computing %----------- dw1dfile('anal',win_dw1dtool); % Drawing. %--------- dw1dvdrv('plot_anal',win_dw1dtool); % Setting enabled values. %------------------------ dw1dutil('Enable',win_dw1dtool,option); % Add or Delete Save APP-Menu %------------------------------ Level_Anal = wmemtool('rmb',win_dw1dtool,n_param_anal,ind_lev_anal); Add_OR_Del_SaveAPPMenu(win_dw1dtool,Level_Anal); % End waiting. %------------- wwaiting('off',win_dw1dtool); case 'save_synt' % Testing file. %-------------- [filename,pathname,ok] = utguidiv('test_save',win_dw1dtool, ... '*.mat',getWavMSG('Wavelet:commongui:SaveSS')); if ~ok, return; end % Begin waiting. %-------------- wwaiting('msg',win_dw1dtool,getWavMSG('Wavelet:commongui:WaitSave')); % Getting Analysis values. %------------------------- [wname,thrParams] = wmemtool('rmb',win_dw1dtool,n_param_anal,... ind_wav_name,ind_thr_val); if length(thrParams)==1 thrName = 'valTHR'; valTHR = thrParams; else thrName = 'thrParams'; end x = dw1dfile('ssig',win_dw1dtool); % Saving file. %-------------- [name,ext] = strtok(filename,'.'); if isempty(ext) || isequal(ext,'.') ext = '.mat'; filename = [name ext]; end try saveStr = name; eval([saveStr '= x ;']); catch %#ok<*CTCH> saveStr = 'x'; end wwaiting('off',win_dw1dtool); try save([pathname filename],saveStr,thrName,'wname'); catch errargt(mfilename,getWavMSG('Wavelet:commongui:SaveFail'),'msg'); end case 'save_app' % Testing file. %-------------- [filename,pathname,ok] = utguidiv('test_save',win_dw1dtool, ... '*.mat',getWavMSG('Wavelet:commongui:SaveAS')); if ~ok, return; end % Begin waiting. %-------------- wwaiting('msg',win_dw1dtool,getWavMSG('Wavelet:commongui:WaitSave')); % Getting Analysis values. %------------------------- Level_Anal = wmemtool('rmb',win_dw1dtool,n_param_anal,ind_lev_anal); levAPP = get(gcbo,'Position'); if levAPP<=Level_Anal x = dw1dfile('app',win_dw1dtool,levAPP); %#ok<*NASGU> else x = dw1dfile('app',win_dw1dtool,(1:Level_Anal)); end % Saving file. %-------------- [name,ext] = strtok(filename,'.'); if isempty(ext) || isequal(ext,'.') ext = '.mat'; filename = [name ext]; end try saveStr = name; eval([saveStr '= x ;']); catch saveStr = 'x'; end wwaiting('off',win_dw1dtool); try save([pathname filename],saveStr); catch errargt(mfilename,getWavMSG('Wavelet:commongui:SaveFail'),'msg'); end case 'save_app_cfs' % Testing file. %-------------- levAPP = get(gcbo,'Position'); strTITLE = getWavMSG('Wavelet:dw1dRF:SaveAppCfs',levAPP); [filename,pathname,ok] = utguidiv('test_save',win_dw1dtool, ... '*.mat',strTITLE); if ~ok, return; end % Begin waiting. %-------------- wwaiting('msg',win_dw1dtool,getWavMSG('Wavelet:commongui:WaitSaveCfs')); % Getting Analysis values. %------------------------- wname = wmemtool('rmb',win_dw1dtool,n_param_anal,ind_wav_name); [coefs,longs] = wmemtool('rmb',win_dw1dtool,n_coefs_longs,... ind_coefs,ind_longs); x = appcoef(coefs,longs,wname,levAPP); % Saving file. %-------------- [name,ext] = strtok(filename,'.'); if isempty(ext) || isequal(ext,'.') ext = '.mat'; filename = [name ext]; end saveStr = {'x'}; wwaiting('off',win_dw1dtool); try save([pathname filename],saveStr{:}); catch errargt(mfilename,getWavMSG('Wavelet:commongui:SaveFail'),'msg'); end case 'save_cfs' % Testing file. %-------------- [filename,pathname,ok] = utguidiv('test_save',win_dw1dtool, ... '*.mat',getWavMSG('Wavelet:dw1dRF:Save1DCfs')); if ~ok, return; end % Begin waiting. %-------------- wwaiting('msg',win_dw1dtool,getWavMSG('Wavelet:commongui:WaitSaveCfs')); % Getting Analysis values. %------------------------- [wname,thrParams] = wmemtool('rmb',win_dw1dtool,n_param_anal,... ind_wav_name,ind_thr_val); %#ok<*ASGLU> if length(thrParams)==1 thrName = 'valTHR'; valTHR = thrParams; else thrName = 'thrParams'; end [coefs,longs] = wmemtool('rmb',win_dw1dtool,n_coefs_longs,... ind_coefs,ind_longs); % Saving file. %-------------- [name,ext] = strtok(filename,'.'); if isempty(ext) || isequal(ext,'.') ext = '.mat'; filename = [name ext]; end saveStr = {'coefs','longs',thrName,'wname'}; wwaiting('off',win_dw1dtool); try save([pathname filename],saveStr{:}); catch errargt(mfilename,getWavMSG('Wavelet:commongui:SaveFail'),'msg'); end case 'save_dec' % Testing file. %-------------- fileMask = {... '*.wa1;*.mat' , 'Decomposition (*.wa1;*.mat)'; '*.*','All Files (*.*)'}; [filename,pathname,ok] = utguidiv('test_save',win_dw1dtool, ... fileMask,getWavMSG('Wavelet:dw1dRF:SaveAnal_1D')); if ~ok, return; end % Begin waiting. %-------------- wwaiting('msg',win_dw1dtool,getWavMSG('Wavelet:commongui:WaitSaveDec')); % Getting Analysis parameters. %----------------------------- [wave_name,data_name,thrParams] = ... wmemtool('rmb',win_dw1dtool,n_param_anal, ... ind_wav_name,ind_sig_name,ind_thr_val); if length(thrParams)==1 thrName = 'valTHR'; valTHR = thrParams; else thrName = 'thrParams'; end [coefs,longs] = wmemtool('rmb',win_dw1dtool,n_coefs_longs,... ind_coefs,ind_longs); % Saving file. %-------------- [name,ext] = strtok(filename,'.'); if isempty(ext) || isequal(ext,'.') ext = '.wa1'; filename = [name ext]; end saveStr = {'coefs','longs',thrName,'wave_name','data_name'}; wwaiting('off',win_dw1dtool); try save([pathname filename],saveStr{:}); catch errargt(mfilename,getWavMSG('Wavelet:commongui:SaveFail'),'msg'); end case 'exp_wrks' wwaiting('msg',win_dw1dtool,getWavMSG('Wavelet:commongui:WaitExport')); typeEXP = in3; switch typeEXP case 'sig' x = dw1dfile('ssig',win_dw1dtool); wtbxexport(x,'name','sig_1D', ... 'title',getWavMSG('Wavelet:dw1dRF:Str_SS_Abrev')); case 'cfs' [wname,thrParams] = wmemtool('rmb',win_dw1dtool,n_param_anal,... ind_wav_name,ind_thr_val); if length(thrParams)==1 thrName = 'valTHR'; else thrName = 'thrParams'; end [coefs,longs] = wmemtool('rmb',win_dw1dtool,n_coefs_longs,... ind_coefs,ind_longs); S = struct('coefs',coefs,'longs',longs,thrName,thrParams, ... 'wname',wname); wtbxexport(S,'name','cfs_1D','title', ... getWavMSG('Wavelet:dw1dRF:Str_sel_cfs')); case 'dec' [wname,data_name,thrParams] = ... wmemtool('rmb',win_dw1dtool,n_param_anal, ... ind_wav_name,ind_sig_name,ind_thr_val); if length(thrParams)==1 thrName = 'valTHR'; else thrName = 'thrParams'; end [coefs,longs] = wmemtool('rmb',win_dw1dtool,n_coefs_longs,... ind_coefs,ind_longs); S = struct('coefs',coefs,'longs',longs,thrName,thrParams, ... 'wave_name',wname,'data_name',data_name); wtbxexport(S,'name','dec_1D', ... 'title',getWavMSG('Wavelet:dw1dRF:Str_Dec')); case 'app' [coefs,longs] = wmemtool('rmb',win_dw1dtool,n_coefs_longs,... ind_coefs,ind_longs); [wname,level] = wmemtool('rmb',win_dw1dtool,n_param_anal,... ind_wav_name,ind_lev_anal); A = wrmcoef('a',coefs,longs,wname,1:level); wtbxexport(A,'name','approximations_1D', ... 'title',getWavMSG('Wavelet:dw1dRF:Str_app_sig')); case 'det' [coefs,longs] = wmemtool('rmb',win_dw1dtool,n_coefs_longs,... ind_coefs,ind_longs); wname = wmemtool('rmb',win_dw1dtool,n_param_anal,... ind_wav_name); D = wrmcoef('d',coefs,longs,wname); wtbxexport(D,'name','details_1D', ... 'title',getWavMSG('Wavelet:dw1dRF:Str_det_sig')); end wwaiting('off',win_dw1dtool); otherwise errargt(mfilename,getWavMSG('Wavelet:moreMSGRF:Unknown_Opt'),'msg'); error(message('Wavelet:FunctionArgVal:Invalid_Input')); end %-------------------------------------------------------------------------- function Add_OR_Del_SaveAPPMenu(win_tool,Level_Anal) % Add or Delete Save APP-Menu %------------------------------ Men_Save_APP = ... findobj(win_tool,'Type','uimenu','Tag','Men_Save_APP'); child = get(Men_Save_APP,'Children'); delete(child); str_numwin = num2mstr(win_tool); for k = 1:Level_Anal uimenu(Men_Save_APP,'Label',getWavMSG('Wavelet:dw1dRF:App',k),... 'Position',k, ... 'Callback',['dw1dmngr(''save_app'',' str_numwin ');'] ... ); end uimenu(Men_Save_APP,'Label',getWavMSG('Wavelet:dw1dRF:AllApp'), ... 'Position',Level_Anal+1,'Separator','On', ... 'Callback',['dw1dmngr(''save_app'',' str_numwin ');'] ... ); Men_Save_APP_CFS = ... findobj(win_tool,'Type','uimenu','Tag','Men_Save_APP_CFS'); child = get(Men_Save_APP_CFS,'Children'); delete(child); for k = 1:Level_Anal uimenu(Men_Save_APP_CFS,'Label',getWavMSG('Wavelet:dw1dRF:CfsOfA',k), ... 'Position',k, ... 'Callback',['dw1dmngr(''save_app_cfs'',' str_numwin ');'] ... ); end %--------------------------------------------------------------------------