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

波变换

开发平台:

Matlab

  1. function varargout = dcmdcasc(varargin)
  2. %DCMDCASC Demonstrates cascade algorithm in the Wavelet Toolbox.
  3. %
  4. % This is a slideshow file for use with wshowdrv.m
  5. % To see it run, type 'wshowdrv dcmdcasc', 
  6. %   
  7. %   See also WAVEFUN.
  8. %   M. Misiti, Y. Misiti, G. Oppenheim, J.M. Poggi 12-Mar-96.
  9. %   Last Revision: 13-Feb-2002.
  10. %   Copyright 1995-2002 The MathWorks, Inc.
  11. % $Revision: 1.14 $
  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  = 'Cascade algorithm';
  20. showType = 'mix9';
  21. varargout = {figName,showType};
  22.   case 'initShowViewer'
  23. figHandle = varargin{2};
  24. slideData = get(figHandle,'Userdata');
  25. autoHndl = slideData.autoHndl;
  26. propAuto = get(autoHndl,{'Units','Position','BackGroundColor'});
  27. txtBkColor = get(slideData.slitxtHndl,'BackGroundColor');
  28. pos  = propAuto{2};
  29. hBtn = pos(4);
  30. pos(2) = pos(2)-2*hBtn;
  31. popstr = strvcat(...
  32. 'sym4','sym8','db3','db5',...
  33. 'db8','coif1','coif5');
  34. txtstr = 'Wavelet';
  35. propUIC = {'Units',propAuto{1},'Position',pos,'BackGroundColor',txtBkColor};
  36. slideData.txtLocHandle = uicontrol('Parent',figHandle,...
  37. 'style','text','String',txtstr,propUIC{:});
  38. pos(2) = pos(2)-hBtn+hBtn/3;
  39. propUIC = {'Units',propAuto{1},'Position',pos,'BackGroundColor',propAuto{3}};
  40. propAuto{2} = pos;
  41. propUIC{4} = propAuto{2};
  42. slideData.popLocHandle = uicontrol('Parent',figHandle,...
  43. 'style','popupmenu','String',popstr,propUIC{:},'Tag','popWave');
  44. set(figHandle,'Userdata',slideData);
  45. end
  46. return
  47. end
  48. if nargout<1,
  49.   wshowdrv(mfilename)
  50. else
  51.   idx = 0;
  52.   %========== Slide 1 ==========
  53.   idx = idx+1;
  54.   slide(idx).code = {
  55. 'figHandle = gcf;' 
  56. 'ax  = findall(figHandle,''type'',''axes''); delete(ax); drawnow; h = [];',
  57. 'popTMP = findobj(figHandle,''style'',''popupmenu'');',
  58. 'set(popTMP,''enable'',''on'');',
  59. '' };
  60.   slide(idx).text = {
  61. '',
  62. sprintf(' Press the "Start" button to see a demonstration of'),
  63. sprintf(' the cascade algorithm in the Wavelet Toolbox.'),
  64. '',
  65. sprintf(' This demo uses Wavelet Toolbox functions.'),
  66. ''};
  67.   %========== Slide 2 ==========
  68.   idx = idx+1;
  69.   slide(idx).code = {
  70. 'pop = findobj(figHandle,''style'',''popupmenu'');',
  71. 'lstWAV = get(pop,''String''); idxWAV = get(pop,''Value'');',
  72. 'set(pop,''enable'',''off'');',
  73. 'wname = deblankl(lstWAV(idxWAV,:));',
  74. 'comma = char(39);',
  75. 'newTXT = [''        wname = '',comma,wname,comma,'';''];';
  76. 'wshowdrv(''#modify_Comment'',figHandle,3,newTXT);',
  77. 'ax = findall(figHandle,''type'',''axes''); delete(ax); h = [];',   
  78. 'strINIT = [''Approximation of the wavelet '' wname];';
  79. 'beg_title = [strINIT ''. Iteration : ''];',
  80. 'iter = 10;',
  81. 'for i = 1:iter',
  82. '    [phi,psi,xval] = wavefun(wname,i);',
  83. '    plot(xval,psi);',
  84. '    hold on',
  85. '  title([beg_title int2str(i)]);',
  86. '    if      i==1 ,           pause(2)',
  87. '    elseif  (1<i) & (i<=4) , pause(1)',
  88. '    else ,                   pause(0.5)',
  89. '    end',
  90. '    drawnow',
  91. 'end',
  92. 'title([strINIT,'' for 1 to '', int2str(iter),'' iterations'']);',
  93. 'linw = 2;',
  94. 'h = plot(xval,psi,''r'',''linewidth'',linw);',
  95. 'drawnow',
  96. 'hold off',
  97. '' };
  98.   slide(idx).text = {
  99. ' % Compute approximations of the wavelet function', 
  100. ' % using the cascade algorithm.',
  101. '        wname = ''sym4'';',
  102. '        iter = 10;',
  103. '        for i = 1:iter',
  104. '            [phi,psi,xval] = wavefun(wname,i);',
  105. '            plot(xval,psi);',
  106. '            hold on',
  107. '            drawnow',
  108. '        end',
  109. ''};
  110.   slide(idx).info = 'wavefun';
  111.   %========== Slide 3 ==========
  112.   idx = idx+1;
  113.   slide(idx).code = {
  114. 'ax = findall(figHandle,''type'',''axes''); delete(ax); h = [];',
  115. 'wshowdrv(''#modify_Comment'',figHandle,3,newTXT);',
  116. 'strINIT = [''Approximation of the wavelet '' wname];';
  117. '[phi,psi,xval] = wavefun(wname,iter);',
  118. 'h = plot(xval,psi,''r'',''linewidth'',linw);',
  119. 'title([strINIT,'' after '',int2str(iter),'' iterations.'']);',
  120. 'drawnow',
  121. '' };
  122.   slide(idx).text = {
  123. ' % Compute approximations of the wavelet function', 
  124. ' % using the cascade algorithm.',
  125. '        wname = ''sym4'';',
  126. '        iter = 10;',
  127. '        [phi,psi,xval] = wavefun(wname,iter);',
  128. '        plot(xval,psi,''r'');',
  129. ''};
  130.   slide(idx).info = 'wavefun';
  131.   varargout{1} = slide;
  132. end