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

波变换

开发平台:

Matlab

  1. function [out1,out2,out3,out4,out5,out6,out7,out8] = ...
  2.                 dw1dmisc(option,win_dw1dtool,in3,in4,in5,in6,in7,in8)
  3. %DW1DMISC Discrete wavelet 1-D miscellaneous utilities.
  4. %   M. Misiti, Y. Misiti, G. Oppenheim, J.M. Poggi 12-Mar-96.
  5. %   Last Revision: 16-Jul-1999.
  6. %   Copyright 1995-2002 The MathWorks, Inc.
  7. %   $Revision: 1.14 $
  8. % Default Value(s).
  9. %------------------
  10. def_nbCodeOfColors = 128;
  11. % MemBloc1 of stored values.
  12. %---------------------------
  13. n_param_anal   = 'DWAn1d_Par_Anal';
  14. ind_sig_name   = 1;
  15. ind_sig_size   = 2;
  16. ind_wav_name   = 3;
  17. ind_lev_anal   = 4;
  18. ind_axe_ref    = 5;
  19. ind_act_option = 6;
  20. ind_ssig_type  = 7;
  21. ind_thr_val    = 8;
  22. nb1_stored     = 8;
  23. % MemBloc2 of stored values.
  24. %---------------------------
  25. n_coefs_longs = 'Coefs_and_Longs';
  26. ind_coefs     = 1;
  27. ind_longs     = 2;
  28. nb2_stored    = 2;
  29. switch option
  30.     case 'col_cfs'
  31.         %************************************************%
  32.         %** OPTION = 'col_cfs' - colored coefficients. **%
  33.         %************************************************%
  34.         % in3,...,in8 optional
  35.         % out1 = colored_cfs
  36.         % out2 = xlim1
  37.         % out3 = xlim2
  38.         % out4 = ymax
  39.         % out5 = ymin
  40.         % out6 = nb_cla
  41.         % out7 = levels
  42.         % out8 = ccfs_vm
  43.         %----------------------
  44.         [coefs,longs] = wmemtool('rmb',win_dw1dtool,n_coefs_longs,...
  45.                                        ind_coefs,ind_longs);
  46.         len  = length(longs);
  47.         xmax = longs(len);
  48.         Level_anal= len-2;
  49.         clear coefs longs
  50.         if nargin<6 , nb_cla = def_nbCodeOfColors; else , nb_cla = in6; end
  51.         if nargin<5
  52.             xlim1 = 1; xlim2 = xmax;
  53.         else
  54.             in5   = round(in5);
  55.             xlim1 = in5(1); xlim2 = in5(2);
  56.         end 
  57.         if nargin<4 , levels = [1:Level_anal]; else , levels = in4; end 
  58.         if nargin<3 , ccfs_vm = 1; else , ccfs_vm = in3; end    
  59.         if find(ccfs_vm==[1 3 5 7]) , absval = 1; else , absval = 0; end
  60.         if find(ccfs_vm==[1 2 5 6]) , levval = 'row'; else , levval = 'mat'; end
  61.         if find(ccfs_vm==[1 2 3 4]) , view_m = 'ini'; else , view_m = 'cur'; end
  62.         out1 = dw1dfile('cfs_beg',win_dw1dtool,levels);
  63.         [out4,nb_comp]= size(out1);
  64.         if out4>1 , out5 = 1; else out5 = 0; end
  65.         out7 = levels;
  66.         if strcmp(view_m,'cur')
  67.             if absval==1 , out1 = abs(out1); end
  68.             if strcmp(levval,'mat')
  69.                 cmin = min(min(out1(:,xlim1:xlim2)));
  70.                 cmax = max(max(out1(:,xlim1:xlim2)));
  71.                 out1(out1<cmin) = cmin;
  72.                 out1(out1>cmax) = cmax;
  73.             else
  74.                 cmin = min((out1(:,xlim1:xlim2)),[],2);
  75.                 cmax = max((out1(:,xlim1:xlim2)),[],2);
  76.                 for k=1:length(levels)
  77.                     v = cmin(k);
  78.                     out1(k,out1(k,:)<v) = v;
  79.                     v = cmax(k);
  80.                     out1(k,out1(k,:)>v) = v;
  81.                 end
  82.             end
  83.         end
  84.         out2 = xlim1;
  85.         out3 = xlim2;
  86.         out1 = wcodemat(out1,nb_cla,levval,absval);
  87.         out6 = nb_cla;
  88.         out8 = ccfs_vm;
  89.     case 'tst_vm'
  90.         %*****************************************%
  91.         %** OPTION = 'tst_vm' - test view mode. **%
  92.         %*****************************************%
  93.         % in3 = view mode
  94.         % in4 = axe_hdl
  95.         % in5 = flg_lev
  96.         %---------------------------------
  97.         num_mode = in3; 
  98.         axe_hdl  = in4;
  99.         flg_lev  = in5;
  100.         Signal_Size = wmemtool('rmb',win_dw1dtool,n_param_anal,ind_sig_size);
  101.         Signal_Size = max(Signal_Size);
  102.         ccfs_vm  = dw1dvmod('ccfs_vm',win_dw1dtool,num_mode);
  103.         xlim_axe = get(axe_hdl,'XLim');
  104.         if find(ccfs_vm==[5 6 7 8])
  105.             xlim_selbox = mngmbtn('getbox',win_dw1dtool); 
  106.             if ~isempty(xlim_selbox)
  107.                 xlim_selbox = [min(xlim_selbox) max(xlim_selbox)];
  108.             else
  109.                 xlim_selbox = xlim_axe;
  110.             end
  111.             xlim1 = max(1,xlim_selbox(1));
  112.             xlim2 = min(Signal_Size,xlim_selbox(2));
  113.         else
  114.             xlim1 = 1; xlim2 = Signal_Size;
  115.         end
  116.         out1    = 1;
  117.         out2    = ccfs_vm;
  118.         out3    = find(flg_lev);
  119.         out4(1) = xlim1;
  120.         out4(2) = xlim2;
  121.         out5    = def_nbCodeOfColors;
  122.         img     = findobj(axe_hdl,'type','image');
  123.         if ~isempty(img)
  124.             usr = get(img,'Userdata');
  125.             blk = [out2 out3 out4 out5];
  126.             if isequal(usr,blk) , out1 = 0; end
  127.         end
  128.     otherwise
  129.         errargt(mfilename,'Unknown Option','msg');
  130.         error('*');
  131. end