dguiwp1d.m
上传用户:haiyisale
上传日期:2013-01-09
资源大小:3246k
文件大小:10k
源码类别:

波变换

开发平台:

Matlab

  1. function varargout = dguiwp1d(varargin)
  2. %DGUIWP1D Demonstrates 1-D wavelet packet GUI tools in the Wavelet Toolbox.
  3. %
  4. % This is a slideshow file for use with wshowdrv.m
  5. % To see it run, type 'wshowdrv dguiwp1d', 
  6. %   
  7. %   See also WPDEC, WPREC.
  8. %   M. Misiti, Y. Misiti, G. Oppenheim, J.M. Poggi 12-Mar-96.
  9. %   Last Revision: 03-Feb-2003.
  10. %   Copyright 1995-2004 The MathWorks, Inc.
  11. % $Revision: 1.13.4.2 $
  12. % Initialization and Local functions if necessary.
  13. if nargin>0
  14. action = varargin{1};
  15. switch action
  16.   case 'auto'    , wshowdrv('#autoMode',mfilename,'close');
  17.   case 'gr_auto' , wshowdrv('#gr_autoMode',mfilename,'close');
  18.   case 'getFigParam'
  19. figName  = 'Wavelet GUI Demo: Wavelet Packet 1-D';
  20. showType = 'command';
  21. varargout = {figName,showType};
  22.   case 'slidePROC_Init'
  23.   figHandle = varargin{2};
  24.   localPARAM = wtbxappdata('get',figHandle,'localPARAM');
  25.   if ~isempty(localPARAM)
  26.   active_fig = localPARAM{1};
  27.   delete(active_fig);
  28.   wtbxappdata('del',figHandle,'localPARAM');
  29.   end
  30.   
  31.   case 'slidePROC'
  32. [figHandle,idxSlide]  = deal(varargin{2:end});
  33.     localPARAM = wtbxappdata('get',figHandle,'localPARAM');
  34.     if isempty(localPARAM)
  35. active_fig = wp1dtool;
  36. tag_sli_size = 'Sli_Size';
  37. tag_sli_pos  = 'Sli_Pos';
  38. sli_handles  = findobj(active_fig,'style','slider');
  39. sli_size     = findobj(sli_handles,'Tag',tag_sli_size);
  40. sli_pos      = findobj(sli_handles,'Tag',tag_sli_pos);
  41. set([sli_size;sli_pos],'visible','off');
  42. wp1dmngr('demo',active_fig,'noischir','db3',4,'threshold',0.2);
  43. wenamngr('Inactive',active_fig);
  44. tag_pus_btree   = 'Pus_Btree';
  45. tag_inittree    = 'Pus_InitTree';
  46. tag_wavtree     = 'Pus_WavTree';
  47. tag_nodlab      = 'Pop_NodLab';
  48. tag_nodact      = 'Pop_NodAct';
  49. tag_pus_full    = strvcat(...
  50. 'Pus_Full.1','Pus_Full.2',...
  51. 'Pus_Full.3','Pus_Full.4'...
  52. );
  53. tag_pop_colm    = 'Txt_PopM';
  54. tag_axe_t_lin   = 'Axe_TreeLines';
  55. tag_txt_in_t    = 'Txt_In_tree';
  56. pop_handles     = findobj(active_fig,'style','popupmenu');
  57. pus_handles     = findobj(active_fig,'style','pushbutton');
  58. pus_inittree    = findobj(pus_handles,'Tag',tag_inittree);
  59. pus_wavtree     = findobj(pus_handles,'Tag',tag_wavtree);
  60. pus_btree       = findobj(pus_handles,'Tag',tag_pus_btree);
  61. pus_full        = findobj(pus_handles,'tag',tag_pus_full(4,:));
  62. pop_nodlab      = findobj(pop_handles,'Tag',tag_nodlab);
  63. pop_nodact      = findobj(pop_handles,'Tag',tag_nodact);
  64. pop_colm        = findobj(pop_handles,'Tag',tag_pop_colm);
  65. cba_inittree    = get(pus_inittree,'Callback');
  66. cba_wavtree     = get(pus_wavtree,'Callback');
  67. cba_btree       = get(pus_btree,'Callback');
  68. cba_full        = get(pus_full,'Callback');
  69. cba_colm        = get(pop_colm,'Callback');
  70. cba_nodlab      = get(pop_nodlab,'Callback');
  71. cba_nodact      = get(pop_nodact,'Callback');
  72. axe_handles     = findobj(active_fig,'type','axes');
  73. WP_Axe_Tree = findobj(axe_handles,'flat','Tag',tag_axe_t_lin);
  74. figTMP        = [];
  75. localPARAM = {active_fig,pop_nodlab,cba_nodlab,cba_wavtree,...
  76.       cba_inittree,cba_btree,cba_full,...
  77.   pop_nodact,cba_nodact,WP_Axe_Tree,tag_txt_in_t,...
  78.   pop_colm,cba_colm,figTMP};
  79. wtbxappdata('set',figHandle,'localPARAM',localPARAM);
  80. wshowdrv('#modify_cbClose',figHandle,active_fig,'wp1dtool');
  81. else
  82. [active_fig,pop_nodlab,cba_nodlab,cba_wavtree,...
  83.  cba_inittree,cba_btree,cba_full,...
  84.  pop_nodact,cba_nodact,WP_Axe_Tree,tag_txt_in_t,...
  85.  pop_colm,cba_colm,figTMP] = deal(localPARAM{:});
  86. end
  87. idxPREV = wshowdrv('#get_idxSlide',figHandle);
  88. switch idxSlide
  89.   case 2
  90.   if idxPREV>idxSlide
  91.   set(pop_nodlab,'value',1);
  92.   eval(cba_nodlab);
  93.   end
  94.   case 3
  95.   msg = strvcat(...
  96.   ['To change the Node Label use the corresponding popupmenu ' ...
  97.   'in the middle of the window.'], ...
  98.   'The default labelling is the depth-position labelling', ...
  99.   'We select the indices labelling.'  ...
  100.   );
  101.   wshowdrv('#gui_wait',figHandle,active_fig,msg); 
  102.   set(pop_nodlab,'value',2);
  103.   eval(cba_nodlab);
  104.   case 4
  105.   msg = strvcat('We select the entropy labelling which gives the entropy of each packet');
  106.   wshowdrv('#gui_wait',figHandle,active_fig,msg); 
  107.   set(pop_nodlab,'value',3);
  108.   eval(cba_nodlab);
  109.   case 5
  110.   msg = strvcat('We select the length labelling which gives the length of each packet');
  111.   wshowdrv('#gui_wait',figHandle,active_fig,msg); 
  112.   set(pop_nodlab,'value',5);
  113.   eval(cba_nodlab);
  114.   
  115.   case 6
  116.   if idxPREV<idxSlide
  117.   msg = strvcat('We go back to the depth-position labelling.');
  118.   wshowdrv('#gui_wait',figHandle,active_fig,msg); 
  119.   set(pop_nodlab,'value',1);
  120.   eval(cba_nodlab);
  121.   else
  122.   eval(cba_inittree);
  123.   end
  124.   case 7
  125.   msg = ['We extract the Wavelet tree using the corresponding pushbutton ' ...
  126.   'in the middle of the window.'];
  127.   wshowdrv('#gui_wait',figHandle,active_fig,msg); 
  128.   eval(cba_wavtree);
  129.   case 8
  130.   msg = ['We restore the Initial tree using the corresponding pushbutton ' ...
  131.   'in the middle of the window.'];
  132.   wshowdrv('#gui_wait',figHandle,active_fig,msg); 
  133.   eval(cba_inittree);
  134.   case 9
  135.   msg = ['We Compute the Best tree using the corresponding pushbutton ' ...
  136.   'in the middle of the window.'];
  137.   wshowdrv('#gui_wait',figHandle,active_fig,msg); 
  138.   eval(cba_btree);
  139.   case 10
  140.   if idxPREV<idxSlide
  141.   eval(cba_inittree);
  142.   else
  143.   eval(cba_full);
  144.   end
  145.   
  146.   case 11
  147.   msg = strvcat(...
  148.   'The four pushbuttons labelled [1 2 3 4] in the middle of the window', ...
  149.   'allow to see Full Size for one of the four axes.', ...
  150.   'Let''s display the coefficients (button 4) Full Size.' ...
  151.   );
  152.   wshowdrv('#gui_wait',figHandle,active_fig,msg); 
  153.   eval(cba_full);
  154.   case 12
  155.   if idxPREV<idxSlide
  156.   msg = 'We restore the previous display.';
  157.   wshowdrv('#gui_wait',figHandle,active_fig,msg); 
  158.   eval(cba_full);
  159.   else
  160.   set(pop_colm,'value',1);
  161.   eval(cba_colm);
  162.   end
  163.   case 13
  164.   msg = strvcat(...
  165.   ['To change the Coloration Mode use the popupmenu at the bottom ' ...
  166.   'of the window.'], ...
  167.   'Eight coloration modes are available.', ...
  168.   'Four are based on the frequency order of the packets,', ...
  169.   'The other four are based on the natural order of the packets.', ...
  170.   'We select the natural order : by level and with abs. value of coefficients.' ...
  171.   );
  172.   wshowdrv('#gui_wait',figHandle,active_fig,msg); 
  173.   set(pop_colm,'value',5);
  174.   eval(cba_colm);
  175.   case 14
  176.   if idxPREV<idxSlide
  177.   msg = 'We restore the frequency order : global with abs. value of coefficients.';
  178.   wshowdrv('#gui_wait',figHandle,active_fig,msg); 
  179.   set(pop_colm,'value',1);
  180.   eval(cba_colm);
  181.   else
  182.   eval(cba_inittree);
  183.   end
  184.   case 15
  185.   msg = 'We change Node Action to Split-Merge and we merge the node (1,1) or 2.';
  186.   wshowdrv('#gui_wait',figHandle,active_fig,msg); 
  187.   set(pop_nodact,'value',2);
  188.   eval(cba_nodact);
  189.   Tree_txt = findobj(WP_Axe_Tree,'type','text','tag',tag_txt_in_t);
  190.   hdl_node = findobj(Tree_txt,'userdata',2);
  191.   cba_node = get(hdl_node,'ButtonDownFcn');
  192.   set(active_fig,'CurrentObject',hdl_node);
  193.   eval(cba_node);
  194.   case 16
  195.   if idxPREV<idxSlide
  196.   msg = ['We restore the Initial tree using the corresponding pushbutton ' ...
  197.  'in the middle of the window.'];
  198.   wshowdrv('#gui_wait',figHandle,active_fig,msg); 
  199.   eval(cba_inittree);
  200.   else
  201.   delete(figTMP); modify_localPARAM(figHandle,localPARAM,[]);
  202.   end
  203.   
  204.   case 17
  205.   if idxPREV<idxSlide
  206.   msg = 'The Compress pushbutton is used to call the compression tool.';
  207.   wshowdrv('#gui_wait',figHandle,active_fig,msg); 
  208.   figTMP = wp1dmngr('comp',active_fig);
  209.   modify_localPARAM(figHandle,localPARAM,figTMP);
  210.   wenamngr('Inactive',figTMP);
  211.   msg = 'We compress the signal with the default options.';
  212.   wshowdrv('#gui_wait',figHandle,figTMP,msg); 
  213.   wp1dcomp('compress',figTMP,active_fig);
  214.   else
  215.   delete(figTMP); modify_localPARAM(figHandle,localPARAM,[]);
  216.   end
  217.   
  218.   
  219.   case 18
  220.   delete(figTMP); modify_localPARAM(figHandle,localPARAM,[]);
  221.   wp1dmngr('return_comp',active_fig,0);
  222.   wenamngr('Inactive',active_fig);
  223.   msg = 'The De-noise pushbutton is used to call the de-noising tool.';
  224.   wshowdrv('#gui_wait',figHandle,active_fig,msg); 
  225.   figTMP = wp1dmngr('deno',active_fig);
  226.   modify_localPARAM(figHandle,localPARAM,figTMP);
  227.   wenamngr('Inactive',figTMP);
  228.   msg = 'We de-noise the signal with the default options.';
  229.   wshowdrv('#gui_wait',figHandle,figTMP,msg); 
  230.   wp1ddeno('denoise',figTMP,active_fig);
  231.   
  232.   case 19
  233.   delete(figTMP); modify_localPARAM(figHandle,localPARAM,[]);
  234.   wp1dmngr('return_deno',active_fig,0);
  235.   wenamngr('Inactive',active_fig);
  236.   msg = 'The Statistics information for the node 1 are displayed clicking on the node.';
  237.   wshowdrv('#gui_wait',figHandle,active_fig,msg); 
  238.   set(pop_nodlab,'value',2);
  239.   eval(cba_nodlab);
  240.   set(pop_nodact,'value',6);
  241.   eval(cba_nodact);
  242.   figTMP = wp1dstat('create',active_fig,1);
  243.   modify_localPARAM(figHandle,localPARAM,figTMP);
  244.   wp1dstat('demo',figTMP);
  245.   wenamngr('Inactive',figTMP);
  246.   case 20
  247.   delete(figTMP); modify_localPARAM(figHandle,localPARAM,[]);
  248.   pause(2)
  249. end
  250. end
  251. return
  252. end
  253. if nargout<1,
  254.   wshowdrv(mfilename)
  255. else
  256.   idx = 0; slide(1).code = {}; slide(1).text = {};
  257.   
  258.   %========== Slide 1 ==========
  259.   idx = idx+1;
  260.   slide(idx).code = {
  261.   'figHandle = gcf;',
  262.   [mfilename ,'(''slidePROC_Init'',figHandle);'],
  263.   '' };
  264.   
  265.   %========== Slide 2 to Slide 20 ==========
  266.   for idx = 2:20
  267.     slide(idx).code = {[mfilename ,'(''slidePROC'',figHandle,',int2str(idx),');']};
  268.   end
  269.   
  270.   varargout{1} = slide;
  271.   
  272. end
  273. %------------------------------------------------------------------------------------------%
  274. function modify_localPARAM(figHandle,localPARAM,figTMP)
  275. localPARAM{end} = figTMP;
  276. wtbxappdata('set',figHandle,'localPARAM',localPARAM);    
  277. %------------------------------------------------------------------------------------------%