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

波变换

开发平台:

Matlab

  1. function varargout = dscedw1d(varargin)
  2. %DSCEDW1D Demonstrates typical wavelet 1-D scenarios in the Wavelet Toolbox (Auto play). 
  3. %
  4. % This is a slideshow file for use with wshowdrv.m
  5. % To see it run, type 'wshowdrv dscedw1d', 
  6. %   M. Misiti, Y. Misiti, G. Oppenheim, J.M. Poggi 12-Mar-96.
  7. %   Last Revision: 03-Feb-2003.
  8. %   Copyright 1995-2004 The MathWorks, Inc.
  9. % $Revision: 1.13.4.2 $
  10. % Initialization and Local functions if necessary.
  11. if nargin>0
  12. action = varargin{1};
  13. switch action
  14.   case 'auto'    , wshowdrv('#autoMode',mfilename,'close');
  15.   case 'gr_auto' , wshowdrv('#gr_autoMode',mfilename,'close');
  16.   case 'getFigParam'
  17. figName  = 'Short Scenario DW1D';
  18. showType = 'command';
  19. varargout = {figName,showType};
  20.   case 'slidePROC'
  21.   wait_mode = 0;
  22.   [figHandle,idxSlide]  = deal(varargin{2:end});
  23.   idxPREV = wshowdrv('#get_idxSlide',figHandle);
  24.   localPARAM = wtbxappdata('get',figHandle,'localPARAM');
  25.   switch idxSlide
  26.    case 1
  27. if ~isempty(localPARAM)
  28. win_dw1d = localPARAM{1};
  29. delete(win_dw1d);
  30. dmsgfun('close');
  31. wtbxappdata('del',figHandle,'localPARAM');
  32. end
  33. % wshowdrv('#bloc_BackBtn',figHandle);
  34. return
  35. case 2
  36. if ~isempty(localPARAM)
  37. win_dw1d = localPARAM{1};
  38. delete(win_dw1d);
  39. end
  40. %-------------------------------------------
  41. % Display main window (demo initialization).
  42. %-------------------------------------------
  43. win_dw1d = dw1dtool;
  44. %----------------------------------------------
  45. % Main window parameters.
  46. %----------------------------------------------
  47. tag_pop_viewm  = 'View_Mode';
  48. tag_valapp_scr = 'ValApp_Scr';
  49. pop_handles    = findobj(win_dw1d,'style','popupmenu');
  50. pop_viewm      = findobj(pop_handles,'tag',tag_pop_viewm);
  51. pop_app_scr    = findobj(pop_handles,'tag',tag_valapp_scr);
  52. %------------------------------------------------
  53. localPARAM = {win_dw1d,pop_viewm,pop_app_scr};
  54. wtbxappdata('set',figHandle,'localPARAM',localPARAM);
  55. wshowdrv('#modify_cbClose',figHandle,win_dw1d,'dw1dtool');
  56. msg = get_Message(idxSlide);
  57. wshowdrv('#disp_msg',figHandle,msg,'step',localPARAM{1});
  58. if idxPREV<idxSlide
  59. figMSG = dmsgfun('handle');
  60. wshowdrv('#modify_cbClose',figHandle,figMSG,'dmsgfun');
  61. end
  62. return
  63.   
  64.     otherwise
  65. [win_dw1d,pop_viewm,pop_app_scr] = deal(localPARAM{:});
  66.   end
  67.   switch idxSlide
  68.     case 3
  69. if idxPREV<idxSlide
  70. %--------------------------
  71. % Full decomposition mode.
  72. %--------------------------
  73. sig_nam = 'noisdopp'; wav_nam = 'sym4'; lev_dec = 5;
  74. dw1dmngr('demo',win_dw1d,sig_nam,wav_nam,lev_dec);
  75. wenamngr('Inactive',win_dw1d);
  76. else
  77. set(pop_viewm,'value',2);
  78. eval(get(pop_viewm,'Callback'));
  79. end
  80.     case 4
  81. if idxPREV<idxSlide
  82. %----------------
  83. % Separate mode.
  84. %----------------
  85. set(pop_viewm,'value',3);
  86. eval(get(pop_viewm,'Callback'));
  87. else
  88. win_mopt_Params = wtbxappdata('get',figHandle,'win_mopt_Params');
  89. [win_mopt,chk_det_on,chk_cfs_on,pop_ccfs] = deal(win_mopt_Params{:});
  90. figure(win_mopt);
  91. set(chk_det_on,'Value',1);
  92. pause(0.5);
  93. dw1ddisp('apply',win_dw1d,win_mopt);
  94. set(pop_app_scr,'Value',1);
  95. eval(get(pop_app_scr,'Callback'));
  96. delete(win_mopt)
  97. wtbxappdata('del',figHandle,'win_mopt_Params');
  98. end
  99.     case 5
  100. if idxPREV<idxSlide
  101. %--------------------------------------
  102. % Show and Scroll mode (app5+sig+cfs).
  103. %--------------------------------------
  104. set(pop_viewm,'value',1);
  105. eval(get(pop_viewm,'Callback'));
  106. pause(2);
  107. %----------------------------------------
  108. % More Display Option window parameters.
  109. %----------------------------------------
  110. win_mopt_Params = makeWinOpt(figHandle,win_dw1d);
  111. [win_mopt,chk_det_on,chk_cfs_on,pop_ccfs] = deal(win_mopt_Params{:});
  112. %------------------------------------------------
  113. pause(1);
  114. set(chk_det_on,'Value',0);
  115. pause(1);
  116. dw1ddisp('apply',win_dw1d,win_mopt);
  117. set(pop_app_scr,'Value',5);
  118. eval(get(pop_app_scr,'Callback'));
  119. else
  120. win_mopt_Params = wtbxappdata('get',figHandle,'win_mopt_Params');
  121. [win_mopt,chk_det_on,chk_cfs_on,pop_ccfs] = deal(win_mopt_Params{:});
  122. figure(win_mopt);
  123. pause(1)
  124. set(pop_ccfs,'Value',1);
  125. pause(1)
  126. dw1ddisp('apply',win_dw1d,win_mopt);
  127. end
  128.     case 6
  129. %--------------------------------------------
  130. % Show and Scroll mode (app5+sig+cfs ).
  131. %     coloration : init + all levels + abs
  132. %--------------------------------------------
  133. if idxPREV>idxSlide
  134. makeWinOpt(figHandle,win_dw1d);
  135. return;
  136. end
  137. win_mopt_Params = wtbxappdata('get',figHandle,'win_mopt_Params');
  138. [win_mopt,chk_det_on,chk_cfs_on,pop_ccfs] = deal(win_mopt_Params{:});
  139. figure(win_mopt);
  140. pause(1)
  141. set(pop_ccfs,'Value',3);
  142. pause(1)
  143. dw1ddisp('apply',win_dw1d,win_mopt);
  144.     case 7
  145. %-----------------------------------
  146. % Close More Display Option window.
  147. % And message for Histograms.
  148. %-----------------------------------
  149. if idxPREV<idxSlide
  150. win_mopt_Params = wtbxappdata('get',figHandle,'win_mopt_Params');
  151. win_mopt = win_mopt_Params{1};
  152. dw1ddisp('close',win_dw1d,win_mopt);
  153. wtbxappdata('del',figHandle,'win_mopt_Params');
  154. wenamngr('Inactive',win_dw1d);
  155. else
  156. win_hist_Params = wtbxappdata('get',figHandle,'win_hist_Params');
  157. win_hist = win_hist_Params{1};
  158. dw1dhist('close',win_hist);
  159. delete(win_hist)
  160. wtbxappdata('del',figHandle,'win_hist_Params');
  161. end
  162. case 8
  163. %--------------------------------------------------
  164. % Histograms window - all the detail coefficients.
  165. % And first message for De-noising.
  166. %--------------------------------------------------
  167. win_hist      = dw1dmngr('hist',win_dw1d);
  168. wenamngr('Inactive',win_hist);
  169. tag_det_sig   = 'Det_sig';
  170. tag_det_all   = 'Det_All';
  171. tag_sel_cfs   = 'Sel_Cfs';
  172. tag_show_hist = 'Show_Hist';
  173. uic_win_hist  = findobj(win_hist,'Type','uicontrol');
  174. chk_win_hist  = findobj(uic_win_hist,'Style','checkbox');
  175. pus_win_hist  = findobj(uic_win_hist,'Style','pushbutton');
  176. chk_det_sig   = findobj(chk_win_hist,'tag',tag_det_sig);
  177. pus_det_all   = findobj(pus_win_hist,'tag',tag_det_all);
  178. rad_sel_cfs   = findobj(uic_win_hist,'Style','radiobutton','tag',tag_sel_cfs);
  179. pus_show_hist = findobj(pus_win_hist,'tag',tag_show_hist);
  180. win_hist_Params = {win_hist,chk_det_sig,pus_det_all,rad_sel_cfs,pus_show_hist};
  181. wtbxappdata('set',figHandle,'win_hist_Params',win_hist_Params);
  182. %--------------------------------------------------
  183. set(chk_det_sig,'value',1)      
  184. eval(get(chk_det_sig,'Callback')); pause(1)
  185. eval(get(pus_det_all,'Callback')); pause(1)
  186. eval(get(rad_sel_cfs,'Callback')); pause(1)
  187. eval(get(pus_show_hist,'Callback'));
  188. wenamngr('Inactive',win_hist);
  189.     case 9
  190. if idxPREV<idxSlide
  191. %------------------------------------
  192. % Close Histograms window.
  193. % And first message for Compression.
  194. %------------------------------------
  195. deleteSubFig(figHandle,'win_hist_Params');
  196. wenamngr('Inactive',win_dw1d);
  197. else
  198. deleteSubFig(figHandle,'win_comp_Params');
  199. end
  200.     case 10
  201. if idxPREV>idxSlide
  202. deleteSubFig(figHandle,'win_comp_Params');
  203. deleteSubFig(figHandle,'win_deno_Params');
  204. end
  205. %----------------------------------------
  206. % Compression: Initialization of  window.
  207. %----------------------------------------
  208. win_comp = dw1dmngr('comp',win_dw1d);
  209. wenamngr('Inactive',win_comp);
  210. % UTTHRGBL handlesUIC (Compression).
  211. %---------------------------------------
  212. % ud.handlesUIC = ...
  213. %   [fra_utl;txt_top;pop_met;...
  214. %    txt_sel;sli_sel;edi_sel; ...
  215. %    txt_nor;edi_nor;txt_npc;...
  216. %    txt_zer;edi_zer;txt_zpc;...
  217. %    tog_res;pus_est];
  218. %---------------------------------------
  219. % Memory of stored values (Compression).
  220. %---------------------------------------
  221. n_misc_comp = ['MB1_dw1dcomp'];
  222. ind_status  = 2;
  223. ind_pop_mod = 8;
  224. pop_mod    = wmemtool('rmb',win_comp,n_misc_comp,ind_pop_mod);
  225. handlesUIC = utthrgbl('handlesUIC',win_comp);
  226. edi_zer    = handlesUIC(11);
  227. win_comp_Params = {win_comp,pop_mod,edi_zer,n_misc_comp,ind_status};
  228. wtbxappdata('set',figHandle,'win_comp_Params',win_comp_Params);
  229. %--------------------------------------------------
  230. case 11
  231. %----------------------------------------------------
  232. % Compression: Global mode.
  233. % After compression with the default threshold value.
  234. %----------------------------------------------------
  235. win_comp_Params = wtbxappdata('get',figHandle,'win_comp_Params');
  236. win_comp = win_comp_Params{1};
  237. dw1dcomp('compress',win_comp,win_dw1d);
  238. wenamngr('Inactive',win_comp);
  239. case 12
  240. %--------------------------------------
  241. % Compression: change the zeros value.
  242. %--------------------------------------
  243. win_comp_Params = wtbxappdata('get',figHandle,'win_comp_Params');
  244. [win_comp,pop_mod,edi_zer,n_misc_comp,ind_status] = deal(win_comp_Params{:});
  245. set(edi_zer,'String',num2str(96.4));
  246. eval(get(edi_zer,'Callback'));
  247. dw1dcomp('compress',win_comp,win_dw1d);
  248. wenamngr('Inactive',win_comp);
  249. case 13
  250. %----------------------------------------------------
  251. % Compression: By Level mode.
  252. %----------------------------------------------------
  253. win_comp_Params = wtbxappdata('get',figHandle,'win_comp_Params');
  254. [win_comp,pop_mod,edi_zer,n_misc_comp,ind_status] = deal(win_comp_Params{:});
  255. set(pop_mod,'Value',2)
  256. eval(get(pop_mod,'Callback'))
  257. wenamngr('Inactive',win_comp);
  258. case 14
  259. %-----------------------------------------------------
  260. % Compression: By Level mode.
  261. % After compression with the default threshold values.
  262. %-----------------------------------------------------
  263. win_comp_Params = wtbxappdata('get',figHandle,'win_comp_Params');
  264. win_comp = win_comp_Params{1};
  265. dw1dcomp('compress',win_comp,win_dw1d);
  266. wenamngr('Inactive',win_comp);
  267.     case 15
  268. %----------------------------
  269. % Close Compression window.
  270. % And message for De-noising.
  271. %----------------------------
  272. deleteSubFig(figHandle,'win_comp_Params');
  273. wenamngr('Inactive',win_dw1d);
  274.   
  275.     case 16
  276. if idxPREV>idxSlide
  277. deleteSubFig(figHandle,'win_deno_Params');
  278. lin_handles = findobj(win_dw1d,'type','line');
  279. try
  280. lin(1) = findobj(lin_handles,'tag','SSig_in_App');
  281. lin(2) = findobj(lin_handles,'tag','SSig_in_Det');
  282. delete(lin);
  283. end
  284. end
  285. %--------------------------------------------------
  286. % De-noising: 
  287. %   - Initialization of  window.
  288. %   - De-noising with the default threshold values,
  289. %     with Fixed form soft thresholding method.
  290. %--------------------------------------------------
  291. win_deno = dw1dmngr('deno',win_dw1d);
  292. wenamngr('Inactive',win_deno);
  293. % UTTHRW1D handlesUIC (De-noising).
  294. %-------------------------------------
  295. % ud.handlesUIC = ...
  296. %   [fra_utl;txt_top;pop_met; ...
  297. %    rad_sof;rad_har;txt_noi;pop_noi; ...
  298. %    txt_BMS;sli_BMS;txt_tit(1:4),...
  299. %    txt_nor;edi_nor;txt_npc; ...
  300. %    txt_zer;edi_zer;txt_zpc; ...
  301. %    tog_thr;tog_res;pus_est];
  302. %--------------------------------------------------
  303. handlesUIC = utthrw1d('handlesUIC',win_deno);
  304. pop_met    = handlesUIC(3);
  305. rad_har    = handlesUIC(5);
  306. win_deno_Params = {win_deno,pop_met,rad_har};
  307. wtbxappdata('set',figHandle,'win_deno_Params',win_deno_Params);
  308. %--------------------------------------------------
  309. pause(1)
  310. dw1ddeno('denoise',win_deno,win_dw1d);
  311. wenamngr('Inactive',win_deno);
  312. case 17
  313. %--------------------------------------------------
  314. % De-noising: 
  315. %   - De-noising with the default threshold values.
  316. %     with Fixed form hard thresholding.
  317. %--------------------------------------------------
  318. win_deno_Params = wtbxappdata('get',figHandle,'win_deno_Params');
  319. [win_deno,pop_met,rad_har] = deal(win_deno_Params{:});
  320. if idxPREV>idxSlide
  321. set(pop_met,'Value',1)
  322. eval(get(pop_met,'Callback'))
  323. end
  324. set(rad_har,'Value',1)
  325. eval(get(rad_har,'Callback'))
  326. dw1ddeno('denoise',win_deno,win_dw1d);
  327. wenamngr('Inactive',win_deno);
  328. case 18
  329. % De-noising: 
  330. %   - Change the method of thresholding to:
  331. %     the Penalize medium thresholding method.
  332. %--------------------------------------------------
  333. win_deno_Params = wtbxappdata('get',figHandle,'win_deno_Params');
  334. [win_deno,pop_met,rad_har] = deal(win_deno_Params{:});
  335. set(pop_met,'Value',6)
  336. eval(get(pop_met,'Callback'))
  337. case 19
  338. if idxPREV<idxSlide
  339. % De-noising: 
  340. %   - De-noising with the default threshold values,
  341. %     with Penalize medium thresholding method.
  342. %--------------------------------------------------
  343. win_deno_Params = wtbxappdata('get',figHandle,'win_deno_Params');
  344. win_deno = win_deno_Params{1};
  345. dw1ddeno('denoise',win_deno,win_dw1d);
  346. wenamngr('Inactive',win_deno);
  347. else
  348. dmsgfun('close');
  349. end
  350. case 20 
  351. if idxPREV>idxSlide
  352. deleteSubFig(figHandle,'win_deno_Params');
  353. win_deno = dw1dmngr('deno',win_dw1d);
  354. wenamngr('Inactive',win_deno);
  355. handlesUIC = utthrw1d('handlesUIC',win_deno);
  356. pop_met    = handlesUIC(3);
  357. rad_har    = handlesUIC(5);
  358. win_deno_Params = {win_deno,pop_met,rad_har};
  359. wtbxappdata('set',figHandle,'win_deno_Params',win_deno_Params);
  360. set(pop_met,'Value',6)
  361. eval(get(pop_met,'Callback'))
  362. dw1ddeno('denoise',win_deno,win_dw1d);
  363. wenamngr('Inactive',win_deno);
  364. else
  365. % DISPLAY MESSAGE ONLY!
  366. end
  367. case 21
  368. %-------------------------------
  369. % Close De-noising window
  370. % and update synthesized signal.
  371. %-------------------------------
  372. win_deno_Params = wtbxappdata('get',figHandle,'win_deno_Params');
  373. win_deno = win_deno_Params{1};
  374. % MemBloc1 of stored values.
  375. %---------------------------
  376. n_param_anal  = 'DWAn1d_Par_Anal';
  377. ind_ssig_type = 7;
  378. wwaiting('msg',win_deno,'Wait ... computing');
  379. lin_den = utthrw1d('get',win_deno,'handleTHR');
  380. wmemtool('wmb',win_dw1d,n_param_anal,ind_ssig_type,'ds');
  381. dw1dmngr('return_deno',win_dw1d,1,lin_den);
  382. wenamngr('Inactive',win_dw1d);
  383. wwaiting('off',win_deno);
  384. delete(win_deno)
  385. dmsgfun('close');
  386. case 22
  387. if idxPREV<idxSlide
  388. %----------------------------------------
  389. % More Display Option window parameters.
  390. %----------------------------------------
  391. win_mopt_Params = makeWinOpt(figHandle,win_dw1d);
  392. win_mopt = win_mopt_Params{1};
  393. wenamngr('Inactive',win_mopt);
  394. %-----------------------------------------
  395. else
  396. win_mopt_Params = wtbxappdata('get',figHandle,'win_mopt_Params');
  397. [win_mopt,chk_det_on,chk_cfs_on,pop_ccfs] = deal(win_mopt_Params{:});
  398. set(chk_cfs_on,'Value',1);
  399. dw1ddisp('apply',win_dw1d,win_mopt);
  400. end
  401.     case 23
  402. if idxPREV<idxSlide
  403. win_mopt_Params = wtbxappdata('get',figHandle,'win_mopt_Params');
  404. else
  405. win_mopt_Params = makeWinOpt(figHandle,win_dw1d);
  406. end
  407. [win_mopt,chk_det_on,chk_cfs_on,pop_ccfs] = deal(win_mopt_Params{:});
  408. set(chk_cfs_on,'Value',0);
  409. pause(1)
  410. dw1ddisp('apply',win_dw1d,win_mopt);
  411. case 24
  412. %-----------------------------------
  413. % Close More Display Option window.
  414. %-----------------------------------
  415. deleteSubFig(figHandle,'win_mopt_Params');
  416.   end
  417.   [msg,ok] = get_Message(idxSlide);
  418.   if ok , wshowdrv('#disp_msg',figHandle,msg,'step',win_dw1d); end
  419. end
  420. return
  421. end
  422. if nargout<1,
  423.   wshowdrv(mfilename)
  424. else
  425.   idx = 0; slide(1).code = {}; slide(1).text = {};
  426.   
  427.   %========== Slide 1 ==========
  428.   idx = idx+1;
  429.   slide(idx).code = {
  430.   'figHandle = gcf;',
  431.   [mfilename ,'(''slidePROC'',figHandle,',int2str(idx),');']};
  432.   %========== Slide 2 to Slide 24 ==========
  433.   for idx = 2:24
  434.     slide(idx).code = {[mfilename ,'(''slidePROC'',figHandle,',int2str(idx),');']};
  435.   end
  436.   %========== Set "previous" slide indices ==========
  437.   
  438.   % Compression slides.
  439.   %--------------------
  440.   slide(12).idxPrev = 10;
  441.   slide(13).idxPrev = 10;
  442.   slide(14).idxPrev = 10;
  443.   slide(15).idxPrev = 10;
  444.   
  445.   % De-noising slides.
  446.   %-------------------
  447.   slide(16).idxPrev = 10;
  448.   slide(21).idxPrev = 20;
  449.   slide(22).idxPrev = 20;
  450.   %===================================================
  451.   varargout{1} = slide;
  452.   
  453. end
  454. %------------------------------------------------------------------------------------------%
  455. function deleteSubFig(figHandle,win_Params_Name)
  456. win_Params = wtbxappdata('get',figHandle,win_Params_Name);
  457. if ~isempty(win_Params)
  458. win = win_Params{1};
  459. if ishandle(win) , delete(win); end
  460. wtbxappdata('del',figHandle,win_Params_Name);
  461. end
  462. %------------------------------------------------------------------------------------------%
  463. function win_mopt_Params = makeWinOpt(figHandle,win_dw1d)
  464. win_mopt = dw1ddisp('create',win_dw1d);
  465. wenamngr('Inactive',win_mopt);
  466. tag_cfs_on   = 'Chk_Cfs';
  467. tag_det_on   = 'Chk_Det';
  468. tag_pop_ccfs = 'Pop_CCfs';
  469. uic_win_mopt = findobj(win_mopt,'Type','uicontrol');
  470. chk_det_on   = findobj(uic_win_mopt,'Tag',tag_det_on);
  471. chk_cfs_on   = findobj(uic_win_mopt,'Tag',tag_cfs_on);
  472. pop_ccfs     = findobj(uic_win_mopt,'Tag',tag_pop_ccfs);
  473. win_mopt_Params = {win_mopt,chk_det_on,chk_cfs_on,pop_ccfs};
  474. wtbxappdata('set',figHandle,'win_mopt_Params',win_mopt_Params);
  475. %------------------------------------------------------------------------------------------%
  476. function [msg,ok_msg] = get_Message(idxSlide)
  477. ok_msg = 1;
  478. switch idxSlide
  479. case 2
  480. str1 = 'This demo shows the 1-D wavelet capabilities of the ';
  481. str2 = 'Wavelet GUI tools. The scenario supposes that we want to';
  482. str3 = 'de-noise or compress a 1-D signal. In this example, we ';
  483. str4 = 'decompose a simple synthetic noisy Doppler signal using ';
  484. str5 = 'the Symlet 4 wavelet (sym4) into five levels.';
  485. msg  = strvcat(str1,str2,str3,str4,str5);
  486. case 3
  487. str1 = 'The full decomposition appears, with the signal denoted s at the top.';
  488. str2 = 'This signal is equal to the sum of the coarsest approximation (a5)';
  489. str3 = 'and the details at levels 1 to 5 (d1 ... d5).';
  490. str4 = 'i.e.,  s = a5 + d5 + d4 + d3 + d2 + d1';
  491. str5 = 'Since sym4 is an orthogonal wavelet, the decomposition is orthogonal.';
  492. msg  = strvcat(str1,str2,str3,str4,str5,'$');
  493. str1 = 'How do we select the wavelet and decomposition level?';
  494. msg  = strvcat(msg,str1,'$');
  495. str1 = 'For de-noising or compression, both the decomposition level and ';
  496. str2 = 'wavelet are useful tuning parameters.';
  497. str3 = 'Recall that the de-noised or compressed signal is equal to';
  498. str4 = 'the coarsest approximation + some signal reconstructed using the ';
  499. str5 = 'thresholded detail coefficients.';
  500. msg  = strvcat(msg,str1,str2,str3,str4,str5,'$');
  501. str1 = 'Often the wavelet choice is not crucial, and any "short" wavelet';
  502. str2 = 'except Haar is a good starting point.';
  503. msg  = strvcat(msg,str1,str2,'$');
  504. str1 = 'Having selected a wavelet, the decomposition level needs to be selected.';
  505. str2 = 'To study this, let us change to the Separate display mode.';
  506. msg  = strvcat(msg,str1,str2);
  507. case 4
  508. str1 = 'As a rule of thumb, we can select the decomposition level in such';
  509. str2 = 'a way that the corresponding approximation is noise free. In this';
  510. str3 = 'example 4 or 5 are good candidates, since the approximations at levels';
  511. str4 = '1 to 3 are clearly noisy. In addition, the detail d5 contains';
  512. str5 = 'significant noise as it can be seen inspecting the second half of the';
  513. str6 = 'detail, so 5 should be a good value for the decomposition level.';
  514. msg  = strvcat(str1,str2,str3,str4,str5,str6,'$');
  515. str1 = 'The Wavelet GUI provides a flexible and configurable interface.';
  516. msg  = strvcat(msg,str1,'$');
  517. str1 = 'In the current view, one can see the wavelet coefficients, cfs. We';
  518. str2 = 'focus on the coefficients, selecting Show and Scroll display mode,';
  519. str3 = 'selecting the approximation at level 5 and using the More Display';
  520. str4 = 'Options and removing the Detail Axes.';
  521. msg  = strvcat(msg,str1,str2,str3,str4);
  522. case 6
  523. str1 = 'The time-scale pattern shows that the';
  524. str2 = 'deterministic part of the signal is concentrated in a few big coefficients,';
  525. str3 = 'and noise corrupts all the time-scale representation.';
  526. str4 = 'To reinforce this, use the coloration  mode init + all levels + abs';
  527. str5 = 'in order to rescale globally the absolute coefficients.';
  528. msg  = strvcat(str1,str2,str3,str4,str5);
  529. case 7
  530. str1 = 'Clicking on the Histograms button and selecting all the detail coefficients,';
  531. str2 = 'we can see that the detail coefficients are approximately Gaussian N(0,1)';
  532. str3 = 'except for extreme values outside the interval [-4 4] which are';
  533. str4 = 'linked to the decomposition of the deterministic part of the signal.';
  534. msg  = strvcat(str1,str2,str3,str4);
  535. case 8
  536. str1 = 'The de-noising or compression procedure acts on these coefficients killing';
  537. str2 = 'the lowest coefficients in absolute value terms and keeping large values.';
  538. msg  = strvcat(str1,str2);
  539. case 9
  540. str1 = 'Compression.';
  541. str2 = '------------';
  542. str3 = 'We press the Compress button, and the compression window appears.';
  543. str4 = 'This allows the user to select the threshold value with respect to';
  544. str5 = 'two design parameters:';
  545. msg  = strvcat(str1,str2,str3,str4,str5);
  546. case 10
  547. str1 = '- the retained energy in percent which is equal to 100 times';
  548. str2 = 'the square norm of the compressed signal over the square norm of the';
  549. str3 = 'original signal (magenta line on the left);';
  550. msg  = strvcat(str1,str2,str3,'$');
  551. str4 = '- the number of zeros in percent which is equal to the percentage of zeros of';
  552. str5 = 'the wavelet representation of the compressed signal (blue line on the left).';
  553. str6 = 'The threshold default value given by the toolbox in the 1-D case is the one';
  554. str7 = 'for which the two previously defined design parameters are approximately the';
  555. str8 = 'same.';
  556. msg  = strvcat(msg,str4,str5,str6,str7,str8,'$');
  557. str1 = 'Then compression using the threshold default value leads a smoothed signal,';
  558. str2 = 'and the explanation of how the compression works is clear from the';
  559. str3 = 'comparison of original and thresholded coefficients in the time-scale';
  560. str4 = 'representations.';
  561. msg  = strvcat(msg,str1,str2,str3,str4);
  562. case 12
  563. str1 = 'You can then iterate choosing the threshold value or the retained energy';
  564. str2 = 'or the number of zeros. A modification of each of the three parameters';
  565. str3 = 'automatically updates the other two.';
  566. msg  = strvcat(str1,str2,str3);
  567. case 13
  568. str1 = 'To learn more about the compression procedure we select';
  569. str2 = 'the By-Level thresholding mode.';
  570. str3 = 'The detail coefficients are thresholded according to the thresholds represented';
  571. str4 = 'by the yellow lines on the left. With respect to the previous mode, this one';
  572. str5 = 'allows level-dependent threshold values leading to additional flexibility.';
  573. str6 = 'The resulting compressed signal can be found in the following figure.';
  574. msg  = strvcat(str1,str2,str3,str4,str5,str6);
  575. case 15
  576. str1 = 'De-noising.';
  577. str2 = '-----------';
  578. str3 = 'The design objective is to recover the signal or to remove noise,';
  579. str4 = 'without reference to an original interesting signal which is supposed to be';
  580. str5 = 'unknown. It is assumed that additive noise corrupts the signal to be';
  581. str6 = 'recovered, and is supposed to be stationary (at least at each scale).';
  582. msg  = strvcat(str1,str2,str3,str4,str5,str6,'$');
  583. str1 = 'The main ideas for de-noising and for compression are the same. The differences';
  584. str2 = 'are located at two points:';
  585. str3 = '- soft thresholding (shrinkage) is often used instead of the more crude';
  586. str4 = 'hard thresholding.';
  587. str5 = '- the noise structure (scaled or unscaled white noise, coloured noise) is of';
  588. str6 = 'interest.';
  589. msg  = strvcat(msg,str1,str2,str3,str4,str5,str6,'$');
  590. str1 = 'The GUI tools for de-noising are similar to the Compression tools. ';
  591. str2 = ' ';
  592. str3 = 'When you push on De-noise, the de-noising window appears,';
  593. str4 = 'we apply the default selection.';
  594. msg  = strvcat(msg,str1,str2,str3,str4);
  595. case 16
  596. str1 = 'As can be seen, the procedure keeps roughly the highest coefficients.';
  597. str2 = 'Then using the same default, we can show the differences between';
  598. str3 = 'soft and hard thresholding.';
  599. msg  = strvcat(str1,str2,str3);
  600. ok_msg = 1;
  601. case 177
  602. str1 = ' ';
  603. str2 = ' ';
  604. msg  = strvcat(str1,str2);
  605. case 20
  606. str1 = 'Now we close the de-noising window, update the de-noised signal and compare';
  607. str2 = 'the two signals in full size.';
  608. msg  = strvcat(str1,str2);
  609. otherwise
  610. msg = '';
  611. ok_msg = 0;
  612. end
  613. %------------------------------------------------------------------------------------------%