www.gusucode.com > wavelet 源码程序 matlab案例代码 > wavelet/dguiwp2d.m

    function varargout = dguiwp2d(varargin)
%DGUIWP2D Shows 2-D wavelet packet GUI tools in the Wavelet Toolbox.
%
% This is a slideshow file for use with wshowdrv.m
% To see it run, type 'wshowdrv dguiwp2d',
%
%   See also WPDEC2, WPREC2.

%   M. Misiti, Y. Misiti, G. Oppenheim, J.M. Poggi 12-Mar-96.
%   Last Revision: 23-May-2012.
%   Copyright 1995-2012 The MathWorks, Inc.

% Initialization and Local functions if necessary.
if nargin>0
    action = varargin{1};
    switch action
        case 'auto'    , wshowdrv('#autoMode',mfilename,'close');
        case 'gr_auto' , wshowdrv('#gr_autoMode',mfilename,'close');
            
        case 'getFigParam'
            figName  = getWavMSG('Wavelet:wavedemoMSGRF:DGUI_WP2D');
            showType = 'command';
            varargout = {figName,showType};
            
        case 'slidePROC_Init'
            figHandle = varargin{2};
            localPARAM = wtbxappdata('get',figHandle,'localPARAM');
            if ~isempty(localPARAM)
                active_fig = localPARAM{1};
                delete(active_fig);
                wtbxappdata('del',figHandle,'localPARAM');
            end
            
        case 'slidePROC'
            [figHandle,idxSlide]  = deal(varargin{2:end});
            localPARAM = wtbxappdata('get',figHandle,'localPARAM');
            if isempty(localPARAM)
                active_fig = wp2dtool;
                tag_sli_size = 'Sli_Size';
                tag_sli_pos  = 'Sli_Pos';
                sli_handles  = findobj(active_fig,'Style','slider');
                sli_size     = findobj(sli_handles,'Tag',tag_sli_size);
                sli_pos      = findobj(sli_handles,'Tag',tag_sli_pos);
                set([sli_size;sli_pos],'Visible','off');
                wp2dmngr('demo',active_fig,'noiswom','sym4',2,'shannon');
                wenamngr('Inactive',active_fig);
                tag_nodlab   = 'Pop_NodLab';
                tag_nodact   = 'Pop_NodAct';
                tag_nodsel   = 'Pus_NodSel';
                tag_pus_full = char(...
                    'Pus_Full.1','Pus_Full.2',...
                    'Pus_Full.3','Pus_Full.4'...
                    ); %#ok<*VCAT>
                tag_axe_t_lin = 'Axe_TreeLines';
                tag_txt_in_t  = 'Txt_In_tree';
                tag_axe_pack = 'Axe_Pack';
                pop_handles  = findobj(active_fig,'Style','popupmenu');
                pus_handles  = findobj(active_fig,'Style','pushbutton');
                pop_nodlab   = findobj(pop_handles,'Tag',tag_nodlab);
                pop_nodact   = findobj(pop_handles,'Tag',tag_nodact);
                pus_full     = findobj(pus_handles,'Tag',tag_pus_full(2,:));
                pus_nodsel   = findobj(pus_handles,'Tag',tag_nodsel);
                cba_nodlab   = get(pop_nodlab,'Callback');
                cba_nodact   = get(pop_nodact,'Callback');
                cba_nodsel   = get(pus_nodsel,'Callback');
                cba_full     = get(pus_full,'Callback');
                axe_handles  = findobj(active_fig,'Type','axes');
                WP_Axe_Tree  = findobj(axe_handles,'flat','Tag',tag_axe_t_lin);
                WP_Axe_Pack  = findobj(axe_handles,'flat','Tag',tag_axe_pack);
                figTMP        = [];
                localPARAM = {active_fig,pop_nodlab,cba_nodlab,cba_full,...
                    pop_nodact,cba_nodact,cba_nodsel,WP_Axe_Tree,WP_Axe_Pack,tag_txt_in_t,...
                    figTMP};
                wtbxappdata('set',figHandle,'localPARAM',localPARAM);
                wshowdrv('#modify_cbClose',figHandle,active_fig,'wp1dtool');
            else
                [active_fig,pop_nodlab,cba_nodlab,cba_full,pop_nodact,cba_nodact,...
                    cba_nodsel,WP_Axe_Tree,WP_Axe_Pack,tag_txt_in_t,figTMP] = deal(localPARAM{:});
            end
            idxPREV = wshowdrv('#get_idxSlide',figHandle);
            switch idxSlide
                case 2
                    if idxPREV>idxSlide
                        set(pop_nodlab,'Value',1);
                        eval(cba_nodlab);
                    end
                    
                case 3
                    if idxPREV<idxSlide
                        msg = getWavMSG('Wavelet:wavedemoMSGRF:dguiwp1d_MSG_1');
                        wshowdrv('#gui_wait',figHandle,active_fig,msg);
                        set(pop_nodlab,'Value',2);
                        eval(cba_nodlab);
                    else
                        set(pop_nodact,'Value',5);
                        eval(cba_nodact);
                        delete(allchild(WP_Axe_Pack));
                        title(getWavMSG('Wavelet:wavedemoMSGRF:Nod_Act_Res'), ...
                                'Parent',WP_Axe_Pack);
                    end
                    
                case 4
                    if idxPREV<idxSlide
                        msg = getWavMSG('Wavelet:wavedemoMSGRF:dguiwp2d_MSG_1');
                        wshowdrv('#gui_wait',figHandle,active_fig,msg);
                        set(pop_nodact,'Value',4);
                        msg = getWavMSG('Wavelet:wavedemoMSGRF:dguiwp2d_MSG_2');
                        wshowdrv('#gui_wait',figHandle,active_fig,msg);
                        eval(cba_nodact);
                        Tree_txt = findobj(WP_Axe_Tree,'Type','text','Tag',tag_txt_in_t);
                        for num = [5 2 3]
                            hdl_node = findobj(Tree_txt,'UserData',num);
                            cba_node = get(hdl_node,'ButtonDownFcn');
                            set(active_fig,'CurrentObject',hdl_node);
                            eval(cba_node);
                        end
                        msg = getWavMSG('Wavelet:wavedemoMSGRF:dguiwp2d_MSG_3');
                        wshowdrv('#gui_wait',figHandle,active_fig,msg);
                        eval(cba_nodsel)
                    else
                        eval(cba_full);
                    end
                    
                case 5
                    msg = getWavMSG('Wavelet:wavedemoMSGRF:dguiwp2d_MSG_4');
                    wshowdrv('#gui_wait',figHandle,active_fig,msg);
                    eval(cba_full);
                    
                case 6
                    if idxPREV<idxSlide
                        eval(cba_full);
                    else
                        set(pop_nodact,'Value',4);
                        eval(cba_nodact);
                        Tree_txt = findobj(WP_Axe_Tree,'Type','text','Tag',tag_txt_in_t);
                        for num = [5 2 3]
                            hdl_node = findobj(Tree_txt,'UserData',num);
                            cba_node = get(hdl_node,'ButtonDownFcn');
                            set(active_fig,'CurrentObject',hdl_node);
                            eval(cba_node);
                        end
                    end
                    
                case 7
                    if idxPREV<idxSlide
                        msg = getWavMSG('Wavelet:wavedemoMSGRF:dguiwp2d_MSG_5');
                        wshowdrv('#gui_wait',figHandle,active_fig,msg);
                        set(pop_nodact,'Value',5);
                        eval(cba_nodact);
                    else
                        delete(figTMP); modify_localPARAM(figHandle,localPARAM,[]);
                    end
                    
                case 8
                    if idxPREV<idxSlide
                        msg = getWavMSG('Wavelet:wavedemoMSGRF:dguicomp_MSG_1');
                        wshowdrv('#gui_wait',figHandle,active_fig,msg);
                        figTMP = wp2dmngr('comp',active_fig);
                        modify_localPARAM(figHandle,localPARAM,figTMP);
                        wenamngr('Inactive',figTMP);
                        msg = getWavMSG('Wavelet:wavedemoMSGRF:dguicomp_MSG_3');
                        wshowdrv('#gui_wait',figHandle,figTMP,msg);
                        wp2dcomp('compress',figTMP,active_fig);
                    else
                        delete(figTMP); modify_localPARAM(figHandle,localPARAM,[]);
                    end
                    
                case 9
                    delete(figTMP); modify_localPARAM(figHandle,localPARAM,[]);
                    wp2dmngr('return_comp',active_fig,0);
                    wenamngr('Inactive',active_fig);
                    msg = getWavMSG('Wavelet:wavedemoMSGRF:dguideno_MSG_1');
                    wshowdrv('#gui_wait',figHandle,active_fig,msg);
                    figTMP = wp2dmngr('deno',active_fig);
                    modify_localPARAM(figHandle,localPARAM,figTMP);
                    wenamngr('Inactive',figTMP);
                    msg = getWavMSG('Wavelet:wavedemoMSGRF:dguideno_MSG_3');
                    wshowdrv('#gui_wait',figHandle,figTMP,msg);
                    wp2ddeno('denoise',figTMP,active_fig);
                    
                case 10
                    delete(figTMP); modify_localPARAM(figHandle,localPARAM,[]);
                    wp2dmngr('return_deno',active_fig,0);
                    wenamngr('Inactive',active_fig);
                    msg = getWavMSG('Wavelet:wavedemoMSGRF:dguiwp2d_MSG_6');
                    wshowdrv('#gui_wait',figHandle,active_fig,msg);
                    set(pop_nodact,'Value',6);
                    eval(cba_nodact);
                    figTMP = wp2dstat('create',active_fig,1);
                    modify_localPARAM(figHandle,localPARAM,figTMP);
                    wp2dstat('demo',figTMP);
                    wenamngr('Inactive',figTMP);
                    
                case 11
                    delete(figTMP); modify_localPARAM(figHandle,localPARAM,[]);
                    pause(2)
            end
    end
    return
end

if nargout<1,
    wshowdrv(mfilename)
else
    idx = 0;	slide(1).code = {}; slide(1).text = {};
    
    %========== Slide 1 ==========
    idx = idx+1;
    slide(idx).code = {
        'figHandle = gcf;'
        [mfilename ,'(''slidePROC_Init'',figHandle);']
        '' };
    
    %========== Slide 2 to Slide 11 ==========
    for idx = 2:11
        slide(idx).code = {[mfilename ,'(''slidePROC'',figHandle,',int2str(idx),');']};
    end
    
    varargout{1} = slide;
    
end


%------------------------------------------------------------------------------------------%
function modify_localPARAM(figHandle,localPARAM,figTMP)

localPARAM{end} = figTMP;
wtbxappdata('set',figHandle,'localPARAM',localPARAM);
%------------------------------------------------------------------------------------------%