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

波变换

开发平台:

Matlab

  1. function varargout = compwav(varargin)
  2. %COMPWAV Pattern detection tool using an adapted wavelet versus a well known one.
  3. %   VARARGOUT = COMPWAV(VARARGIN)
  4. % COMPWAV M-file for compwav.fig
  5. %      COMPWAV, by itself, creates a new COMPWAV or raises the existing
  6. %      singleton*.
  7. %
  8. %      H = COMPWAV returns the handle to a new COMPWAV or the handle to
  9. %      the existing singleton*.
  10. %
  11. %      COMPWAV('Property','Value',...) creates a new COMPWAV using the
  12. %      given property value pairs. Unrecognized properties are passed via
  13. %      varargin to compwav_OpeningFcn.  This calling syntax produces a
  14. %      warning when there is an existing singleton*.
  15. %
  16. %      COMPWAV('CALLBACK') and COMPWAV('CALLBACK',hObject,...) call the
  17. %      local function named CALLBACK in COMPWAV.M with the given input
  18. %      arguments.
  19. %
  20. %      *See GUI Options on GUIDE's Tools menu.  Choose "GUI allows only one
  21. %      instance to run (singleton)".
  22. %
  23. % See also: GUIDE, GUIDATA, GUIHANDLES
  24. % Last Modified by GUIDE v2.5 08-Jul-2003 15:49:15
  25. %
  26. %   M. Misiti, Y. Misiti, G. Oppenheim, J.M. Poggi 01-Feb-2003.
  27. %   Last Revision: 24-Feb-2004.
  28. %   Copyright 1995-2004 The MathWorks, Inc.
  29. %   $Revision: 1.1.6.2 $ $Date: 2004/03/15 22:39:57 $ 
  30. %*************************************************************************%
  31. %                BEGIN initialization code - DO NOT EDIT                  %
  32. %                ----------------------------------------                 %
  33. %*************************************************************************%
  34. gui_Singleton = 0;
  35. gui_State = struct('gui_Name',       mfilename, ...
  36.                    'gui_Singleton',  gui_Singleton, ...
  37.                    'gui_OpeningFcn', @compwav_OpeningFcn, ...
  38.                    'gui_OutputFcn',  @compwav_OutputFcn, ...
  39.                    'gui_LayoutFcn',  [], ...
  40.                    'gui_Callback',   []);
  41. if nargin & isstr(varargin{1})
  42.     gui_State.gui_Callback = str2func(varargin{1});
  43. end
  44. if nargout
  45.     [varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
  46. else
  47.     gui_mainfcn(gui_State, varargin{:});
  48. end
  49. %*************************************************************************%
  50. %                END initialization code - DO NOT EDIT                    %
  51. %*************************************************************************%
  52. %*************************************************************************%
  53. %                BEGIN Opening Function                                   %
  54. %                ----------------------                                   %
  55. % --- Executes just before compwav is made visible.                      %
  56. %*************************************************************************%
  57. function compwav_OpeningFcn(hObject, eventdata, handles, varargin)
  58. % This function has no output args, see OutputFcn.
  59. % hObject    handle to figure
  60. % eventdata  reserved - to be defined in a future version of MATLAB
  61. % handles    structure with handles and user data (see GUIDATA)
  62. % varargin   unrecognized PropertyName/PropertyValue pairs from the
  63. %            command line (see VARARGIN)
  64. % Choose default command line output for compwav
  65. handles.output = hObject;
  66. % Update handles structure
  67. guidata(hObject, handles);
  68. % UIWAIT makes compwav wait for user response (see UIRESUME)
  69. % uiwait(handles.Fig_PatCwtComp);
  70. %%!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!%
  71. % TOOL INITIALISATION Introduced manualy in the automatic generated code  %
  72. %%!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!%
  73. Init_Tool(hObject,eventdata,handles);
  74. %*************************************************************************%
  75. %                END Opening Function                                     %
  76. %*************************************************************************%
  77. %*************************************************************************%
  78. %                BEGIN Output Function                                    %
  79. %                ---------------------                                    %
  80. % --- Outputs from this function are returned to the command line.        %
  81. %*************************************************************************%
  82. function varargout = compwav_OutputFcn(hObject, eventdata, handles)
  83. % varargout  cell array for returning output args (see VARARGOUT);
  84. % hObject    handle to figure
  85. % eventdata  reserved - to be defined in a future version of MATLAB
  86. % handles    structure with handles and user data (see GUIDATA)
  87. % Get default command line output from handles structure
  88. varargout{1} = handles.output;
  89. %*************************************************************************%
  90. %                END Output Function                                      %
  91. %*************************************************************************%
  92. %=========================================================================%
  93. %                BEGIN Create Functions                                   %
  94. %                ----------------------                                   %
  95. % --- Executes during object creation, after setting all properties.      %
  96. %=========================================================================%
  97. function EdiPop_CreateFcn(hObject,eventdata,handles)
  98. % hObject    handle to Edi_Object or Pop_Object (see GCBO)
  99. % eventdata  reserved - to be defined in a future version of MATLAB
  100. % handles    empty - handles not created until after all CreateFcns called
  101. % Hint: edit controls usually have a white background on Windows.
  102. % Hint: popupmenu controls usually have a white background on Windows.
  103. % See ISPC and COMPUTER.
  104. if ispc
  105.     % set(hObject,'BackgroundColor','white');
  106.     set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor'));
  107. else
  108.     set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor'));
  109. end
  110. %--------------------------------------------------------------------------
  111. function Sli_CreateFcn(hObject, eventdata, handles)
  112. % hObject    handle to Sli_Object (see GCBO)
  113. % eventdata  reserved - to be defined in a future version of MATLAB
  114. % handles    empty - handles not created until after all CreateFcns called
  115. % Hint: slider controls usually have a light gray background, change
  116. %       'usewhitebg' to 0 to use default.  See ISPC and COMPUTER.
  117. usewhitebg = 1;
  118. if usewhitebg
  119.     set(hObject,'BackgroundColor',[.9 .9 .9]);
  120. else
  121.     set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor'));
  122. end
  123. %--------------------------------------------------------------------------
  124. %=========================================================================%
  125. %                END Create Functions                                     %
  126. %=========================================================================%
  127. %=========================================================================%
  128. %                BEGIN Callback Functions                                 %
  129. %                ------------------------                                 %
  130. %=========================================================================%
  131. % --- Executes on button press in Rad_Trans.
  132. function Rad_TwoPatterns_Callback(hObject, eventdata, handles)
  133. % hObject    handle to Rad_Trans (see GCBO)
  134. % eventdata  reserved - to be defined in a future version of MATLAB
  135. % handles    structure with handles and user data (see GUIDATA)
  136. set(hObject,'Value',1);
  137. set(handles.Rad_Test_Sig,'Value',0);
  138. % set([handles.Rad_Super,handles.Rad_Trans],'Enable','on')
  139. set([handles.Pop_Test_Sig],'Enable','off')
  140. %--------------------------------------------------------------------------
  141. % --- Executes on button press in Rad_Trans.
  142. function Rad_Trans_Callback(hObject, eventdata, handles)
  143. % hObject    handle to Rad_Trans (see GCBO)
  144. % eventdata  reserved - to be defined in a future version of MATLAB
  145. % handles    structure with handles and user data (see GUIDATA)
  146. set(hObject,'Value',1);
  147. set(handles.Rad_Super,'Value',0);
  148. %--------------------------------------------------------------------------
  149. % --- Executes on button press in Rad_Super.
  150. function Rad_Super_Callback(hObject, eventdata, handles)
  151. % hObject    handle to Rad_Super (see GCBO)
  152. % eventdata  reserved - to be defined in a future version of MATLAB
  153. % handles    structure with handles and user data (see GUIDATA)
  154. set(hObject,'Value',1);
  155. set(handles.Rad_Trans,'Value',0);
  156. %--------------------------------------------------------------------------
  157. % --- Executes on button press in Rad_Test_Sig.
  158. function Rad_Test_Sig_Callback(hObject, eventdata, handles)
  159. % hObject    handle to Rad_Test_Sig (see GCBO)
  160. % eventdata  reserved - to be defined in a future version of MATLAB
  161. % handles    structure with handles and user data (see GUIDATA)
  162. set(hObject,'Value',1);
  163. set(handles.Rad_TwoPatterns,'Value',0);
  164. % set([handles.Rad_Super,handles.Rad_Trans],'Enable','off')
  165. set([handles.Rad_Test_Sig,handles.Pop_Test_Sig],'Enable','on')
  166. %--------------------------------------------------------------------------
  167. % --- Executes on selection change in Pop_Test_Sig.
  168. function Pop_Test_Sig_Callback(hObject, eventdata, handles)
  169. % hObject    handle to Pop_Test_Sig (see GCBO)
  170. % eventdata  reserved - to be defined in a future version of MATLAB
  171. % handles    structure with handles and user data (see GUIDATA)
  172. %--------------------------------------------------------------------------
  173. % --- Executes on button press in Chk_Noise.
  174. function Chk_Noise_Callback(hObject, eventdata, handles)
  175. % hObject    handle to Chk_Noise (see GCBO)
  176. % eventdata  reserved - to be defined in a future version of MATLAB
  177. % handles    structure with handles and user data (see GUIDATA)
  178. %--------------------------------------------------------------------------
  179. % --- Executes on button press in Chk_Triangle.
  180. function Chk_Triangle_Callback(hObject, eventdata, handles)
  181. % hObject    handle to Chk_Triangle (see GCBO)
  182. % eventdata  reserved - to be defined in a future version of MATLAB
  183. % handles    structure with handles and user data (see GUIDATA)
  184. %--------------------------------------------------------------------------
  185. % --- Executes on selection change in Pop_Wav_Fam.
  186. function Pop_Wav_Fam_Callback(hObject, eventdata, handles)
  187. % hObject    handle to Pop_Wav_Fam (see GCBO)
  188. % eventdata  reserved - to be defined in a future version of MATLAB
  189. % handles    structure with handles and user data (see GUIDATA)
  190. cbanapar('cba_fam',gcbf,[],guidata(gcbo));
  191. %--------------------------------------------------------------------------
  192. % --- Executes on selection change in Pop_Wav_Num.
  193. function Pop_Wav_Num_Callback(hObject, eventdata, handles)
  194. % hObject    handle to Pop_Wav_Num (see GCBO)
  195. % eventdata  reserved - to be defined in a future version of MATLAB
  196. % handles    structure with handles and user data (see GUIDATA)
  197. cbanapar('cba_num',gcbf,[],guidata(gcbo));
  198. %--------------------------------------------------------------------------
  199. % --- Executes on button press in Rad_Contours.
  200. function Rad_Contours_Callback(hObject, eventdata, handles)
  201. % hObject    handle to Rad_Contours (see GCBO)
  202. % eventdata  reserved - to be defined in a future version of MATLAB
  203. % handles    structure with handles and user data (see GUIDATA)
  204. set(hObject,'Value',1);
  205. set(handles.Rad_Images,'Value',0);
  206. %--------------------------------------------------------------------------
  207. % --- Executes on slider movement.
  208. function Sli_Thresh_Callback(hObject, eventdata, handles)
  209. % hObject    handle to Sli_Thresh (see GCBO)
  210. % eventdata  reserved - to be defined in a future version of MATLAB
  211. % handles    structure with handles and user data (see GUIDATA)
  212. Tresh = get(hObject,'Value');
  213. set(handles.Edi_Thresh,'string',Tresh);
  214. % --- Executes on button press in Edi_Thresh.
  215. function Edi_Thresh_Callback(hObject, eventdata, handles)
  216. % hObject    handle to Edi_Thresh (see GCBO)
  217. % eventdata  reserved - to be defined in a future version of MATLAB
  218. % handles    structure with handles and user data (see GUIDATA)
  219. FieldDefault ='0.7';
  220. Val_Thresh = str2double(get(hObject,'String'));
  221. if Val_Thresh < 0.1 || Val_Thresh > 0.9 || isnan(Val_Thresh)
  222.     set(hObject,'String',FieldDefault);
  223.     set(handles.Sli_Thresh,'Value',str2double(FieldDefault));
  224. else
  225.     set(handles.Sli_Thresh,'Value',Val_Thresh);
  226. end
  227. %--------------------------------------------------------------------------
  228. % --- Executes on button press in Rad_Images.
  229. function Rad_Images_Callback(hObject, eventdata, handles)
  230. % hObject    handle to Rad_Images (see GCBO)
  231. % eventdata  reserved - to be defined in a future version of MATLAB
  232. % handles    structure with handles and user data (see GUIDATA)
  233. set(hObject,'Value',1);
  234. set(handles.Rad_Contours,'Value',0);
  235. %--------------------------------------------------------------------------
  236. function Pus_Run_Callback(hObject, eventdata, handles)
  237. % hObject    handle to Pus_Run (see GCBO)
  238. % eventdata  reserved - to be defined in a future version of MATLAB
  239. % handles    structure with handles and user data (see GUIDATA)
  240. % Get figure handle.
  241. %-------------------
  242. hFig = handles.output;
  243. % Cleaning.
  244. %-----------
  245. wwaiting('msg',hFig,'Wait ... cleaning');
  246. cleanTOOL([                                 ...
  247.             handles.Axe_RunSigAdapWave ,    ...
  248.             handles.Axe_RunSigWave ,        ...
  249.             handles.Axe_AdapWaveDetect ,    ...
  250.             handles.Axe_WaveDetect          ...
  251.             ]);
  252. % Get parameter values.
  253. %----------------------
  254. tool_PARAMS = wtbxappdata('get',hObject,'tool_PARAMS');
  255. X           = tool_PARAMS.X;
  256. Y           = tool_PARAMS.Y;
  257. PSI         = tool_PARAMS.PSI;
  258. NC_PSI      = tool_PARAMS.NC_PSI;
  259. % Get uicontrol values.
  260. %----------------------
  261. RadTrans    = get(handles.Rad_Trans,'Value');
  262. RadSuper    = get(handles.Rad_Super,'Value');
  263. ChkNoise    = get(handles.Chk_Noise,'Value');
  264. ChkTriangle = get(handles.Chk_Triangle,'Value');
  265. RadContours = get(handles.Rad_Contours,'Value');
  266. RadImages   = get(handles.Rad_Images,'Value');
  267. Str_Thresh  = get(handles.Edi_Thresh,'String');
  268. Thresh      = str2double(Str_Thresh);
  269. % Running signal construction.
  270. %-----------------------------
  271. titleSTR{1} = 'Running Signal';
  272. radSIG = handles.Rad_Test_Sig;
  273. radVAL = get(radSIG,'Value');
  274. if radVAL==1
  275.     popSIG = handles.Pop_Test_Sig;
  276.     popVAL = get(popSIG,'Value');
  277.     popSTR = get(popSIG,'String');
  278.     sigNAM = deblank(popSTR(popVAL,:));
  279.     switch sigNAM{1}
  280.         case 'testsig0'
  281.             load pthaar
  282.         case 'testsig1'
  283.             load ptpssin1
  284.         case 'testsig2'
  285.             load ptpssin2
  286.         case 'testsig3'
  287.             load ptsine
  288.         case 'testsig4'
  289.             load ptsumsin
  290.         case 'testsig5'
  291.             load ptsinpol
  292.         case 'testsig6'
  293.             load ptodtri
  294.         case 'testsig7'
  295.             load ptodlin
  296.         case 'testsig8'
  297.             load ptodpoly
  298.     end
  299. end
  300. if RadTrans
  301.     nbFormeBASE = 8; scaleBASE = 8; rapport = 2; PONDERATIONS =  [1,1];
  302.     signalBASE = getSignal('translate',Y,rapport,PONDERATIONS,nbFormeBASE);
  303.     lenSIG  = length(signalBASE);
  304.     scaleMIN = 1;
  305.     scaleMAX = 2*scaleBASE;
  306.     NoiseLevel = 1.25;
  307.     titleSTR{2} = 'F((t-20)/8) + sqrt(2)timesF((t-40)/4)';
  308. else
  309.     nbFormeBASE = 3; scaleBASE = 32; rapport = 4; PONDERATIONS =  [1,1];
  310.     signalBASE = getSignal('superpose',Y,rapport,PONDERATIONS,nbFormeBASE);
  311.     lenSIG  = length(signalBASE);
  312.     scaleMIN = 1;
  313.     scaleMAX = 2*scaleBASE;
  314.     NoiseLevel = 0.75;   
  315.     titleSTR{2} = 'F((t-40)/32) + 2timesF((t-40)/8)';
  316. end
  317. if radVAL==1, titleSTR{2} = sigNAM{1}; end
  318. signal = signalBASE;
  319. if ChkNoise
  320.     NoiseLevel = NoiseLevel*std(signal);
  321.     Noise = NoiseLevel*randn(1,lenSIG);
  322.     signal = signal + Noise;
  323.     titleSTR{2} = [titleSTR{2} ' + N'];
  324. end
  325. if ChkTriangle
  326.     L = lenSIG/2;
  327.     Triangle = [1:floor(L) , ceil(L):-1:1]/ceil(L);
  328.     signal = signal + Triangle;
  329.     titleSTR{2} = [titleSTR{2} ' + T'];
  330. end
  331. intervalleSIG = [0,nbFormeBASE*scaleBASE];
  332. stepSIG = (intervalleSIG(2)-intervalleSIG(1))/(lenSIG-1);
  333. xvalSIG = linspace(intervalleSIG(1),intervalleSIG(2),lenSIG);
  334. stepScales = 1;
  335. scales  = [scaleMIN:stepScales:scaleMAX];
  336.     
  337. % Running signal (adapted wavelet column) axes display.
  338. %------------------------------------------------------
  339. lw = 1;
  340. axes(handles.Axe_RunSigAdapWave);
  341. line(xvalSIG,signal,'color','b','linewidth',lw);
  342. Xlim = intervalleSIG;
  343. ext = abs(max(signal) - min(signal)) / 100;
  344. Ylim = [min(signal)-ext max(signal)+ext];
  345. set(handles.Axe_RunSigAdapWave,'Xlim',Xlim,'Ylim',Ylim);
  346. if radVAL,
  347.     [Tit1 Tit2] = deal(titleSTR{:});
  348.     titleSTR = [Tit1 ': ' Tit2];
  349. end
  350. setAxesTitle(handles.Axe_RunSigAdapWave,titleSTR);
  351. % Set the axes visible.
  352. %----------------------
  353. set(handles.Axe_RunSigAdapWave,'Visible','on');
  354. % Running signal (wavelet column) axes display.
  355. %----------------------------------------------
  356. lw = 1;
  357. axes(handles.Axe_RunSigWave);
  358. line(xvalSIG,signal,'color','b','linewidth',lw);
  359. Xlim = intervalleSIG;
  360. ext = abs(max(signal) - min(signal)) / 100;
  361. Ylim = [min(signal)-ext max(signal)+ext];
  362. set(handles.Axe_RunSigWave,'Xlim',Xlim,'Ylim',Ylim);
  363. setAxesTitle(handles.Axe_RunSigWave,titleSTR);
  364. % Set the axes visible.
  365. %----------------------
  366. set(handles.Axe_RunSigWave,'Visible','on');
  367. % Get the wavelet used.
  368. %----------------------
  369. Wav = cbanapar('get',hFig,'wav');                           
  370. % Compute the cwt.
  371. %-----------------
  372. C_psi = cwt({signal,stepSIG},scales,PSI);
  373. C_wav = cwt({signal,stepSIG},scales,Wav);
  374. % Find the coordinates of max coefs.
  375. %-----------------------------------
  376. % [ROW_psi,COL_psi] = maxCoefs(C_psi);
  377. % [ROW_wav,COL_wav] = maxCoefs(C_wav);
  378. % Coefficients representation.
  379. %-----------------------------
  380. if RadContours
  381.     plotCONTOUR(C_psi,scales,xvalSIG,...
  382.         handles.Axe_AdapWaveDetect,handles.Axe_ColBar,'psi',Thresh);
  383. %     if ~radVAL, LocalGrid(handles.Axe_AdapWaveDetect,RadTrans); end;
  384.     LocalGrid(handles.Axe_AdapWaveDetect,RadTrans,radVAL);
  385.     plotCONTOUR(C_wav,scales,xvalSIG,...
  386.         handles.Axe_WaveDetect,handles.Axe_ColBar,Wav,Thresh);
  387. %     if ~radVAL, LocalGrid(handles.Axe_WaveDetect,RadTrans); end;
  388.     LocalGrid(handles.Axe_WaveDetect,RadTrans,radVAL);
  389.     set([handles.Fra_ColPar,handles.Txt_PAL,handles.Txt_NBC, ...
  390.          handles.Txt_BRI,handles.Pop_PAL,handles.Sli_NBC, ...
  391.          handles.Edi_NBC,handles.Pus_BRI_M,handles.Pus_BRI_P],'Enable', 'Off');
  392. elseif RadImages   
  393.     plotCOEFS(C_psi,scales,xvalSIG,handles,...
  394.         handles.Axe_AdapWaveDetect,handles.Axe_ColBar,'psi');
  395.     plotCOEFS(C_wav,scales,xvalSIG,handles,...
  396.         handles.Axe_WaveDetect,handles.Axe_ColBar,Wav);
  397.     set([handles.Fra_ColPar,handles.Txt_PAL,handles.Txt_NBC, ...
  398.          handles.Txt_BRI,handles.Pop_PAL,handles.Sli_NBC, ...
  399.          handles.Edi_NBC,handles.Pus_BRI_M,handles.Pus_BRI_P],'Enable', 'On');
  400. end
  401. % Set the axes visible.
  402. %----------------------
  403. set(handles.Axe_AdapWaveDetect,'Visible','on');
  404. set(handles.Axe_WaveDetect,'Visible','on');
  405. % Init DynVTool.
  406. %---------------
  407. axe_IND = [];
  408. axe_CMD = [...
  409.         handles.Axe_RunSigAdapWave , ...
  410.         handles.Axe_RunSigWave , ...
  411.         handles.Axe_AdapWaveDetect , ...
  412.         handles.Axe_WaveDetect ...
  413.         ];
  414. axe_ACT = [];
  415. dynvtool('init',hFig,axe_IND,axe_CMD,axe_ACT,[1 0],'','','');
  416. % End waiting.
  417. %-------------
  418. wwaiting('off',hFig);
  419. %--------------------------------------------------------------------------
  420. % --- Executes on button press in Pus_CloseWin.
  421. function Pus_CloseWin_Callback(hObject, eventdata, handles)
  422. % hObject    handle to Pus_CloseWin (see GCBO)
  423. % eventdata  reserved - to be defined in a future version of MATLAB
  424. % handles    structure with handles and user data (see GUIDATA)
  425. % Get nwavetool figure parameters.
  426. %---------------------------------
  427. tool_PARAMS = wtbxappdata('get',hObject,'tool_PARAMS');
  428. % Enable the compare button on in nwavetool figure.
  429. %--------------------------------------------------
  430. set(tool_PARAMS.Pus_Compare,'Enable','On');
  431. % Close current figure.
  432. %----------------------
  433. close(gcbf)
  434. %--------------------------------------------------------------------------
  435. %=========================================================================%
  436. %                END Callback Functions                                   %
  437. %=========================================================================%
  438. %=========================================================================%
  439. %                BEGIN Special Callback Functions                         %
  440. %                --------------------------------                         %
  441. %=========================================================================%
  442. % --- Executes on button press in Compare from nwavtool figure.
  443. function NwavtoolCall_Callback(hObject, eventdata, handles,Nwavetool_PARAMS)
  444. % hObject    handle to Pus_Compare (see GCBO)
  445. % eventdata  reserved - to be defined in a future version of MATLAB
  446. % handles    structure with handles and user data (see GUIDATA)
  447. % Save nwavtool information in 'Userdata' field of compwav figure.
  448. %-----------------------------------------------------------------
  449. if isfield(Nwavetool_PARAMS,'demoMODE')
  450.     F1 = allchild(0);
  451. end
  452. compwav('userdata',Nwavetool_PARAMS);
  453. if isfield(Nwavetool_PARAMS,'demoMODE')
  454.     F2 = allchild(0);
  455.     hFig = setdiff(F2,F1);
  456.     set(hFig,'HandleVisibility','On')
  457. end
  458. %=========================================================================%
  459. %                END Special Callback Functions                           %
  460. %=========================================================================%
  461. %=========================================================================%
  462. %                BEGIN Tool Initialization                                %
  463. %                -------------------------                                %
  464. %=========================================================================%
  465. function Init_Tool(hObject, eventdata, handles)
  466. % WTBX -- Install DynVTool.
  467. %--------------------------
  468. dynvtool('Install_V3',hObject,handles);
  469. % WTBX -- Install MENUS.
  470. %-----------------------
  471. wfigmngr('extfig',hObject,'ExtFig_GUIDE');
  472. wfigmngr('attach_close',hObject);
  473. set(hObject,'HandleVisibility','On');
  474. hdl_Menus = Install_MENUS(hObject);
  475. % WTBX -- Install ANAPAR FRAME.
  476. %------------------------------
  477. wnameDEF  = 'db1';
  478. utanapar('Install_V3_CB',hObject,'wtype','cwt');
  479. set(hObject,'Visible','On'); pause(0.01) %%% MiMi : BUG MATLAB %%%
  480. cbanapar('set',hObject,'wav',wnameDEF);
  481. % WTBX -- Install COLORMAP FRAME
  482. %-------------------------------
  483. utcolmap('Install_V3',hObject,'enable','On');
  484. default_nbcolors = 240;
  485. cbcolmap('set',hObject,'pal',{'jet',default_nbcolors});
  486. % Get nwavetool figure parameters.
  487. %---------------------------------
  488. Nwavetool_PARAMS = get(hObject,'Userdata');
  489. % Initialize uicontrols.
  490. %-----------------------
  491. set(handles.Rad_Trans,'Value',Nwavetool_PARAMS.RadTrans);
  492. set(handles.Rad_Super,'Value',Nwavetool_PARAMS.RadSuper);
  493. set(handles.Chk_Noise,'Value',Nwavetool_PARAMS.ChkNoise);
  494. set(handles.Chk_Triangle,'Value',Nwavetool_PARAMS.ChkTriangle);
  495. set(Nwavetool_PARAMS.Pus_Compare,'Enable','Off');
  496. % Set current tool figure parameters.
  497. %------------------------------------
  498. tool_PARAMS.X       = Nwavetool_PARAMS.X;
  499. tool_PARAMS.Y       = Nwavetool_PARAMS.Y;
  500. tool_PARAMS.PSI     = Nwavetool_PARAMS.PSI;
  501. tool_PARAMS.NC_PSI  = Nwavetool_PARAMS.NC_PSI;
  502. tool_PARAMS.Pus_Compare = Nwavetool_PARAMS.Pus_Compare;
  503. wtbxappdata('set',hObject,'tool_PARAMS',tool_PARAMS);
  504. % Set Title in the RunSigAdapWave axes.
  505. %--------------------------------------
  506. titleSTR = 'Running Signal';
  507. setAxesTitle(handles.Axe_RunSigAdapWave,titleSTR);
  508. % Set Title in the RunSigWave axes.
  509. %----------------------------------
  510. titleSTR = 'Running Signal';
  511. setAxesTitle(handles.Axe_RunSigWave,titleSTR);
  512. % Set Title in the AdapWaveDetect signal axes.
  513. %---------------------------------------------
  514. titleSTR = 'Adapted Wavelet';
  515. setAxesTitle(handles.Axe_AdapWaveDetect,titleSTR);
  516. % Set Title in the pattern detection axes.
  517. %-----------------------------------------
  518. titleSTR = 'Wavelet';
  519. setAxesTitle(handles.Axe_WaveDetect,titleSTR);
  520. % Resize Figure.
  521. %---------------------
  522. redimfig('On',hObject);
  523. % Initialize colorbar.
  524. %---------------------
  525. cmap = get(hObject,'Colormap');
  526. axes(handles.Axe_ColBar);
  527. image([1:size(cmap,1)])
  528. set(handles.Axe_ColBar,...
  529.     'Xtick',[],'Xticklabel',[],'Ytick',[],'Yticklabel',[] ...    
  530.     );
  531. dynvzaxe('exclude',hObject,handles.Axe_ColBar)
  532. ColorBarVisibility(handles.Axe_ColBar,'Off');
  533. % First compare display.
  534. %-----------------------
  535. compwav('Pus_Run_Callback',hObject, eventdata, handles);
  536. ColorBarVisibility(handles.Axe_ColBar,'On');
  537. % End Of initialization.
  538. %-----------------------
  539. set(hObject,'HandleVisibility','Callback');
  540. %=========================================================================%
  541. %                END Tool Initialization                                  %
  542. %=========================================================================%
  543. %=========================================================================%
  544. %                BEGIN CleanTOOL function                                 %
  545. %                ------------------------                                 %
  546. %=========================================================================%
  547. function cleanTOOL(handles)
  548. hLINES  = findobj(handles,'type','line');
  549. delete(hLINES);
  550. hLINES  = findobj(handles,'type','patch');
  551. delete(hLINES);
  552. hIMAGES = findobj(handles,'type','Image');
  553. delete(hIMAGES);
  554. %--------------------------------------------------------------------------
  555. function ColorBarVisibility(Axe_ColBar,status)
  556. hIMAGES = findobj(Axe_ColBar,'type','image');
  557. set(Axe_ColBar,'Visible',status);
  558. set(hIMAGES,'Visible',status);
  559. %-------------------------------------------------------------------------
  560. %=========================================================================%
  561. %                END CleanTOOL function                                   %
  562. %=========================================================================%
  563. %=========================================================================%
  564. %                BEGIN Internal Functions                                 %
  565. %                ------------------------                                 %
  566. %=========================================================================%
  567. function hdl_Menus = Install_MENUS(hFig)
  568. % Add Help for Tool.
  569. %------------------
  570. % wfighelp('addHelpTool',hFig,'&Continuous Analysis','CW1D_GUI');
  571. % Add Help Item.
  572. %----------------
  573. % wfighelp('addHelpItem',hFig,'Continuous Transform','CW_TRANSFORM');
  574. hdl_Menus = [];
  575. %-------------------------------------------------------------------------
  576. function signalBASE = getSignal(typeSIG,FormeBASE,rapport,PONDERATIONS,nbFormeBASE)
  577. Forme_1 = FormeBASE;
  578. len_F1  = length(Forme_1);
  579. x_new   = linspace(0,1,len_F1/rapport);
  580. x_old   = linspace(0,1,len_F1);        
  581. Forme_2 = (rapport^0.5)*interp1(x_old,Forme_1,x_new);
  582. len_F2  = length(Forme_2);
  583. Forme_1 = PONDERATIONS(1)*Forme_1;
  584. Forme_2 = PONDERATIONS(2)*Forme_2;
  585. signalBASE = zeros(1,nbFormeBASE*len_F1);
  586. switch typeSIG
  587. case 'superpose'
  588.         deb = floor(((nbFormeBASE-1)/2-1/4)*len_F1) + 1; fin = deb + len_F1-1;
  589.         signalBASE(deb:fin) = Forme_1;
  590.         deb = deb + floor((len_F1-len_F2)/2); fin = deb + len_F2-1;
  591.         signalBASE(deb:fin) = signalBASE(deb:fin) + Forme_2;
  592. case 'translate'
  593.         deb = 2*len_F1; fin = deb + len_F1-1;
  594.         signalBASE(deb:fin) = Forme_1;
  595.         deb = floor(5*len_F1-len_F2/2); fin = deb + len_F2-1;        
  596.         signalBASE(deb:fin) = signalBASE(deb:fin) + Forme_2;
  597. end
  598. %-------------------------------------------------------------------------
  599. function plotCONTOUR(C,scales,xvalSIG,Axe,Axe_ColBar,Wav,Thresh)
  600. % Compute and plot contours.
  601. %---------------------------
  602. axes(Axe);
  603. maxi = max(max(abs(C))); 
  604. D = abs(C)/maxi;
  605. % xval = [0.7:0.025:1];
  606. xval = [Thresh:0.025:1];
  607. contour(xvalSIG,scales,D,xval);
  608. % Set Title in the pattern detection axes.
  609. %-----------------------------------------
  610. if isequal(Wav,'psi')
  611.     titleSTR = 'Adapted Wavelet';
  612. else
  613.     titleSTR = [Wav,' Wavelet'];
  614. end
  615. setAxesTitle(Axe,titleSTR);
  616. setAxesATTRB(scales,xvalSIG,Axe);
  617. % Set Xtick Values.
  618. %------------------
  619. NBC = 64;
  620. xV = [xval(1),xval(end)]; 
  621. setXTicks(Axe_ColBar,'real',NBC,xV);
  622. %-------------------------------------------------------------------------
  623. function plotCOEFS(C,scales,xvalSIG,handles,Axe,Axe_ColBar,Wav)
  624. axes(Axe);
  625. NBC = 240;
  626. abs_mode = 1;
  627. C = wcodemat(C,NBC,'mat',abs_mode);
  628. cbcolmap('set',handles.output,'pal',{'jet',NBC});
  629. xL = get(handles.Axe_RunSigWave,'Xlim');
  630. yL = [scales(1) scales(end)];
  631. img  = image(xL,yL,C);
  632. % Set Title in the pattern detection axes.
  633. %-----------------------------------------
  634. if isequal(Wav,'psi')
  635.     titleSTR = 'Adapted Wavelet';
  636. else
  637.     titleSTR = [Wav,' Wavelet'];
  638. end
  639. setAxesTitle(Axe,titleSTR);
  640. setAxesATTRB(scales,xvalSIG,Axe);
  641. setXTicks(Axe_ColBar,'real',NBC,[0 1],5);
  642. %-------------------------------------------------------------------------
  643. function plotSURF(C,scales,xvalSIG,Axe,Axe_ColBar,Wav)
  644. axes(Axe);
  645. NBC = 240;
  646. colormap(jet(NBC));
  647. maxi = max(max(abs(C)));
  648. D = abs(C)/maxi;
  649. s = surf(xvalSIG,scales,D); 
  650. shading interp
  651. set(Axe,'View',[-18 72],'Xlim',[xvalSIG(1),xvalSIG(end)],'Ylim',[1,size(C,1)]);
  652. % Set Title in the pattern detection axes.
  653. %-----------------------------------------
  654. if isequal(Wav,'psi')
  655.     titleSTR = 'Adapted Wavelet';
  656. else
  657.     titleSTR = [Wav,' Wavelet'];
  658. end
  659. setAxesTitle(Axe,titleSTR);
  660. setAxesATTRB(scales,xvalSIG,Axe);
  661. setXTicks(Axe_ColBar,'int',NBC,[0 NBC]);
  662. %-------------------------------------------------------------------------
  663. function setXTicks(Axe_ColBar,type,NBC,xV,nbTICS)
  664. axes(Axe_ColBar);
  665. colormap(jet(NBC))
  666. image([1:NBC])
  667. if nargin<5 , nbTICS = 7; end
  668. xlim = get(Axe_ColBar,'Xlim');
  669. alfa = (xlim(2)-xlim(1))/(xV(2)-xV(1));
  670. beta = xlim(1)-alfa*xV(1);
  671. xCOL  = linspace(xV(1),xV(2),nbTICS);
  672. xtics = alfa*xCOL + beta;
  673. switch type
  674.     case 'int'  , xlabs = int2str(xCOL(:));
  675.     case 'real' , xlabs = num2str(xCOL(:),2);
  676. end
  677. set(Axe_ColBar, ...
  678.         'XTick',xtics,'XTickLabel',xlabs, ...
  679.         'YTick',[],'YTickLabel',[] ...
  680.         );
  681. %-------------------------------------------------------------------------
  682. function setAxesATTRB(scales,xvalSIG,axe)
  683. nb_SCALES = length(scales);
  684. nb    = min(5,nb_SCALES);
  685. level = '';
  686. for k=1:nb , level = [level ' '  num2str(scales(k))]; end
  687. if nb<nb_SCALES , level = [level ' ...']; end
  688. nb    = ceil(nb_SCALES/20);
  689. ytics = nb:nb:nb_SCALES;
  690. tmp   = scales(nb:nb:nb*length(ytics));
  691. ylabs = num2str(tmp(:));
  692. set(axe, ...
  693.         'YTick',ytics,          ...
  694.         'YTickLabel',ylabs,     ...
  695.         'YDir','normal',        ...
  696.         'Box','On'              ...
  697.         );
  698. %-------------------------------------------------------------------------
  699. function [ROW,COL] = maxCoefs(C)
  700. [nb_ROW,nb_COL] = size(C);
  701. D = abs(C(:));
  702. [dummy,idx] = max(D);
  703. col_INF = fix(idx/nb_ROW);
  704. ROW = idx - nb_ROW*col_INF;
  705. if ROW~=0
  706.     COL = col_INF+1;
  707. else
  708.     COL = col_INF; ROW = nb_ROW;
  709. end
  710. %-------------------------------------------------------------------------
  711. function LocalGrid(Axe_Detect,RadTrans,radVAL)
  712. axes(Axe_Detect)
  713. % if RadTrans
  714. %     if radVAL
  715. %         line([10 10],[0 8],'color','k','LineStyle','--');
  716. %         line([0 10],[8 8],'color','k','LineStyle','--');
  717. %         line([30 30],[0 4],'color','k','LineStyle','--');
  718. %         line([0 30],[4 4],'color','k','LineStyle','--');
  719. %         line([50 50],[0 4],'color','k','LineStyle','--');
  720. %         line([0 50],[4 4],'color','k','LineStyle','--');
  721. %         line(10,8,'color','k','Marker','*');
  722. %         line(30,4,'color','k','Marker','*');
  723. %         line(50,4,'color','k','Marker','*');
  724. %     else
  725. %         line([20 20],[0 8],'color','k','LineStyle','--');
  726. %         line([0 20],[8 8],'color','k','LineStyle','--');
  727. %         line([40 40],[0 4],'color','k','LineStyle','--');
  728. %         line([0 40],[4 4],'color','k','LineStyle','--');
  729. %         line(20,8,'color','k','Marker','*');
  730. %         line(40,4,'color','k','Marker','*');
  731. %     end
  732. % else
  733. %         line([40 40],[0 32],'color','k','LineStyle','--');
  734. %         line([0 40],[32 32],'color','k','LineStyle','--');
  735. %         line([40 40],[0 8],'color','k','LineStyle','--');
  736. %         line([0 40],[8 8],'color','k','LineStyle','--');
  737. %         line(40,32,'color','k','Marker','*');
  738. %         line(40,8,'color','k','Marker','*');
  739. % end
  740. % if ~radVAL
  741.     if RadTrans
  742.         line([20 20],[0 8],'color','k','LineStyle','--');
  743.         line([0 20],[8 8],'color','k','LineStyle','--');
  744.         line([40 40],[0 4],'color','k','LineStyle','--');
  745.         line([0 40],[4 4],'color','k','LineStyle','--');
  746.         line(20,8,'color','k','Marker','*');
  747.         line(40,4,'color','k','Marker','*');
  748.     else
  749.         line([40 40],[0 32],'color','k','LineStyle','--');
  750.         line([0 40],[32 32],'color','k','LineStyle','--');
  751.         line([40 40],[0 8],'color','k','LineStyle','--');
  752.         line([0 40],[8 8],'color','k','LineStyle','--');
  753.         line(40,32,'color','k','Marker','*');
  754.         line(40,8,'color','k','Marker','*');
  755.     end
  756. % else
  757. %         line([20 20],[0 8],'color','k','LineStyle','--');
  758. %         line([0 20],[8 8],'color','k','LineStyle','--');
  759. %         line([40 40],[0 4],'color','k','LineStyle','--');
  760. %         line([0 40],[4 4],'color','k','LineStyle','--');
  761. %         line(20,8,'color','k','Marker','*');
  762. %         line(40,4,'color','k','Marker','*');
  763. %     if strcmp(sigNAM(end),'t')
  764. %         line([10 10],[0 8],'color','k','LineStyle','--');
  765. %         line([0 10],[8 8],'color','k','LineStyle','--');
  766. %         line([30 30],[0 4],'color','k','LineStyle','--');
  767. %         line([0 30],[4 4],'color','k','LineStyle','--');
  768. %         line([50 50],[0 4],'color','k','LineStyle','--');
  769. %         line([0 50],[4 4],'color','k','LineStyle','--');
  770. %         line(10,8,'color','k','Marker','*');
  771. %         line(30,4,'color','k','Marker','*');
  772. %         line(50,4,'color','k','Marker','*');
  773.         %    elseif strcmp(sigNAM(end),'s')
  774. %     else
  775. %         line([40 40],[0 32],'color','k','LineStyle','--');
  776. %         line([0 40],[32 32],'color','k','LineStyle','--');
  777. %         line([40 40],[0 8],'color','k','LineStyle','--');
  778. %         line([0 40],[8 8],'color','k','LineStyle','--');
  779. %         line(40,32,'color','k','Marker','*');
  780. %         line(40,8,'color','k','Marker','*');
  781. %     end
  782. % end
  783. %-------------------------------------------------------------------------
  784. %=========================================================================%
  785. %                END Internal Functions                                   %
  786. %=========================================================================%
  787. %=========================================================================%
  788. %                BEGIN General Utilities                                  %
  789. %                -----------------------                                  %
  790. %=========================================================================%
  791. function setAxesTitle(axe,label)
  792. axes(axe); 
  793. title(label,'Color','k','FontWeight','demi','Units','normalized','Fontsize',9);
  794. %--------------------------------------------------------------------------
  795. function setAxesXlabel(axe,label)
  796. axes(axe); 
  797. xlabel(label,'Color','k','FontWeight','demi','Units','normalized','Fontsize',9);
  798. %--------------------------------------------------------------------------
  799. function setAxesYlabel(axe,label)
  800. axes(axe); 
  801. ylabel(label,'Color','k','FontWeight','demi','Units','normalized','Fontsize',9);
  802. %--------------------------------------------------------------------------
  803. %=========================================================================%
  804. %                END Tool General Utilities                               %
  805. %=========================================================================%
  806. %=========================================================================%
  807. %                      BEGIN Demo Utilities                               %
  808. %                      ---------------------                              %
  809. %=========================================================================%
  810. function closeDEMO(hFig,eventdata,handles,varargin)
  811. close(hFig);
  812. %----------------------------------------------------------
  813. function demoPROC(hFig,eventdata,handles,varargin)
  814. waveDEM = varargin{1};
  815. handles = guidata(hFig);
  816. cbanapar('set',hFig,'wav',waveDEM);
  817. Pus_Run = handles.Pus_Run; 
  818. Pus_Run_Callback(Pus_Run,[],handles);
  819. %=========================================================================%
  820. %                   END Tool Demo Utilities                               %
  821. %=========================================================================%