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

波变换

开发平台:

Matlab

  1. function varargout = dcmddw1d(varargin)
  2. %DCMDDW1D Demonstrates discrete 1-D wavelet tools in the Wavelet Toolbox.
  3. %
  4. % This is a slideshow file for use with wshowdrv.m
  5. % To see it run, type 'wshowdrv dcmddw1d', 
  6. %
  7. % See also APPCOEF, DETCOEF, DWT, IDWT, UPCOEF,
  8. %          WAVEDEC, WAVEREC, WRCOEF. 
  9. %   M. Misiti, Y. Misiti, G. Oppenheim, J.M. Poggi 12-Mar-96.
  10. %   Last Revision: 01-Jun-2001.
  11. %   Copyright 1995-2002 The MathWorks, Inc.
  12. %   $Revision: 1.14 $
  13. % Initialization and Local functions if necessary.
  14. if nargin>0
  15. action = varargin{1};
  16. switch action
  17.       case 'addHelp'
  18. % Add Help Item.
  19. %---------------
  20.         hdlFig = varargin{2};
  21. wfighelp('addHelpItem',hdlFig,'Wavelet Decomposition','DW1D_DECOMPOS');
  22.           
  23.   case 'auto'    , wshowdrv('#autoMode',mfilename,'close');
  24.   case 'gr_auto' , wshowdrv('#gr_autoMode',mfilename,'close');
  25.   case 'getFigParam'
  26. figName  = 'Orthogonal Wavelets 1-D';
  27. showType = 'mix6';
  28. varargout = {figName,showType};
  29. end
  30. return
  31. end
  32. if nargout<1,
  33.   wshowdrv(mfilename)
  34. else
  35.   idx = 0;
  36.   %========== Slide 1 ==========
  37.   idx = idx+1;
  38.   slide(idx).code = {
  39. 'figHandle = gcf;',
  40. 'ax = findall(figHandle,''type'',''axes''); delete(ax); drawnow; h = [];',   
  41. '' };
  42.   slide(idx).text = {
  43. '',
  44. ' Press the "Start" button to see a demonstration of',
  45. ' 1-D wavelet tools.',
  46. '',
  47. ' This demo uses Wavelet Toolbox functions.',
  48. ''};
  49.   %========== Slide 2 ==========
  50.   idx = idx+1;
  51.   slide(idx).code = {
  52. 'ax = findall(figHandle,''type'',''axes''); delete(ax); drawnow;  h = [];',   
  53. 'load leleccum; s = leleccum(1:3920);',
  54. 'ls = length(s);',
  55. 'clear leleccum',
  56. 'h(1) = subplot(2,1,1); plot(1:ls,s,''r'')',
  57. 'title(''Original signal s.'');',
  58. 'set(h(1),''Xlim'',[1,ls]);',
  59. '' };
  60.   slide(idx).text = {
  61. ' % Load original 1D signal.',
  62. '',
  63. '        load leleccum; s = leleccum(1:3920);',
  64. '        ls = length(s);',
  65. ''};
  66.   %========== Slide 3 ==========
  67.   idx = idx+1;
  68.   slide(idx).code = {
  69. '[ca1,cd1] = dwt(s,''db1'');',
  70. 'ax = findall(figHandle,''type'',''axes''); delete(ax); drawnow; h = [];',   
  71. 'h(1) = subplot(2,1,1); plot(1:ls,s,''r'')',
  72. 'title(''Original signal s.'');',
  73. 'set(h(1),''Xlim'',[1,ls]);',
  74. 'h(3) = subplot(2,2,3); plot(1:length(ca1),ca1);',
  75. 'title(''Approx. coef. : ca1'');',
  76. 'set(h(3),''Xlim'',[1,length(ca1)]);',  
  77. 'h(4) = subplot(2,2,4); plot(1:length(cd1),cd1);',
  78. 'title(''Detail coef. : cd1'');',
  79. 'set(h(4),''Xlim'',[1,length(cd1)]);',   
  80. '' };
  81.   slide(idx).text = {
  82. ' % Perform one step decomposition of s using db1.',
  83. '',
  84.   '        [ca1,cd1] = dwt(s,''db1'');',
  85. ''};
  86.   slide(idx).info = 'dwt';
  87.   %========== Slide 4 ==========
  88.   idx = idx+1;
  89.   slide(idx).code = {
  90. 'a1 = upcoef(''a'',ca1,''db1'',1,ls);',
  91.     'd1 = upcoef(''d'',cd1,''db1'',1,ls);',
  92. 'ax = findall(figHandle,''type'',''axes''); delete(ax); drawnow;  h = [];',   
  93. 'h(1) = subplot(3,1,1); plot(1:ls,s,''r'');',
  94. 'title(''Original signal s.'');',
  95. 'h(2) = subplot(3,1,2); plot(1:ls,a1);',
  96. 'title(''Approximation : a1.'');',
  97. 'h(3) = subplot(3,1,3); plot(1:ls,d1);',
  98. 'title(''Detail : d1.'');',
  99. 'set(h(1:2),''Xtick'',[],''Xticklabel'',[]);', 
  100. 'set(h,''Xlim'',[1,ls]);', 
  101. ''};
  102.   slide(idx).text = {
  103. ' % Perform one step reconstruction of  ca1 and cd1.',
  104. '',
  105. '        a1 = upcoef(''a'',ca1,''db1'',1,ls);',
  106. '        d1 = upcoef(''d'',cd1,''db1'',1,ls);',
  107. ''};
  108.   slide(idx).info = 'upcoef';
  109.   %========== Slide 5 ==========
  110.   idx = idx+1;
  111.   slide(idx).code = {
  112. 'ax = findall(figHandle,''type'',''axes''); delete(ax); drawnow;  h = [];',   
  113. 'h(1) = subplot(3,1,1); plot(1:ls,s,''r'');',
  114. 'title(''Original signal s.'');',
  115. 'h(2) = subplot(3,1,2); plot(1:ls,a1+d1);',
  116. 'title(''Approximation + detail : a1  + d1.'');',
  117. 'set(h(1),''Xtick'',[],''Xticklabel'',[]);',
  118. 'set(h,''Xlim'',[1,ls]);', 
  119. ''};
  120.   slide(idx).text = {
  121. ' % Now plot a1 + d1.',
  122. ''};
  123.   slide(idx).info = 'upcoef';
  124.   %========== Slide 6 ==========
  125.   idx = idx+1;
  126.   slide(idx).code = {
  127. 'a0 = idwt(ca1,cd1,''db1'',ls);',
  128.   
  129. 'ax = findall(figHandle,''type'',''axes''); delete(ax); drawnow;  h = [];',   
  130. 'h(1) = subplot(3,1,1); plot(1:ls,s,''r'');',
  131. 'title(''Original signal s.'');',
  132. 'h(2) = subplot(3,1,2); plot(1:ls,a1+d1);',
  133. 'title(''Approximation + detail : a1  + d1.'');',
  134. 'set(h(1:2),''Xtick'',[],''Xticklabel'',[]);',
  135.   
  136. 'h(3) = subplot(3,1,3); plot(1:ls,a0);',
  137. 'title(''Reconstructed signal : a0.'');',
  138. 'set(h,''Xlim'',[1,ls]);', 
  139. ''};
  140.   slide(idx).text = {
  141. ' % Invert directly decomposition of s using coefficients.',
  142. '',
  143. '        a0 = idwt(ca1,cd1,''db1'',ls);',
  144. ''};
  145.   slide(idx).info = 'idwt';
  146.   %========== Slide 7 ==========
  147.   idx = idx+1;
  148.   slide(idx).code = {
  149. 'ax = findall(figHandle,''type'',''axes''); delete(ax); drawnow;  h = [];',   
  150. '[c,l] = wavedec(s,3,''db1'');',
  151. 'h(1) = subplot(5,1,1); plot(1:ls,s,''r'');',
  152. 'title(''Original signal s.'');',
  153. 'set(h,''Xlim'',[1,ls]);', 
  154. ''};
  155.   slide(idx).text = {
  156. ' % Perform decomposition at level 3 of s using db1.',
  157. '',
  158. '        [c,l] = wavedec(s,3,''db1'');',
  159. ''};
  160.   slide(idx).info = 'wavedec';
  161.   %========== Slide 8 ==========
  162.   idx = idx+1;
  163.   slide(idx).code = {
  164. 'ca3 = appcoef(c,l,''db1'',3);',      
  165. 'ax = findall(figHandle,''type'',''axes''); delete(ax); drawnow;  h = [];',   
  166. 'h(1) = subplot(5,1,1); plot(1:ls,s,''r'');',
  167. 'set(h(1),''Xtick'',[],''Xticklabel'',[],''Xlim'',[1,ls]);', 
  168. 'h(2) = subplot(5,8,9); plot(1:length(ca3),ca3);',
  169. 'subplot(5,1,1); title(''Original signal s and ca3.'')',
  170. ''};
  171.   slide(idx).text = {
  172. ' % Extract approximation coefficients at level 3,',
  173. ' % from wavelet decomposition structure [c,l].',
  174. '',
  175. '        ca3 = appcoef(c,l,''db1'',3);',
  176. ''};
  177.   slide(idx).info = 'appcoef';
  178.   %========== Slide 9 ==========
  179.   idx = idx+1;
  180.   slide(idx).code = {
  181. 'cd3 = detcoef(c,l,3);',
  182. 'cd2 = detcoef(c,l,2);',      
  183. 'cd1 = detcoef(c,l,1);',
  184. 'ax = findall(figHandle,''type'',''axes''); delete(ax); drawnow;  h = [];',   
  185. 'h(1) = subplot(5,1,1); plot(1:ls,s,''r'');',
  186. 'set(h(1),''Xtick'',[],''Xticklabel'',[],''Xlim'',[1,ls]);', 
  187. 'h(2) = subplot(5,8,9); plot(1:length(ca3),ca3);',
  188. 'subplot(5,1,1); title(''Original signal s , ca3 and cd3.'')',
  189. 'set(h(2),''Xtick'',[],''Xticklabel'',[]);', 
  190. 'h(3) = subplot(5,8,17); plot(1:length(cd3),cd3);',
  191. 'pause(1)',
  192. 'subplot(5,1,1); title(''Original signal s , ca3, cd3 and cd2.'')',
  193. 'set(h(3),''Xtick'',[],''Xticklabel'',[]);', 
  194. 'h(4) = subplot(5,4,13); plot(1:length(cd2),cd2);',
  195. 'pause(1)',
  196. 'subplot(5,1,1); title(''Original signal s , ca3, cd3, cd2 and cd1.'')',
  197. 'set(h(4),''Xtick'',[],''Xticklabel'',[]);', 
  198. 'h(5) = subplot(5,2,9); plot(1:length(cd1),cd1);',
  199. ''};
  200.   slide(idx).text = {
  201. ' % Extract detail coefficients at levels 1, 2 and 3,',
  202. ' % from wavelet decomposition structure [c,l].',
  203. '',
  204. '        cd3 = detcoef(c,l,3);',
  205. '        cd2 = detcoef(c,l,2);',
  206. '        cd1 = detcoef(c,l,1);',
  207. ''};
  208.   slide(idx).info = 'detcoef';
  209.   %========== Slide 10 ==========
  210.   idx = idx+1;
  211.   slide(idx).code = {
  212. 'a3 = wrcoef(''a'',c,l,''db1'',3);',
  213. 'ax = findall(figHandle,''type'',''axes''); delete(ax); drawnow;  h = [];',   
  214. 'h(1) = subplot(5,1,1); plot(s,''r'');',
  215. 'title(''Original signal s and approximation of level 3.'');',
  216. 'h(2) = subplot(5,1,2); plot(1:ls,a3);',
  217. 'set(h(1),''Xtick'',[],''Xticklabel'',[]);',
  218. 'set(h,''Xlim'',[1,ls]);',
  219. ''};
  220.   slide(idx).text = {
  221. ' % Reconstruct approximation at level 3,',
  222.   ' % from wavelet decomposition structure [c,l].',
  223. '',
  224. '        a3 = wrcoef(''a'',c,l,''db1'',3);',
  225. ''};
  226.   slide(idx).info = 'wrcoef';
  227.   %========== Slide 11 ==========
  228.   idx = idx+1;
  229.   slide(idx).code = {
  230. 'd3 = wrcoef(''d'',c,l,''db1'',3);',
  231. 'd2 = wrcoef(''d'',c,l,''db1'',2);',
  232. 'd1 = wrcoef(''d'',c,l,''db1'',1);',
  233. 'ax = findall(figHandle,''type'',''axes''); delete(ax); drawnow;  h = [];',   
  234. 'h(1) = subplot(5,1,1); plot(s,''r'');',
  235. 'title(''Original signal s and a3 d3 d2 d1.'');',
  236. 'h(2) = subplot(5,1,2); plot(1:ls,a3);',
  237. 'h(3) = subplot(5,1,3); plot(1:ls,d3);',
  238. 'h(4) = subplot(5,1,4); plot(1:ls,d2);',
  239. 'h(5) = subplot(5,1,5); plot(1:ls,d1);',
  240. 'set(h(1:4),''Xtick'',[],''Xticklabel'',[]);',
  241. 'set(h,''Xlim'',[1,ls]);',
  242. ''};
  243.   slide(idx).text = {
  244. ' % Reconstruct detail coefficients at levels 1,2 and 3,',
  245. ' % from the wavelet decomposition structure [c,l].',
  246. '',
  247. '        d3 = wrcoef(''d'',c,l,''db1'',3);',
  248. '        d2 = wrcoef(''d'',c,l,''db1'',2);',
  249. '        d1 = wrcoef(''d'',c,l,''db1'',1);',  
  250. ''};
  251.   slide(idx).info = 'wrcoef';
  252.   %========== Slide 12 ==========
  253.   idx = idx+1;
  254.   slide(idx).code = {
  255. 'a0 = waverec(c,l,''db1'');',
  256. 'ax = findall(figHandle,''type'',''axes''); delete(ax); drawnow;  h = [];',   
  257. 'h(1) = subplot(2,1,1); plot(s,''r'');',
  258. 'title(''Original signal s .'');',
  259. 'h(2) = subplot(2,1,2); plot(1:ls,a0);',
  260. 'title(''Reconstructed signal a0.'');',
  261. 'set(h,''Xlim'',[1,ls]);',
  262. ''};
  263.   slide(idx).text = {
  264. ' % Reconstruct s from the wavelet decomposition structure [c,l].',
  265. '',
  266. '        a0 = waverec(c,l,''db1'');',
  267. ''};
  268.   slide(idx).info = 'waverec';
  269.   varargout{1} = slide;
  270. end