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

波变换

开发平台:

Matlab

  1. function varargout = dcmddeno(varargin)
  2. %DCMDDENO Demonstrates de-noising tools in the Wavelet Toolbox. 
  3. %
  4. % This is a slideshow file for use with wshowdrv.m
  5. % To see it run, type 'wshowdrv dcmddeno', 
  6. %
  7. % See also DDENCMP, WAVEDEC, WCODEMAT, WDEN, WDENCMP, WNOISE.
  8. %   M. Misiti, Y. Misiti, G. Oppenheim, J.M. Poggi 12-Mar-96.
  9. %   Last Revision: 01-Jun-2001.
  10. %   Copyright 1995-2002 The MathWorks, Inc.
  11. % $Revision: 1.16 $
  12. % Initialization and Local functions if necessary.
  13. if nargin>0
  14. action = varargin{1};
  15. switch action
  16.       case 'addHelp'
  17. % Add Help Item.
  18. %---------------
  19.         hdlFig = varargin{2};
  20. wfighelp('addHelpItem',hdlFig,'De-noising Procedure','DENO_PROCEDURE');
  21.         
  22.       case 'auto'    , wshowdrv('#autoMode',mfilename,'close');
  23.   case 'gr_auto' , wshowdrv('#gr_autoMode',mfilename,'close');
  24.   case 'getFigParam'
  25. figName  = '1-D De-noising using wavelet';
  26. showType = 'mix8';
  27. varargout = {figName,showType};
  28. end
  29. return
  30. end
  31. if nargout<1,
  32.   wshowdrv(mfilename)
  33. else
  34.   idx = 0;
  35.   %========== Slide 1 ==========
  36.   idx = idx+1;
  37.   slide(idx).code = {
  38.   'figHandle = gcf;',   
  39.   'ax = findall(figHandle,''type'',''axes''); delete(ax); drawnow; h = [];',   
  40.   '' };
  41.   slide(idx).text = {
  42.   '',
  43.   ' Press the "Start" button to see a demonstration of',
  44.   ' denoising tools in the Wavelet Toolbox.',
  45.   '',
  46.   ' This demo uses Wavelet Toolbox functions.',
  47.   ''};
  48.   %========== Slide 2 ==========
  49.   idx = idx+1;
  50.   slide(idx).code = {
  51.   'sigCOL = ''r''; sigCOL_2 = ''m''; noiCOL = ''g''; denCOL = ''y'';',
  52.   'sqrt_snr = 3; init = 2055615866;',
  53.   '[xref,x] = wnoise(3,11,sqrt_snr,init);',
  54.   'snr = sqrt_snr^2;',
  55.   
  56.   'ax = findall(figHandle,''type'',''axes''); delete(ax); drawnow; h = [];',
  57.   'h(1) = subplot(3,1,1);',
  58.   'plot(xref,sigCOL), axis([1 2048 -10 10]);',
  59.   'title(''Original signal'');',
  60.   'h(2) = subplot(3,1,2);',
  61.   'plot(x,noiCOL), axis([1 2048 -10 10]);',
  62.   'title([''Noisy signal - Signal to noise ratio = '',num2str(fix(snr))]);',
  63.   'set(h(1),''Xtick'',[],''Xticklabel'',[]);',
  64.   '' };
  65.   slide(idx).text = {
  66.   ' % Set signal to noise ratio and set rand seed.',
  67.   '        sqrt_snr = 3; init = 2055615866;',
  68.   ' % Generate original signal and a noisy version adding',
  69.   ' % a standard Gaussian white noise.',
  70.   '        [xref,x] = wnoise(3,11,sqrt_snr,init);',
  71.   ''};
  72.   slide(idx).info = 'wnoise';
  73.   %========== Slide 3 ==========
  74.   idx = idx+1;
  75.   slide(idx).code = {
  76.   'lev = 5;',
  77.   'xd  = wden(x,''heursure'',''s'',''one'',lev,''sym8'');',
  78.   'h(2) = subplot(3,1,2);',
  79.   'set(h(2),''Xtick'',[],''Xticklabel'',[]);',
  80.   'h(3) = subplot(3,1,3); plot(xd); axis([1 2048 -10 10]);',
  81.   'title(''Denoised signal - heuristic SURE'');',
  82.   '' };
  83.   slide(idx).text = {
  84.   ' % Denoise noisy signal using soft heuristic SURE thresholding',
  85.   ' % and scaled noise option, on detail coefficients obtained',
  86.   ' % from the decomposition of x, at level 5 by sym8 wavelet.',
  87.   ' % Generate original signal and a noisy version adding',
  88.   ' % a standard Gaussian white noise.',
  89.   '         lev = 5;',
  90.   '         xd  = wden(x,''heursure'',''s'',''one'',lev,''sym8'');'
  91.   ''};
  92.   slide(idx).info = 'wden';
  93.   %========== Slide 4 ==========
  94.   idx = idx+1;
  95.   slide(idx).code = {
  96.   'xd  = wden(x,''rigrsure'',''s'',''one'',lev,''sym8'');',
  97.   'h(3) = subplot(3,1,3); plot(xd,denCOL); axis([1 2048 -10 10]);',
  98.   'title(''Denoised signal - SURE'');',
  99.   '' };
  100.   slide(idx).text = {
  101.   ' % Denoise noisy signal using soft SURE thresholding.',
  102.   ' ',
  103.   '         xd  = wden(x,''rigrsure'',''s'',''one'',lev,''sym8'');'
  104.   ''};
  105.   slide(idx).info = 'wden';
  106.   %========== Slide 5 ==========
  107.   idx = idx+1;
  108.   slide(idx).code = {
  109.   'xd  = wden(x,''sqtwolog'',''s'',''sln'',lev,''sym8'');',
  110.   'h(3) = subplot(3,1,3); plot(xd,denCOL); axis([1 2048 -10 10]);',
  111.   'title(''Denoised signal - Fixed form threshold'');',
  112.   '' };
  113.   slide(idx).text = {
  114.   ' % Denoise noisy signal using fixed form threshold with',
  115.   ' % a single level estimation of noise standard deviation.',
  116.   ' ',
  117.   '         xd  = wden(x,''sqtwolog'',''s'',''sln'',lev,''sym8'');'
  118.   ''};
  119.   slide(idx).info = 'wden';
  120.   %========== Slide 6 ==========
  121.   idx = idx+1;
  122.   slide(idx).code = {
  123.   'xd  = wden(x,''minimaxi'',''s'',''sln'',lev,''sym8'');',
  124.   'h(3) = subplot(3,1,3); plot(xd,denCOL); axis([1 2048 -10 10]);',
  125.   'title(''Denoised signal - Minimax'');',
  126.   '' };
  127.   slide(idx).text = {
  128.   ' % Denoise noisy signal using fixed minimax threshold with',
  129.   ' % a multiple level estimation of noise standard deviation.',
  130.   ' ',
  131.   '         xd  = wden(x,''minimaxi'',''s'',''sln'',lev,''sym8'');'
  132.   ''};
  133.   slide(idx).info = 'wden';
  134.   %========== Slide 7 ==========
  135.   idx = idx+1;
  136.   slide(idx).code = {
  137.   '[c,l] = wavedec(x,lev,''sym8'');',
  138.   'xd  = wden(x,''minimaxi'',''s'',''sln'',lev,''sym8'');',
  139.   ['idxPREV = wshowdrv(''#get_idxSlide'',figHandle); idxSlide = ' int2str(idx) ';'],
  140.   'if idxPREV>idxSlide',
  141.   '   ax = findall(figHandle,''type'',''axes''); delete(ax); drawnow; h = [];',
  142.   '   h(1) = subplot(3,1,1);',
  143.   '   plot(xref,sigCOL), axis([1 2048 -10 10]);',
  144.   '   title(''Original signal'');',
  145.   '   h(2) = subplot(3,1,2);',
  146.   '   plot(x,noiCOL), axis([1 2048 -10 10]);',
  147.   '   snr = sqrt_snr^2;',
  148.   '   title([''Noisy signal - Signal to noise ratio = '',num2str(fix(snr))]);',
  149.   '   set(h(1:2),''Xtick'',[],''Xticklabel'',[]);',
  150.   'end'
  151.   'h(3) = subplot(3,1,3); plot(xd,denCOL); axis([1 2048 -10 10]);',
  152.   'title(''Denoised signal - Minimax'');',
  153.   '' };
  154.   slide(idx).text = {
  155.   ' % If many trials are necessary, it is better to perform',
  156.   ' % decomposition one time and threshold it many times :',
  157.   ' ',
  158.   '         % decomposition.',
  159.   '         [c,l] = wavedec(x,lev,''sym8'');',
  160.   ' ',
  161.   '         % threshold the decomposition structure [c,l].',
  162.   '         xd = wden(c,l,''minimaxi'',''s'',''sln'',lev,''sym8'');'
  163.   ''};
  164.   slide(idx).info = 'wden';
  165.   %========== Slide 8 ==========
  166.   idx = idx+1;
  167.   slide(idx).code = {
  168.   'load leleccum; indx = 2600:3100;',
  169.   'x = leleccum(indx);',
  170.   
  171.   'ax = findall(figHandle,''type'',''axes''); delete(ax); drawnow; h = [];',
  172.   'h(1) = subplot(2,1,1);',
  173.   'plot(indx,x,sigCOL), title(''Original signal'');',
  174.   'title(''Original signal'');',
  175.   '' };
  176.   slide(idx).text = {
  177.   ' % Load electrical signal and select a part.',
  178.   ' ',
  179.   '         load leleccum; indx = 2600:3100;',
  180.   '         x = leleccum(indx);',
  181.   ''};
  182.   %========== Slide 9 ==========
  183.   idx = idx+1;
  184.   slide(idx).code = {
  185.   '[thr,sorh,keepapp] = ddencmp(''den'',''wv'',x);',
  186.   'xd = wdencmp(''gbl'',x,''db3'',2,thr,sorh,keepapp);',
  187.   
  188.   'ax = findall(figHandle,''type'',''axes''); delete(ax); drawnow; h = [];',
  189.   'h(1) = subplot(2,1,1);',
  190.   'plot(indx,x,sigCOL), title(''Original signal'');',
  191.   'title(''Original signal'');',
  192.   'h(2) = subplot(2,1,2);',
  193.   'plot(indx,xd,denCOL); title(''Denoised signal'')',
  194.   '' };
  195.   slide(idx).text = {
  196.   ' % Use wdencmp for signal de-noising.',
  197.   ' ',
  198.   '       % find default values (see ddencmp).',
  199.   '        [thr,sorh,keepapp] = ddencmp(''den'',''wv'',x);',
  200.   ' ',
  201.   '       % denoise signal using global thresholding option.',
  202.   '       xd = wdencmp(''gbl'',x,''db3'',2,thr,sorh,keepapp);',
  203.   ''};
  204.   slide(idx).info = 'wdencmp';
  205.   %========== Slide 10 ==========
  206.   idx = idx+1;
  207.   slide(idx).code = {
  208.   'ax = findall(figHandle,''type'',''axes''); delete(ax); drawnow; h = [];',
  209.   'init = 2055615866;',
  210.   'sqrt_snr = 5;',      % square root of signal to noise ratio.
  211.   'snr = sqrt_snr^2;',  % signal to noise ratio.
  212.   '[xref,x] = wnoise(1,11,sqrt_snr,init);',
  213.   'indx = linspace(0,1,length(x));',
  214.   'h(1) = subplot(2,1,1);',
  215.   'plot(indx,x,denCOL,indx,xref,sigCOL_2)',
  216.   'title(''Noisy and Original signals'');',
  217.   'xlabel([''Signal to noise ratio = '',num2str(fix(snr))])',
  218.   'xd = wden(x,''heursure'',''s'',''one'',5,''sym8'');',
  219.   'h(2) = subplot(2,1,2);'
  220.   'plot(indx,xd,denCOL,indx,xref,sigCOL_2); xlabel(''Denoised and Original signals'');'
  221.   '' };
  222.   slide(idx).text = {
  223.   ' % Some trial examples without commands counterpart.',
  224.   ' ',
  225.   ' % Rand initialization: init = 2055615866;',
  226.   ' % Square root of signal to noise ratio: sqrt_snr = 5;',
  227.   ' % [xref,x] = wnoise(1,11,sqrt_snr,init);',
  228.   ''};
  229.   slide(idx).info = 'wden';
  230.   %========== Slide 11 ==========
  231.   idx = idx+1;
  232.   slide(idx).code = {
  233.   'ax = findall(figHandle,''type'',''axes''); delete(ax); drawnow; h = [];',
  234.   'sqrt_snr = 4;',      % square root of signal to noise ratio.
  235.   'snr = sqrt_snr^2;',  % signal to noise ratio.
  236.   '[xref,x] = wnoise(2,11,sqrt_snr,init);',
  237.   'indx = linspace(0,1,length(x));',
  238.   'h(1) = subplot(2,1,1);',
  239.   'plot(indx,x,denCOL,indx,xref,sigCOL_2)',
  240.   'title(''Noisy and Original signals'');',
  241.   'xlabel([''Signal to noise ratio = '',num2str(fix(snr))])',
  242.   'xd = wden(x,''rigrsure'',''s'',''one'',5,''sym4'');',
  243.   'h(2) = subplot(2,1,2);'
  244.   'plot(indx,xd,denCOL,indx,xref,sigCOL_2); xlabel(''Denoised and Original signals'');'
  245.   '' };
  246.   slide(idx).text = {
  247.   ' % Some trial examples without commands counterpart (more).',
  248.   ' ',
  249.   ' % Rand initialization: init = 2055615866;',
  250.   ' % Square root of signal to noise ratio: sqrt_snr = 4;',
  251.   ' % [xref,x] = wnoise(2,11,sqrt_snr,init);',
  252.   ''};
  253.   slide(idx).info = 'wden';
  254.   %========== Slide 12 ==========
  255.   idx = idx+1;
  256.   slide(idx).code = {
  257.   'ax = findall(figHandle,''type'',''axes''); delete(ax); drawnow; h = [];',
  258.   'sqrt_snr = 3;',      % square root of signal to noise ratio.
  259.   'snr = sqrt_snr^2;',  % signal to noise ratio.
  260.   '[xref,x] = wnoise(3,11,sqrt_snr,init);',
  261.   'indx = linspace(0,1,length(x));',
  262.   'h(1) = subplot(2,1,1);',
  263.   'plot(indx,x,denCOL,indx,xref,sigCOL_2)',
  264.   'title(''Noisy and Original signals'');',
  265.   'xlabel([''Signal to noise ratio = '',num2str(fix(snr))])',
  266.   'xd = wden(x,''sqtwolog'',''s'',''one'',5,''sym8'');',
  267.   'h(2) = subplot(2,1,2);'
  268.   'plot(indx,xd,denCOL,indx,xref,sigCOL_2); xlabel(''Denoised and Original signals'');'
  269.   '' };
  270.   slide(idx).text = {
  271.   ' % Some trial examples without commands counterpart (more).',
  272.   ' ',
  273.   ' % Rand initialization: init = 2055615866;',
  274.   ' % Square root of signal to noise ratio: sqrt_snr = 3;',
  275.   ' % [xref,x] = wnoise(3,11,sqrt_snr,init);',
  276.   ''};
  277.   slide(idx).info = 'wden';
  278.   %========== Slide 13 ==========
  279.   idx = idx+1;
  280.   slide(idx).code = {
  281.   'set(figHandle,''Name'',''1-D De-noising using wavelet'');',
  282.   'ax = findall(figHandle,''type'',''axes''); delete(ax); drawnow; h = [];',
  283.   'sqrt_snr = 2;',      % square root of signal to noise ratio.
  284.   'snr = sqrt_snr^2;',  % signal to noise ratio.
  285.   '[xref,x] = wnoise(3,11,sqrt_snr,init);',
  286.   'indx = linspace(0,1,length(x));',
  287.   'h(1) = subplot(2,1,1);',
  288.   'plot(indx,x,denCOL,indx,xref,sigCOL_2)',
  289.   'title(''Noisy and Original signals'');',
  290.   'xlabel([''Signal to noise ratio = '',num2str(fix(snr))])',
  291.   'xd = wden(x,''sqtwolog'',''s'',''one'',5,''sym8'');',
  292.   'h(2) = subplot(2,1,2);'
  293.   'plot(indx,xd,denCOL,indx,xref,sigCOL_2); xlabel(''Denoised and Original signals'');'
  294.   '' };
  295.   slide(idx).text = {
  296.   ' % Some trial examples without commands counterpart (more).',
  297.   ' ',
  298.   ' % Rand initialization: init = 2055615866;',
  299.   ' % Square root of signal to noise ratio: sqrt_snr = 2;',
  300.   ' % [xref,x] = wnoise(3,11,sqrt_snr,init);',
  301.   ''};
  302.   slide(idx).info = 'wden';
  303.   %========== Slide 14 ==========
  304.   idx = idx+1;
  305.   slide(idx).code = {
  306.   'ax = findall(figHandle,''type'',''axes''); delete(ax); drawnow; h = [];',
  307.   'sqrt_snr = 4;',      % square root of signal to noise ratio.
  308.   'snr = sqrt_snr^2;',  % signal to noise ratio.
  309.   '[xref,x] = wnoise(4,11,sqrt_snr,init);',
  310.   'indx = linspace(0,1,length(x));',
  311.   'h(1) = subplot(2,1,1);',
  312.   'plot(indx,x,denCOL,indx,xref,sigCOL_2)',
  313.   'title(''Noisy and Original signals'');',
  314.   'xlabel([''Signal to noise ratio = '',num2str(fix(snr))])',
  315.   'xd = wden(x,''minimaxi'',''s'',''one'',5,''sym4'');',
  316.   'h(2) = subplot(2,1,2);'
  317.   'plot(indx,xd,denCOL,indx,xref,sigCOL_2); xlabel(''Denoised and Original signals'');'
  318.   '' };
  319.   slide(idx).text = {
  320.   ' % Some trial examples without commands counterpart (more).',
  321.   ' ',
  322.   ' % Rand initialization: init = 2055615866;',
  323.   ' % Square root of signal to noise ratio: sqrt_snr = 4;',
  324.   ' % [xref,x] = wnoise(4,11,sqrt_snr,init);',
  325.   ''};
  326.   
  327.   slide(idx).info = 'wden';
  328.   %========== Slide 15 ==========
  329.   idx = idx+1;
  330.   slide(idx).code = {
  331.   'row = 2; col = 2;',
  332.   'load  sinsin',
  333.   'sm = size(map,1);',
  334.   
  335.  ['idxPREV = wshowdrv(''#get_idxSlide'',figHandle); idxSlide = ' int2str(idx) ';'],
  336.   'if idxPREV>idxSlide',
  337.   '   delete(subplot(row,col,2));',
  338.   'else',
  339.   '   set(figHandle,''Name'',''2-D De-noising using wavelet'');',
  340.   '   ax = findall(figHandle,''type'',''axes''); delete(ax); drawnow; h = [];',
  341.   '   colormap(pink)',
  342.   '   h(1) = subplot(row,col,1);';
  343.   '   image(wcodemat(X,sm)), title(''Original Image'');',
  344.   '   axis(''square'')';
  345.   '   set(h(1),''Xtick'',[],''Xticklabel'',[],''Ytick'',[],''Yticklabel'',[]);',
  346.   'end',
  347.   '' };
  348.   slide(idx).text = {
  349.   ' % Load original image.',
  350.   '         load sinsin',
  351.   '         % X contains the original image.',
  352.   ''};
  353.   
  354.   %========== Slide 16 ==========
  355.   idx = idx+1;
  356.   slide(idx).code = {
  357.   'init = 2055615866; randn(''seed'',init);', 
  358.   'x = X + 18*randn(size(X));',
  359.   ['idxPREV = wshowdrv(''#get_idxSlide'',figHandle); idxSlide = ' int2str(idx) ';'],
  360.   'if idxPREV>idxSlide',
  361.   '   delete(subplot(row,col,3));',
  362.   'else',
  363.   '   h(2) = subplot(row,col,2);',
  364.   '   image(wcodemat(x,sm)), title(''Noisy Image'');',
  365.   '   axis(''square'')',
  366.   '   set(h(2),''Xtick'',[],''Xticklabel'',[],''Ytick'',[],''Yticklabel'',[]);',
  367.   'end',
  368.   '' };
  369.   slide(idx).text = {
  370.   ' % Generate noisy image.',
  371.   ' ',
  372.   '         init = 2055615866; randn(''seed'',init);',
  373.   '         x = X + 18*randn(size(X));',
  374.   ''};
  375.   %========== Slide 17 ==========
  376.   idx = idx+1;
  377.   slide(idx).code = {
  378.   '[thr,sorh,keepapp] = ddencmp(''den'',''wv'',x);',
  379.   'xd = wdencmp(''gbl'',x,''sym4'',2,thr,sorh,keepapp);',
  380.   'h(3) = subplot(row,col,3);',
  381.   'image(wcodemat(xd,sm)), title(''De-noised Image'');',
  382.   'axis(''square'')',
  383.   'set(h(3),''Xtick'',[],''Xticklabel'',[],''Ytick'',[],''Yticklabel'',[]);',
  384.   '' };
  385.   slide(idx).text = {
  386.   ' % Use wdencmp for image de-noising.',
  387.   ' ',
  388.   '         % find default values (see ddencmp).',
  389.   '         [thr,sorh,keepapp] = ddencmp(''den'',''wv'',x);',
  390.   ' ',
  391.   '         % denoise image using global thresholding option.',
  392.   '         xd = wdencmp(''gbl'',x,''sym4'',2,thr,sorh,keepapp);',
  393.   ''};
  394.   slide(idx).info = 'wdencmp';
  395.   varargout{1} = slide;
  396. end