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

波变换

开发平台:

Matlab

  1. function varargout = cw1dutil(option,fig,varargin)
  2. %CW1DUTIL Continuous wavelet 1-D utilities.
  3. %   VARARGOUT = CW1DUTIL(OPTION,FIG,VARARGIN)
  4. %   M. Misiti, Y. Misiti, G. Oppenheim, J.M. Poggi 12-Mar-96.
  5. %   Last Revision: 01-Jun-1999.
  6. %   Copyright 1995-2002 The MathWorks, Inc.
  7. %   $Revision: 1.13 $
  8. switch option
  9.     case 'plotSignal'
  10.       axe = varargin{1};
  11.       sig = varargin{2};
  12.       hdlAXES = varargin{3};
  13.       %-----------------------
  14.       color = wtbutils('colors','cw1d','sig');
  15.       vis   = get(axe,'Visible');
  16.       xValMin = 1;
  17.       xValMax = length(sig);
  18.       ymin = min(sig)-eps;
  19.       ymax = max(sig)+eps;
  20.       plot(sig,'Color',color,'Parent',axe);
  21.       set(axe,'Xlim',[xValMin xValMax],'Ylim',[ymin ymax],...
  22.               'XGrid','Off','YGrid','Off');
  23.       strTitle = sprintf('Analyzed Signal  (length = %s)', int2str(xValMax));
  24.       wtitle(strTitle,'Parent',axe,'Visible',vis);
  25.       set(axe,'Visible',vis);        
  26.       set(hdlAXES,'Xlim',[xValMin xValMax]);
  27.     case 'plotCfsLine'
  28.       axe   = varargin{1};
  29.       coefs = varargin{2};
  30.       strTitle = varargin{3};
  31.       %--------------------
  32.       color = wtbutils('colors','cw1d','lin');
  33.       xlim  = get(axe,'xlim');
  34.       vis   = get(axe,'Visible');
  35.       plot(coefs,'Color',color,'Parent',axe,'Visible',vis);     
  36.       wtitle(strTitle,'Parent',axe,'Visible',vis);
  37.       set(axe,'Visible',vis,'Xlim',xlim,'Box','On');
  38.     case 'plotChainLine'
  39.       axe      = varargin{1};
  40.       scales   = varargin{2};
  41.       coefs    = varargin{3};
  42.       strTitle = varargin{4};
  43.       %----------------------- 
  44.       fig = get(axe,'Parent');
  45.       vis = get(axe,'Visible');
  46.       [iRow,iCol] = find(coefs);
  47.       if ~isempty(iRow)
  48.           [nbRow,nbCol] = size(coefs);
  49.           markersize = 2;
  50.           marker     = 'o';
  51.           linestyle  = 'none';
  52.           color      = wtbutils('colors','cw1d','spy');
  53.           x = [1:nbCol];
  54.           xlim  = get(axe,'xlim');
  55.           ylim = [min(scales) max(scales)]+sqrt(eps)*[-1 1];
  56.           varargout{1} = ...
  57.             plot(x(iCol),scales(iRow), ...
  58.                'Visible',vis, ...
  59.                'marker',marker, ...
  60.                'markersize',markersize, ...
  61.                'MarkerEdgeColor',color, ...
  62.                'MarkerFaceColor',color, ...
  63.                'linestyle',linestyle,   ...
  64.                'color',color, ...
  65.                'parent',axe   ...
  66.                ); 
  67.           step  = ceil(nbRow/20);
  68.           ytics = scales(1:step:nbRow);
  69.           ylabs = num2str(ytics(:));
  70.           set(axe,...
  71.               'Visible',vis, ...
  72.               'xlim',xlim,'ylim',ylim,...
  73.               'Box','On',...
  74.               'ydir','normal','grid','none',...
  75.               'YTick',ytics,'YTicklabel',ylabs,...
  76.               'clipping','on'...
  77.               );
  78.       end
  79.       wtitle(strTitle,'Parent',axe,'Visible',vis);
  80.     case 'computeChainLine'
  81.       scales = varargin{1};
  82.       coefs  = varargin{2};
  83.       indBeg = varargin{3};
  84.       %--------------------
  85.       [tmp,I1] = sort(scales);
  86.       [tmp,I2] = sort(I1);
  87.       coefs = coefs(I2,:);
  88.       coefs = localmax(coefs,indBeg);
  89.       varargout{1} = coefs(I1,:);
  90.       varargout{2} = ['Local Maxima Lines'];
  91.     case 'cfsLineTitle'
  92.       toolATTR = wfigmngr('getValue',fig,'ToolSettings');
  93.       toolMode = toolATTR.Mod;
  94.       scale    = toolATTR.Sca;
  95.       freq     = toolATTR.Frq;
  96.       scaStr   = num2str(scale);
  97.       frqStr   = sprintf('%7.3f',freq);
  98.       realStr  = 'Ca,b';
  99.       absStr   = 'Modulus (Ca,b)';
  100.       argStr   = 'Angle (Ca,b)';
  101.       tmpStr   = '   ';
  102.       switch toolMode
  103.         case {'real','abs','arg'}
  104.           scaStr = ['for scale a = ' scaStr];
  105.           frqStr = ['  (frequency = ' frqStr ')'];
  106.           begStr = ['Coefficients Line - '];          
  107.           endStr = [tmpStr,scaStr,frqStr];
  108.           switch toolMode
  109.            case 'real' , varargout{1} = [begStr,realStr,endStr];
  110.            case {'abs','arg'}
  111.              varargout{1} = ...
  112.                strvcat([begStr,absStr,endStr],[begStr,argStr,endStr]);
  113.           end
  114.         case {'all'} 
  115.           scaStr = ['for a = ' scaStr];
  116.           frqStr = [' (frq = '  frqStr ')'];
  117.           endStr = [tmpStr,scaStr frqStr];
  118.           varargout{1} = strvcat([absStr,endStr],[argStr,endStr]);
  119.        end        
  120.     case 'cfsColorTitle'
  121.       toolMode = varargin{1};
  122.       pop_ccm  = varargin{2};
  123.       %----------------------
  124.       strPopCM = get(pop_ccm,'String');
  125.       strPopCM = strPopCM(get(pop_ccm,'value'),:);
  126.       realStr  = '';
  127.       absStr   = 'Modulus of ';
  128.       argStr   = 'Angle of ';
  129.       midStr   = ['Ca,b Coefficients'];
  130.       endStr   = ['  - Coloration mode : ' strPopCM];
  131.       switch toolMode
  132.         case 'real'
  133.           varargout{1} = [realStr,midStr,endStr];
  134.         case {'abs','arg'}
  135.           varargout{1} = strvcat([absStr,midStr,endStr],[argStr,midStr,endStr]);
  136.         case 'all' 
  137.           varargout{1} = strvcat([absStr,midStr],[argStr,midStr]);
  138.        end        
  139.    case 'initPosAxes'
  140.       toolMode = varargin{1};
  141.       pos_Gra_Rem = varargin{2};
  142.       %-------------------------------
  143.       bdx = 0.045; bdy = 0.05; ecy = 0.06;
  144.       h_col = 0.015;
  145.       x_axe = pos_Gra_Rem(1)+bdx;
  146.       w_axe = (pos_Gra_Rem(3)-2*bdx);
  147.       w_col = pos_Gra_Rem(3)/3;
  148.       x_col = pos_Gra_Rem(1)+w_col;
  149.       h_rem = pos_Gra_Rem(4)-2*bdy;
  150.       pos_axes = zeros(8,4,5);
  151.       pos_axes(:,1,[1:4]) = x_axe;
  152.       pos_axes(:,3,[1:4]) = w_axe;
  153.       dummy = [x_col , 0 , w_col , h_col];
  154.       pos_axes(:,:,5) = dummy(ones(1,8),:);
  155.       pos_axes = permute(pos_axes,[3 2 1]);
  156.  
  157.       % Proportion.
  158.       %-------------
  159.       NB_Config = 8;
  160.       prop = zeros(NB_Config,4);
  161.       prop = [...
  162.         2 4 2 4 ;
  163.         1 3 1 0 ;
  164.         1 3 0 3 ;
  165.         1 0 1 3 ;
  166.         1 3 0 0 ;
  167.         1 0 1 0 ;
  168.         1 0 0 3 ;
  169.         1 0 0 0 ;
  170.         ];
  171.       dummy = sum(prop,2);
  172.       for k = 1:NB_Config , prop(k,:) = (12*prop(k,:))/dummy(k); end
  173.       vis = (prop>0);
  174.       for k = 1:NB_Config
  175.         visFlg = vis(k,[1 2 3 4 2]);
  176.         DY     = ecy*visFlg.*[1 1 1.125 1 0.250];
  177.         h_ele = (h_rem-h_col*visFlg(5)-sum(DY(2:5)))/12;
  178.         h_axe = max(prop(k,:)*h_ele,1.E-6);
  179.         y_axe = pos_Gra_Rem(2)+pos_Gra_Rem(4)-bdy-h_axe(1);
  180.         pos_axes(1,:,k) = [x_axe y_axe w_axe h_axe(1)];
  181.         y_axe = pos_axes(1,2,k)-DY(2)-h_axe(2);
  182.         pos_axes(2,:,k) = [x_axe y_axe w_axe h_axe(2)];
  183.         y_col = pos_axes(2,2,k)-DY(5)-h_col*visFlg(5);
  184.         pos_axes(5,:,k) = [x_col , y_col , w_col , h_col];
  185.         y_axe = pos_axes(5,2,k)-DY(3)-h_axe(3);
  186.         pos_axes(3,:,k) = [x_axe y_axe w_axe h_axe(3)];
  187.         y_axe = pos_axes(3,2,k)-DY(4)-h_axe(4);
  188.         pos_axes(4,:,k) = [x_axe y_axe w_axe h_axe(4)];
  189.       end
  190.       %-----------------------------------------------------------
  191.       num = 1;
  192.       toolATTR = struct( ...
  193.           'Pos',pos_axes,'Vis',vis,'Num',num,'Mod',toolMode,...
  194.           'Sca',[],'Frq',[]);
  195.       wfigmngr('storeValue',fig,'ToolSettings',toolATTR);
  196.       hdl_Re_AXES = zeros(5,1);
  197.       for k = 1:5
  198.           hdl_Re_AXES(k) = axes(...
  199.               'Parent',fig,              ...
  200.               'Units','normalized',      ...
  201.               'Position',pos_axes(k,:,num),...
  202.               'Visible','off',           ...
  203.               'XTicklabelMode','manual', ...
  204.               'YTicklabelMode','manual', ...
  205.               'XTickLabel',[],           ...
  206.               'YTickLabel',[],           ...
  207.               'XTick',[],'YTick',[],     ...
  208.               'Box','On'                 ...
  209.               );
  210.       end
  211.       if ~isequal(toolMode,'real')
  212.           hdl_Im_AXES = copyobj(hdl_Re_AXES,fig);
  213.           varargout = {hdl_Re_AXES,hdl_Im_AXES};
  214.       else
  215.           varargout = {hdl_Re_AXES};        
  216.       end
  217.     otherwise
  218.       errargt(mfilename,'Unknown Option','msg');
  219.       error('*');
  220. end