www.gusucode.com > wavelet工具箱matlab源码程序 > wavelet/wavelet/wfbmtool.m
function varargout = wfbmtool(varargin) %WFBMTOOL Fractional Brownian motion generation tool. % VARARGOUT = WFBMTOOL(VARARGIN) % WFBMTOOL MATLAB file for wfbmtool.fig % WFBMTOOL, by itself, creates a new WFBMTOOL or raises the existing % singleton*. % % H = WFBMTOOL returns the handle to a new WFBMTOOL or the handle to % the existing singleton*. % % WFBMTOOL('Property','Value',...) creates a new WFBMTOOL using the % given property value pairs. Unrecognized properties are passed via % varargin to wfbmtool_OpeningFcn. This calling syntax produces a % warning when there is an existing singleton*. % % WFBMTOOL('CALLBACK') and WFBMTOOL('CALLBACK',hObject,...) call the % local function named CALLBACK in WFBMTOOL.M with the given input % arguments. % % *See GUI Options on GUIDE's Tools menu. Choose "GUI allows only one % instance to run (singleton)". % % See also: GUIDE, GUIDATA, GUIHANDLES % Last Modified by GUIDE v2.5 13-Apr-2006 18:55:26 % % M. Misiti, Y. Misiti, G. Oppenheim, J.M. Poggi 01-Feb-2003. % Last Revision: 02-Aug-2013. % Copyright 1995-2013 The MathWorks, Inc. % $Revision: 1.1.6.15 $ $Date: 2013/08/23 23:45:20 $ %*************************************************************************% % BEGIN initialization code - DO NOT EDIT % % ---------------------------------------- % %*************************************************************************% gui_Singleton = 0; gui_State = struct('gui_Name', mfilename, ... 'gui_Singleton', gui_Singleton, ... 'gui_OpeningFcn', @wfbmtool_OpeningFcn, ... 'gui_OutputFcn', @wfbmtool_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 wfbmtool is made visible. % %*************************************************************************% function wfbmtool_OpeningFcn(hObject,eventdata,handles,varargin) % This function has no output args, see OutputFcn. % Choose default command line output for wfbmtool handles.output = hObject; % Update handles structure guidata(hObject, handles); % UIWAIT makes wfbmtool wait for user response (see UIRESUME) % uiwait(handles.wfbmtool_Win); %%!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!% % TOOL INITIALISATION Introduced manualy in the automatic generated code % %%!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!% Init_Tool(hObject,eventdata,handles); %*************************************************************************% % END Opening Function % %*************************************************************************% %*************************************************************************% % BEGIN Output Function % % --------------------- % % --- Outputs from this function are returned to the command line. % %*************************************************************************% function varargout = wfbmtool_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 Edi_Length_Callback(hObject,eventdata,handles) %#ok<INUSD,DEFNU> FieldDefault ='1000'; Val_Length = str2double(get(hObject,'String')); if ~isequal(Val_Length,fix(Val_Length)) || ... Val_Length < 100 || isnan(Val_Length) set(hObject,'String',FieldDefault); end %-------------------------------------------------------------------------- function Sli_Fractal_Index_Callback(hObject,eventdata,handles) %#ok<INUSL,DEFNU> Val_Index = get(hObject,'Value'); set(handles.Edi_Fractal_Index,'String',Val_Index); %-------------------------------------------------------------------------- function Edi_Fractal_Index_Callback(hObject,eventdata,handles) %#ok<INUSL,DEFNU> FieldDefault ='0.6'; Val_Index = str2double(get(hObject,'String')); if Val_Index < 0 || Val_Index > 1 || isnan(Val_Index) set(hObject,'String',FieldDefault); set(handles.Sli_Fractal_Index,'Value',str2double(FieldDefault)); else set(handles.Sli_Fractal_Index,'Value',Val_Index); end %-------------------------------------------------------------------------- function Rad_Random_Callback(hObject,eventdata,handles) %#ok<INUSL,DEFNU> set(hObject,'Value',1); set(handles.Rad_Value,'Value',0); set(handles.Edi_Value,'Enable','off'); %-------------------------------------------------------------------------- function Rad_Value_Callback(hObject,eventdata,handles) %#ok<INUSL> set(hObject,'Value',1); set(handles.Rad_Random,'Value',0); set(handles.Edi_Value,'Enable','on'); %-------------------------------------------------------------------------- function Edi_Value_Callback(hObject,eventdata,handles) %#ok<INUSD,DEFNU> FieldDefault ='1'; Val_Value = str2double(get(hObject,'String')); if ~isequal(Val_Value,fix(Val_Value)) || Val_Value < 0 || isnan(Val_Value) set(hObject,'String',FieldDefault); end %-------------------------------------------------------------------------- function Pus_Generate_Callback(hObject,eventdata,handles) %#ok<INUSL> % Get figure handle. %------------------- hFig = handles.output; % Cleaning. %---------- wwaiting('msg',hFig,getWavMSG('Wavelet:commongui:WaitClean')); cleanTOOL(handles); % Computing. %----------- wwaiting('msg',hFig,getWavMSG('Wavelet:commongui:WaitCompute')); % Get all the parameter settings. %-------------------------------- % Wavelet used Wav = cbanapar('get',hFig,'wav'); % Signal length (string) Val_Length_Str = get(handles.Edi_Length,'String'); % Signal length (numeric) Val_Length_Num = str2double(Val_Length_Str); % Fractal index (string) H = get(handles.Edi_Fractal_Index,'String'); % Fractal index (numeric) Val_Index = str2double(H); % Matrix of Refinement values Val_Refinement = str2double(get(handles.Pop_Refinement,'String')); % Current Refinement value Val_Refinement = Val_Refinement(get(handles.Pop_Refinement,'Value')); % Check if a value is used for seed if get(handles.Rad_Value,'Value') % Seed a new generator with this value and save the old default randNUM = str2double(get(handles.Edi_Value,'String')); stream = RandStream('shr3cong','seed',randNUM); else stream = RandStream.getGlobalStream; end FBM_PARAMS.SEED = struct('Type',{stream.Type},'State',{stream.State}); % Compute Fractional Brownian Motion signal. %------------------------------------------- savedDfltStream = RandStream.setGlobalStream(stream); FBM = wfbm(Val_Index,Val_Length_Num,Val_Refinement,Wav); RandStream.setGlobalStream(savedDfltStream); % Synthesized Fractional Brownian Motion axes display. %----------------------------------------------------- TFBM = 0:length(FBM)-1; ext = abs(max(FBM) - min(FBM)) / 100; Ylim = [min(FBM)-ext max(FBM)+ext]; Xlim = [TFBM(1) TFBM(end)]; Lin_FBM(1) = line(TFBM,FBM,'Color','r','Visible','Off',... 'Parent',handles.Axe_FBM); set(handles.Axe_FBM,'XLim',Xlim,'YLim',Ylim); FBM_title = getWavMSG('Wavelet:divGUIRF:FBM_Synt_Par',num2str(H),Wav); wguiutils('setAxesTitle',handles.Axe_FBM,FBM_title,'On'); % First order increments axes display. %------------------------------------- FBM1Dif = diff(FBM); Lin_FBM(2) = line(0:length(FBM1Dif)-1,FBM1Dif,'Color','g', ... 'Visible','Off','Parent',handles.Axe_1Dif); ext = abs(max(FBM1Dif) - min(FBM1Dif)) / 100; Ylim = [min(FBM1Dif)-ext max(FBM1Dif)+ext]; set(handles.Axe_1Dif,'XLim',Xlim,'YLim',Ylim); set(get(handles.Axe_1Dif,'Title'),'Visible','On'); % Set the axes visible. %---------------------- set([handles.Axe_FBM,handles.Axe_1Dif,Lin_FBM],'Visible','on'); % Enable the Statistics Push_Button. %----------------------------------- set(handles.Pus_Statistics,'Enable','on'); % get Menu Handles. %------------------ hdl_Menus = wtbxappdata('get',hFig,'hdl_Menus'); % Enable the Save synthesized signal Menu item. %---------------------------------------------- set([hdl_Menus.m_save,hdl_Menus.m_exp_sig],'Enable','on'); % Update Generated FBM Parameters. %--------------------------------- FBM_PARAMS.FBM = FBM; FBM_PARAMS.Wav = Wav; FBM_PARAMS.Length = Val_Length_Num; FBM_PARAMS.H = Val_Index; FBM_PARAMS.Refinement = Val_Refinement; wtbxappdata('set',hFig,'FBM_PARAMS',FBM_PARAMS); % Init DynVTool. %--------------- axe_IND = []; axe_CMD = [... handles.Axe_FBM , ... handles.Axe_1Dif ... ]; axe_ACT = []; dynvtool('init',hFig,axe_IND,axe_CMD,axe_ACT,[1 0],'','',''); % End waiting. %------------- wwaiting('off',hFig); %-------------------------------------------------------------------------- function Pus_Statistics_Callback(hObject,eventdata,handles) %#ok<INUSL> % Get figure handle. %------------------- hFig = handles.output; % get Tool Parameters. %--------------------- FBM_PARAMS = wtbxappdata('get',hFig,'FBM_PARAMS'); % Call the wfbmstat figure and pass the FBM_PARAMS structure. %------------------------------------------------------------ wfbmstat('WfbmtoolCall_Callback',hFig,[],handles,FBM_PARAMS); %-------------------------------------------------------------------------- function Pus_CloseWin_Callback(hObject,eventdata,handles) %#ok<DEFNU> hdl_Menus = wtbxappdata('get',hObject,'hdl_Menus'); m_save = hdl_Menus.m_save; ena_Save = get(m_save,'Enable'); if isequal(lower(ena_Save),'on') hFig = get(hObject,'Parent'); status = wwaitans({hFig,getWavMSG('Wavelet:divGUIRF:FBM_Name')},... getWavMSG('Wavelet:commongui:SaveSS'),2,'Cancel'); switch status case -1 , return; case 1 Men_SavSynthSig_Callback(m_save, eventdata, handles) otherwise end end close(gcbf) %-------------------------------------------------------------------------- %=========================================================================% % END Callback Functions % %=========================================================================% %=========================================================================% % BEGIN Callback Menus % % -------------------- % %=========================================================================% function Men_SavSynthSig_Callback(hObject,eventdata,handles) %#ok<INUSL> % Get figure handle. %------------------- hFig = handles.output; % Begin waiting. %--------------- wwaiting('msg',hFig,getWavMSG('Wavelet:commongui:WaitSave')); % Update Tool Parameters. %------------------------ FBM_PARAMS = wtbxappdata('get',hFig,'FBM_PARAMS'); % Testing file. %-------------- [filename,pathname,ok] = utguidiv('test_save',hFig, ... '*.mat',getWavMSG('Wavelet:commongui:SaveSS')); if ~ok, wwaiting('off',hFig); % End waiting. return; end % Saving file. %------------- [name,ext] = strtok(filename,'.'); if isempty(ext) || isequal(ext,'.') ext = '.mat'; filename = [name ext]; end try try eval([name ' = FBM_PARAMS.FBM;']); catch %#ok<*CTCH> x = FBM_PARAMS.FBM; %#ok<NASGU> name = 'x'; end FBM_PARAMS = rmfield(FBM_PARAMS,'FBM'); %#ok<NASGU> save([pathname filename],name,'FBM_PARAMS','-mat'); catch errargt(mfilename,getWavMSG('Wavelet:commongui:SaveFail'),'msg'); end % End waiting. %------------- wwaiting('off',hFig); %-------------------------------------------------------------------------- function Export_Callback(hObject,eventdata,handles) %#ok<INUSL,DEFNU> hFig = handles.output; wwaiting('msg',hFig,getWavMSG('Wavelet:commongui:WaitExport')); FBM_PARAMS = wtbxappdata('get',hFig,'FBM_PARAMS'); fBM_sig = FBM_PARAMS.FBM; wtbxexport(fBM_sig,'name','fBM_sig',... 'title',getWavMSG('Wavelet:divGUIRF:FBM_Signal')); wwaiting('off',hFig); %-------------------------------------------------------------------------- %=========================================================================% % END Callback Menus % %=========================================================================% %=========================================================================% % BEGIN Tool Initialization % % ------------------------- % %=========================================================================% function Init_Tool(hObject,eventdata,handles) %#ok<INUSL> % WTBX -- Install DynVTool. %-------------------------- dynvtool('Install_V3',hObject,handles); % WTBX -- Initialize GUIDE Figure. %--------------------------------- wfigmngr('beg_GUIDE_FIG',hObject); % WTBX MENUS (Install) %--------------------- hdl_Menus = Install_MENUS(hObject); wtbxappdata('set',hObject,'hdl_Menus',hdl_Menus); % WTBX -- Install ANAPAR FRAME. %------------------------------ wnameDEF = 'db10'; utanapar('Install_V3_CB',hObject,'wtype','owt'); cbanapar('set',hObject,'wav',wnameDEF); % Set colors and fontes for the figure. %--------------------------------------- wfigmngr('set_FigATTRB',hObject,mfilename); % Set Title in the FBM axes (first time). %---------------------------------------- title = getWavMSG('Wavelet:divGUIRF:FBM_Synt'); wguiutils('setAxesTitle',handles.Axe_FBM,title,hObject,'Off'); % Set Title in the 1Dif axes (first time). %----------------------------------------- title = getWavMSG('Wavelet:divGUIRF:First_OrdInc'); wguiutils('setAxesTitle',handles.Axe_1Dif,title,hObject,'Off'); % WTBX -- Terminate GUIDE Figure. %-------------------------------- wfigmngr('end_GUIDE_FIG',hObject,mfilename); %=========================================================================% % END Tool Initialization % %=========================================================================% %=========================================================================% % BEGIN CleanTOOL function % % ------------------------ % %=========================================================================% function cleanTOOL(handles) hAXES = [handles.Axe_FBM, handles.Axe_1Dif]; hLINES = findobj(hAXES,'Type','line'); set(hAXES,'Visible','off'); delete(hLINES); set(handles.Pus_Statistics,'Enable','off'); %=========================================================================% % END CleanTOOL function % %=========================================================================% %=========================================================================% % BEGIN Internal Functions % % ------------------------ % %=========================================================================% function hdl_Menus = Install_MENUS(hFig) % Add UIMENUS. %------------- m_files = wfigmngr('getmenus',hFig,'file'); m_close = wfigmngr('getmenus',hFig,'close'); cb_close = [mfilename '(''Pus_CloseWin_Callback'',gcbo,[],guidata(gcbo));']; set(m_close,'Callback',cb_close); m_demo = uimenu(m_files, ... 'Label',getWavMSG('Wavelet:commongui:Lab_Example'), ... 'Position',1, ... 'Enable','On', ... 'Tag','Examples' ... ); uimenu(m_demo, ... 'Label',getWavMSG('Wavelet:divGUIRF:FBM_Ex1'), ... 'Position',1, ... 'Enable','On', ... 'Callback', ... [mfilename '(''Men_Example_Callback'',gcbo,[],guidata(gcbo));'] ... ); uimenu(m_demo, ... 'Label',getWavMSG('Wavelet:divGUIRF:FBM_Ex2'), ... 'Position',2, ... 'Enable','On', ... 'Callback', ... [mfilename '(''Men_Example_Callback'',gcbo,[],guidata(gcbo));'] ... ); uimenu(m_demo, ... 'Label',getWavMSG('Wavelet:divGUIRF:FBM_Ex3'), ... 'Position',3, ... 'Enable','On', ... 'Callback', ... [mfilename '(''Men_Example_Callback'',gcbo,[],guidata(gcbo));'] ... ); m_save = uimenu(m_files, ... 'Label',getWavMSG('Wavelet:commongui:SaveSS'), ... 'Position',2, ... 'Enable','Off', ... 'Separator', 'On', ... 'Callback', ... [mfilename '(''Men_SavSynthSig_Callback'',gcbo,[],guidata(gcbo));'] ... ); m_exp_sig = uimenu(m_files, ... 'Label',getWavMSG('Wavelet:commongui:Lab_Export'),'Position',3, ... 'Enable','Off','Separator','Off','Tag','Export',... 'Callback',[mfilename '(''Export_Callback'',gcbo,[],guidata(gcbo));']... ); % Add Help for Tool. %------------------ wfighelp('addHelpTool',hFig,getWavMSG('Wavelet:divGUIRF:FBM_HLP'),'WFBM_GUI'); % Menu handles. %---------------- hdl_Menus = struct('m_files',m_files,'m_save',m_save, ... 'm_close',m_close,'m_exp_sig',m_exp_sig); %=========================================================================% % END Internal Functions % %=========================================================================% %=========================================================================% % BEGIN Demo Utilities % % --------------------- % %=========================================================================% function closeDEMO(hFig,eventdata,handles,varargin) %#ok<INUSD,DEFNU> close(hFig); %---------------------------------------------------------- function demoPROC(hFig,eventdata,handles,varargin) %#ok<INUSL,DEFNU> % Initialization for next plot tool_PARAMS = wtbxappdata('get',hFig,'tool_PARAMS'); tool_PARAMS.demoMODE = 'on'; wtbxappdata('set',hFig,'tool_PARAMS',tool_PARAMS ); set(hFig,'HandleVisibility','On') handles = guidata(hFig); paramDEM = varargin{1}; hFbmVal = paramDEM{1,1}; typeDEM = paramDEM{1,2}; hdl_WinFbmStat = wtbxappdata('get',hFig,'hdl_WinFbmStat'); if ishandle(hdl_WinFbmStat) , delete(hdl_WinFbmStat); end switch typeDEM case 'generate' Pus_Generate = handles.Pus_Generate; Edi_Fractal_Index = handles.Edi_Fractal_Index; Sli_Fractal_Index = handles.Sli_Fractal_Index; set(Sli_Fractal_Index,'Value',hFbmVal); set(Edi_Fractal_Index,'String',num2str(hFbmVal)); Pus_Generate_Callback(Pus_Generate,eventdata,handles); case 'statistics' Pus_Statistics = handles.Pus_Statistics; OldFig = allchild(0); Pus_Statistics_Callback(Pus_Statistics,eventdata,handles); NewFig = allchild(0); hdl_WinFbmStat = setdiff(NewFig,OldFig); wfigmngr('modify_FigChild',hFig,hdl_WinFbmStat); wtbxappdata('set',hFig,'hdl_WinFbmStat',hdl_WinFbmStat); end set(hFig,'HandleVisibility','Callback') %---------------------------------------------------------- function Men_Example_Callback(hObject,eventdata,handles,varargin) %#ok<DEFNU> numEX = get(hObject,'Position'); switch numEX case 1 , hFbmVal = 0.2; case 2 , hFbmVal = 0.5; case 3 , hFbmVal = 0.9; end hdl_WinFbmStat = wtbxappdata('get',hObject,'hdl_WinFbmStat'); if ishandle(hdl_WinFbmStat) , delete(hdl_WinFbmStat); end % Create a random number stream using the specified seed, save the old default % stream, and make the new stream the default Rad_Value = handles.Rad_Value; Edi_Value = handles.Edi_Value; Rad_Value_Callback(Rad_Value,eventdata,handles); randNUM = numEX; set(Edi_Value,'String',int2str(randNUM)); stream = RandStream('shr3cong','seed',randNUM); savedDfltStream = RandStream.setGlobalStream(stream); % Generate FBM. Pus_Generate = handles.Pus_Generate; Edi_Fractal_Index = handles.Edi_Fractal_Index; Sli_Fractal_Index = handles.Sli_Fractal_Index; set(Sli_Fractal_Index,'Value',hFbmVal); set(Edi_Fractal_Index,'String',num2str(hFbmVal)); Pus_Generate_Callback(Pus_Generate,eventdata,handles); % Restore the default stream RandStream.setGlobalStream(savedDfltStream) %=========================================================================% % END Tool Demo Utilities % %=========================================================================%