www.gusucode.com > wavelet工具箱matlab源码程序 > wavelet/wavelet/wpssnode.m

    function out1 = wpssnode(option,win_wptool,in3,in4,in5,in6)
%WPSSNODE Plot wavelet packets synthesized node.
%   OUT1 = WPSSNODE(OPTION,WIN_WPTOOL,IN3,IN4,IN5,IN6)

%   M. Misiti, Y. Misiti, G. Oppenheim, J.M. Poggi 12-Mar-96.
%   Last Revision: 20-Nov-2011.
%   Copyright 1995-2011 The MathWorks, Inc.

% Image Coding Value.
%-------------------
codemat_v = wimgcode('get');

% Tag property of objects.
%-------------------------
tag_nodact    = 'Pop_NodAct';
tag_ss_node   = 'SS_Node';
tag_ss_obj    = 'SS_Obj';
tag_axe_t_lin = 'Axe_TreeLines';
tag_axe_pack  = 'Axe_Pack';

axe_handles   = findobj(get(win_wptool,'Children'),'flat','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);
SS_text       = findobj(WP_Axe_Tree,'Tag',tag_ss_node);
SS_Obj        = findobj(WP_Axe_Pack,'Tag',tag_ss_obj);

% Miscellaneous Values.
%-------------------------
[txt_color,pack_color,ftn_size] = ...
        wtbutils('wputils','ss_node',get(WP_Axe_Tree,'Xcolor'));

switch option 
    case 'plot'
        % in3 = type ('cs' or 'ds')
        % in4 = dim
        % in5 = handle (line or image)
        % in6 = NB_Col (useful only  for dim = 2)
        %-----------------------------------------
        if (nargin<6) || isempty(in6) , in6 = 128; end
        % axes(WP_Axe_Tree)
        if ~isempty(SS_Obj)
            delete(SS_Obj);
            hdl = get(WP_Axe_Pack,'title');
            col = get(WP_Axe_Pack,'Xcolor');
            set(hdl,'String',getWavMSG('Wavelet:wp1d2dRF:NodActRes'),'Color',col);
        end
        str_txt = ['(' in3 ')'];
        if isempty(SS_text)
            btndown_fcn  = [mfilename '(''cba'',' int2str(win_wptool) ...
                            ',' int2str(in4) ',' int2str(in6) ');'];
            SS_text = text(...
                           'Clipping','on',                ...
                           'String', str_txt,              ...
                           'Position',[0.25 0.1 0],        ...
                           'Color',txt_color,              ...
                           'HorizontalAlignment','center', ...
                           'VerticalAlignment','middle',   ...
                           'FontSize',ftn_size,            ...
                           'FontWeight','bold',            ...
                           'ButtonDownFcn',btndown_fcn,    ...
                           'Parent',WP_Axe_Tree,           ...
                           'Tag',tag_ss_node               ...
                           );
        else
            set(SS_text,'String',str_txt);
        end
        if in4==1
            set(SS_text,'UserData',get(in5,'YData'));
        elseif in4==2
            set(SS_text,'UserData',get(in5,'CData'));
        end

    case 'cba'
        pop_act = findobj(win_wptool,'Tag',tag_nodact);
        v       = get(pop_act,'Value');
        switch v
            case 1 , wpssnode('vis',win_wptool,in3,in4);
            case 6 , wpssnode('stat',win_wptool,in3);
        end

    case 'vis'
        % in3 = dim
        % in4 = NB_Col (useful only  for dim = 2)
        %---------------------------------------

        % Begin waiting.
        %--------------
        wwaiting('msg',win_wptool,getWavMSG('Wavelet:commongui:WaitCompute'));

        dim     = in3;
        NB_Col  = in4;
        if isempty(NB_Col) , NB_Col = 128; end
        ssig_rec = get(SS_text,'UserData');
        siz      = size(ssig_rec);
        type_ss  = get(SS_text,'String');
        if strfind(type_ss,'cs')
            if dim==1 , str_txt = getWavMSG('Wavelet:commongui:CompSig');
            else        str_txt = getWavMSG('Wavelet:commongui:CompImg');
            end
        else
            if dim==1 , str_txt = getWavMSG('Wavelet:commongui:DenoSig');
            else        str_txt = getWavMSG('Wavelet:commongui:DenoImg');
            end
        end
        delete(get(WP_Axe_Pack,'Children'));
        dynvtool('ini_his',win_wptool,1)
        title_Color = mextglob('get','Def_TxtColor');
        if dim==1
            xmax = max(siz);
            if xmax==1 , xmax = 1+0.01; end
            ymin = min(ssig_rec);   ymax = max(ssig_rec);
            if ymin==ymax , ymin = ymin-0.01; ymax = ymax+0.01; end
            plot(ssig_rec,'Parent',WP_Axe_Pack,...
                 'Color',pack_color,'Tag',tag_ss_obj);
            set(WP_Axe_Pack,'XLim',[1 xmax],'YLim',...
                    [ymin ymax],'Tag',tag_axe_pack);
            wtitle(str_txt,'Parent',WP_Axe_Pack,...
                   'FontSize',ftn_size,'Color',title_Color);
        else
            im = wimgcode('cod',0,ssig_rec,NB_Col,codemat_v);
            image('CData',im,'Tag',tag_ss_obj,'Parent',WP_Axe_Pack);
            wtitle(str_txt,'Parent',WP_Axe_Pack,...
                   'FontSize',ftn_size,'Color',title_Color);

            set(WP_Axe_Pack,'Tag',tag_axe_pack,    ...
                            'Layer','top',         ...
                            'XLim',[1 size(im,2)], ...
                            'YLim',[1 size(im,1)], ...
                            'YDir','Reverse'       ...
                            );
        end
        dynvtool('put',win_wptool)
        % axes(WP_Axe_Tree);

        % End waiting.
        %-------------
        wwaiting('off',win_wptool);

    case 'stat'
        dim = in3;
        type_ss = get(SS_text,'String');
        if strfind(type_ss,'cs') , node = -1; else node = -2; end
        switch dim
          case 1 , feval('wp1dstat','create',win_wptool,node);
          case 2 , feval('wp2dstat','create',win_wptool,node);
        end

    case 'r_synt'
        out1 = SS_text;

    case 'del'
        delete(SS_text);
        if ~isempty(SS_Obj)
            delete(SS_Obj);
            hdl = get(WP_Axe_Pack,'title');
            col = get(WP_Axe_Pack,'Xcolor');
            set(hdl,'String',getWavMSG('Wavelet:wp1d2dRF:NodActRes'),'Color',col);
        end
end