wave_browser.html 120 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747
  1. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
  2. "http://www.w3.org/TR/REC-html40/loose.dtd">
  3. <html>
  4. <head>
  5. <title>Description of wave_browser</title>
  6. <meta name="keywords" content="wave_browser">
  7. <meta name="description" content="WAVE_BROWSER M-file for wave_browser.fig">
  8. <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
  9. <meta name="generator" content="m2html &copy; 2005 Guillaume Flandin">
  10. <meta name="robots" content="index, follow">
  11. <link type="text/css" rel="stylesheet" href="../../m2html.css">
  12. <script type="text/javascript">
  13. if (top.frames.length == 0) { top.location = "../../index.html"; };
  14. </script>
  15. </head>
  16. <body>
  17. <a name="_top"></a>
  18. <!-- ../menu.html chronux_2_10 --><!-- menu.html wave_browser -->
  19. <h1>wave_browser
  20. </h1>
  21. <h2><a name="_name"></a>PURPOSE <a href="#_top"><img alt="^" border="0" src="../../up.png"></a></h2>
  22. <div class="box"><strong>WAVE_BROWSER M-file for wave_browser.fig</strong></div>
  23. <h2><a name="_synopsis"></a>SYNOPSIS <a href="#_top"><img alt="^" border="0" src="../../up.png"></a></h2>
  24. <div class="box"><strong>function varargout = wave_browser(varargin) </strong></div>
  25. <h2><a name="_description"></a>DESCRIPTION <a href="#_top"><img alt="^" border="0" src="../../up.png"></a></h2>
  26. <div class="fragment"><pre class="comment"> WAVE_BROWSER M-file for wave_browser.fig
  27. WAVE_BROWSER, by itself, creates a new WAVE_BROWSER or raises the existing
  28. singleton*.
  29. H = WAVE_BROWSER returns the handle to a new WAVE_BROWSER or the handle to
  30. the existing singleton*.
  31. WAVE_BROWSER('CALLBACK',hObject,eventData,handles,...) calls the local
  32. function named CALLBACK in WAVE_BROWSER.M with the given input arguments.
  33. WAVE_BROWSER('Property','Value',...) creates a new WAVE_BROWSER or raises the
  34. existing singleton*. Starting from the left, property value pairs are
  35. applied to the GUI before wave_browser_OpeningFunction gets called. An
  36. unrecognized property name or invalid value makes property application
  37. stop. All inputs are passed to wave_browser_OpeningFcn via varargin.
  38. *See GUI Options on GUIDE's Tools menu. Choose &quot;GUI allows only one
  39. instance to run (singleton)&quot;.
  40. See also: GUIDE, GUIDATA, GUIHANDLES</pre></div>
  41. <!-- crossreference -->
  42. <h2><a name="_cross"></a>CROSS-REFERENCE INFORMATION <a href="#_top"><img alt="^" border="0" src="../../up.png"></a></h2>
  43. This function calls:
  44. <ul style="list-style-image:url(../../matlabicon.gif)">
  45. <li><a href="../../chronux_2_10/fly_track/videoIO/videoIO_2006a/@videoReader/close.html" class="code" title="function vr = close(vr)">close</a> VR=CLOSE(VR)</li><li><a href="../../chronux_2_10/fly_track/videoIO/videoIO_2006a/@videoWriter/close.html" class="code" title="function vw = close(vw)">close</a> VW=CLOSE(VW)</li><li><a href="../../chronux_2_10/fly_track/videoIO/videoIO_2006b/@videoReader/close.html" class="code" title="function vr = close(vr)">close</a> VR=CLOSE(VR)</li><li><a href="../../chronux_2_10/fly_track/videoIO/videoIO_2006b/@videoWriter/close.html" class="code" title="function vw = close(vw)">close</a> VW=CLOSE(VW)</li><li><a href="../../chronux_2_10/fly_track/videoIO/videoIO_2007a/@videoReader/close.html" class="code" title="function vr = close(vr)">close</a> VR=CLOSE(VR)</li><li><a href="../../chronux_2_10/fly_track/videoIO/videoIO_2007a/@videoWriter/close.html" class="code" title="function vw = close(vw)">close</a> VW=CLOSE(VW)</li><li><a href="../../chronux_2_10/spectral_analysis/continuous/mtdspecgramc.html" class="code" title="function [dS,t,f]=mtdspecgramc(data,movingwin,phi,params)">mtdspecgramc</a> Multi-taper derivative of the time-frequency spectrum - continuous process</li><li><a href="../../chronux_2_10/spectral_analysis/continuous/mtspecgramc.html" class="code" title="function [S,t,f,Serr]=mtspecgramc(data,movingwin,params)">mtspecgramc</a> Multi-taper time-frequency spectrum - continuous process</li></ul>
  46. This function is called by:
  47. <ul style="list-style-image:url(../../matlabicon.gif)">
  48. </ul>
  49. <!-- crossreference -->
  50. <h2><a name="_subfunctions"></a>SUBFUNCTIONS <a href="#_top"><img alt="^" border="0" src="../../up.png"></a></h2>
  51. <ul style="list-style-image:url(../../matlabicon.gif)">
  52. <li><a href="#_sub1" class="code">function wave_browser_OpeningFcn(hObject, eventdata, handles, varargin)</a></li><li><a href="#_sub2" class="code">function varargout = wave_browser_OutputFcn(hObject, eventdata, handles)</a></li><li><a href="#_sub3" class="code">function Frequency_Callback(hObject, eventdata, handles)</a></li><li><a href="#_sub4" class="code">function Frequency_CreateFcn(hObject, eventdata, handles)</a></li><li><a href="#_sub5" class="code">function LoadFile_Callback(hObject, eventdata, handles)</a></li><li><a href="#_sub6" class="code">function [wavesize channels] = wavsizeget(filename);</a></li><li><a href="#_sub7" class="code">function handles = loadfile(hObject, eventdata, handles, varargin)</a></li><li><a href="#_sub8" class="code">function endian_Callback(hObject, eventdata, handles)</a></li><li><a href="#_sub9" class="code">function endian_CreateFcn(hObject, eventdata, handles)</a></li><li><a href="#_sub10" class="code">function edit2_Callback(hObject, eventdata, handles)</a></li><li><a href="#_sub11" class="code">function edit2_CreateFcn(hObject, eventdata, handles)</a></li><li><a href="#_sub12" class="code">function FileNameString_Callback(hObject, eventdata, handles)</a></li><li><a href="#_sub13" class="code">function FileNameString_CreateFcn(hObject, eventdata, handles)</a></li><li><a href="#_sub14" class="code">function WinSize_Callback(hObject, eventdata, handles)</a></li><li><a href="#_sub15" class="code">function WinSize_CreateFcn(hObject, eventdata, handles)</a></li><li><a href="#_sub16" class="code">function slider1_Callback(hObject, eventdata, handles)</a></li><li><a href="#_sub17" class="code">function slider1_CreateFcn(hObject, eventdata, handles)</a></li><li><a href="#_sub18" class="code">function StepSize_Callback(hObject, eventdata, handles)</a></li><li><a href="#_sub19" class="code">function StepSize_CreateFcn(hObject, eventdata, handles)</a></li><li><a href="#_sub20" class="code">function TW_Callback(hObject, eventdata, handles)</a></li><li><a href="#_sub21" class="code">function TW_CreateFcn(hObject, eventdata, handles)</a></li><li><a href="#_sub22" class="code">function DisplayWindow_Callback(hObject, eventdata, handles)</a></li><li><a href="#_sub23" class="code">function DisplayWindow_CreateFcn(hObject, eventdata, handles)</a></li><li><a href="#_sub24" class="code">function indexinS = getindexpre_c(t,timestart,timeend)</a></li><li><a href="#_sub25" class="code">function Plot_Callback(hObject, eventdata, handles)</a></li><li><a href="#_sub26" class="code">function [Stot boxcurve] = compute_threshold_free(S,th,n)</a></li><li><a href="#_sub27" class="code">function [ratiof boxcurve] = compute_index(S,lower_range,upper_range,lowerfreq,upperfreq,indexthresh,n)</a></li><li><a href="#_sub28" class="code">function smoothedcurve = smooth_curve(curve2smooth,n);</a></li><li><a href="#_sub29" class="code">function MinFreq_Callback(hObject, eventdata, handles)</a></li><li><a href="#_sub30" class="code">function MinFreq_CreateFcn(hObject, eventdata, handles)</a></li><li><a href="#_sub31" class="code">function MaxFreq_Callback(hObject, eventdata, handles)</a></li><li><a href="#_sub32" class="code">function MaxFreq_CreateFcn(hObject, eventdata, handles)</a></li><li><a href="#_sub33" class="code">function SpectrumType_Callback(hObject, eventdata, handles)</a></li><li><a href="#_sub34" class="code">function SpectrumType_CreateFcn(hObject, eventdata, handles)</a></li><li><a href="#_sub35" class="code">function AmpThresh_Callback(hObject, eventdata, handles)</a></li><li><a href="#_sub36" class="code">function AmpThresh_CreateFcn(hObject, eventdata, handles)</a></li><li><a href="#_sub37" class="code">function TDerThresh_Callback(hObject, eventdata, handles)</a></li><li><a href="#_sub38" class="code">function TDerThresh_CreateFcn(hObject, eventdata, handles)</a></li><li><a href="#_sub39" class="code">function PlayAll_Callback(hObject, eventdata, handles)</a></li><li><a href="#_sub40" class="code">function PlayWindow_Callback(hObject, eventdata, handles)</a></li><li><a href="#_sub41" class="code">function txt = datacursorfunc(empt,event_obj)</a></li><li><a href="#_sub42" class="code">function handles = draw_segments( handles )</a></li><li><a href="#_sub43" class="code">function SegmentButton_Callback(hObject, eventdata, handles)</a></li><li><a href="#_sub44" class="code">function SegStartButton_Callback(hObject, eventdata, handles)</a></li><li><a href="#_sub45" class="code">function SegEndButton_Callback(hObject, eventdata, handles)</a></li><li><a href="#_sub46" class="code">function out=draw_all_x( handles, segment )</a></li><li><a href="#_sub47" class="code">function out=draw_x( theaxes, segment )</a></li><li><a href="#_sub48" class="code">function JumpBack_Callback(hObject, eventdata, handles)</a></li><li><a href="#_sub49" class="code">function Jump_Callback(hObject, eventdata, handles)</a></li><li><a href="#_sub50" class="code">function Jump_shared(hObject, eventdata, handles, jump_dir )</a></li><li><a href="#_sub51" class="code">function LoadNext_Callback(hObject, eventdata, handles)</a></li><li><a href="#_sub52" class="code">function Precompute_Callback(hObject, eventdata, handles)</a></li><li><a href="#_sub53" class="code">function Precompute_CreateFcn(hObject, eventdata, handles)</a></li><li><a href="#_sub54" class="code">function Path_Callback(hObject, eventdata, handles)</a></li><li><a href="#_sub55" class="code">function Path_CreateFcn(hObject, eventdata, handles)</a></li><li><a href="#_sub56" class="code">function Extensions_Callback(hObject, eventdata, handles)</a></li><li><a href="#_sub57" class="code">function Extensions_CreateFcn(hObject, eventdata, handles)</a></li><li><a href="#_sub58" class="code">function Duration_CreateFcn(hObject, eventdata, handles)</a></li><li><a href="#_sub59" class="code">function LoadSegments_Callback(hObject, eventdata, handles)</a></li><li><a href="#_sub60" class="code">function handles=load_segment(handles,filename)</a></li><li><a href="#_sub61" class="code">function filteredsegments = filtersegments(handles,segments)</a></li><li><a href="#_sub62" class="code">function ExcludeExt_Callback(hObject, eventdata, handles)</a></li><li><a href="#_sub63" class="code">function ExcludeExt_CreateFcn(hObject, eventdata, handles)</a></li><li><a href="#_sub64" class="code">function DeleteSegment_Callback(hObject, eventdata, handles)</a></li><li><a href="#_sub65" class="code">function handles=delete_segment( handles, n )</a></li><li><a href="#_sub66" class="code">function SaveSegments_Callback(hObject, eventdata, handles)</a></li><li><a href="#_sub67" class="code">function handles=savesegments2mem(handles)</a></li><li><a href="#_sub68" class="code">function SegCancel_Callback(hObject, eventdata, handles)</a></li><li><a href="#_sub69" class="code">function PlotSegments_Callback(hObject, eventdata, handles)</a></li><li><a href="#_sub70" class="code">function AutoSegButton_Callback(hObject, eventdata, handles)</a></li><li><a href="#_sub71" class="code">function DeleteAllButton_Callback(hObject, eventdata, handles)</a></li><li><a href="#_sub72" class="code">function PlotAllButton_Callback(hObject, eventdata, handles)</a></li><li><a href="#_sub73" class="code">function PreviousChunk_Callback(hObject, eventdata, handles)</a></li><li><a href="#_sub74" class="code">function NextChunk_Callback(hObject, eventdata, handles)</a></li><li><a href="#_sub75" class="code">function AutoSegmentFile_Callback(hObject, eventdata, handles)</a></li><li><a href="#_sub76" class="code">function MaxSegLength_Callback(hObject, eventdata, handles)</a></li><li><a href="#_sub77" class="code">function MaxSegLength_CreateFcn(hObject, eventdata, handles)</a></li><li><a href="#_sub78" class="code">function MaximumWavSize_Callback(hObject, eventdata, handles)</a></li><li><a href="#_sub79" class="code">function MaximumWavSize_CreateFcn(hObject, eventdata, handles)</a></li><li><a href="#_sub80" class="code">function SeekButton_Callback(hObject, eventdata, handles)</a></li><li><a href="#_sub81" class="code">function SeektoEdit_Callback(hObject, eventdata, handles)</a></li><li><a href="#_sub82" class="code">function SeektoEdit_CreateFcn(hObject, eventdata, handles)</a></li><li><a href="#_sub83" class="code">function RealDuration_Callback(hObject, eventdata, handles)</a></li><li><a href="#_sub84" class="code">function RealDuration_CreateFcn(hObject, eventdata, handles)</a></li><li><a href="#_sub85" class="code">function AutoMethodPopupMenu_Callback(hObject, eventdata, handles)</a></li><li><a href="#_sub86" class="code">function AutoMethodPopupMenu_CreateFcn(hObject, eventdata, handles)</a></li><li><a href="#_sub87" class="code">function RatioThresh_Callback(hObject, eventdata, handles)</a></li><li><a href="#_sub88" class="code">function RatioThresh_CreateFcn(hObject, eventdata, handles)</a></li><li><a href="#_sub89" class="code">function RatioLower_Callback(hObject, eventdata, handles)</a></li><li><a href="#_sub90" class="code">function RatioLower_CreateFcn(hObject, eventdata, handles)</a></li><li><a href="#_sub91" class="code">function RatioUpper_Callback(hObject, eventdata, handles)</a></li><li><a href="#_sub92" class="code">function RatioUpper_CreateFcn(hObject, eventdata, handles)</a></li><li><a href="#_sub93" class="code">function OptionsDisplay_Callback(hObject, eventdata, handles)</a></li><li><a href="#_sub94" class="code">function Duration_Callback(hObject, eventdata, handles)</a></li><li><a href="#_sub95" class="code">function SmoothFactor_Callback(hObject, eventdata, handles)</a></li><li><a href="#_sub96" class="code">function SmoothFactor_CreateFcn(hObject, eventdata, handles)</a></li><li><a href="#_sub97" class="code">function channel_Callback(hObject, eventdata, handles)</a></li><li><a href="#_sub98" class="code">function channel_CreateFcn(hObject, eventdata, handles)</a></li></ul>
  53. <h2><a name="_source"></a>SOURCE CODE <a href="#_top"><img alt="^" border="0" src="../../up.png"></a></h2>
  54. <div class="fragment"><pre>0001 <a name="_sub0" href="#_subfunctions" class="code">function varargout = wave_browser(varargin)</a>
  55. 0002 <span class="comment">% WAVE_BROWSER M-file for wave_browser.fig</span>
  56. 0003 <span class="comment">% WAVE_BROWSER, by itself, creates a new WAVE_BROWSER or raises the existing</span>
  57. 0004 <span class="comment">% singleton*.</span>
  58. 0005 <span class="comment">%</span>
  59. 0006 <span class="comment">% H = WAVE_BROWSER returns the handle to a new WAVE_BROWSER or the handle to</span>
  60. 0007 <span class="comment">% the existing singleton*.</span>
  61. 0008 <span class="comment">%</span>
  62. 0009 <span class="comment">% WAVE_BROWSER('CALLBACK',hObject,eventData,handles,...) calls the local</span>
  63. 0010 <span class="comment">% function named CALLBACK in WAVE_BROWSER.M with the given input arguments.</span>
  64. 0011 <span class="comment">%</span>
  65. 0012 <span class="comment">% WAVE_BROWSER('Property','Value',...) creates a new WAVE_BROWSER or raises the</span>
  66. 0013 <span class="comment">% existing singleton*. Starting from the left, property value pairs are</span>
  67. 0014 <span class="comment">% applied to the GUI before wave_browser_OpeningFunction gets called. An</span>
  68. 0015 <span class="comment">% unrecognized property name or invalid value makes property application</span>
  69. 0016 <span class="comment">% stop. All inputs are passed to wave_browser_OpeningFcn via varargin.</span>
  70. 0017 <span class="comment">%</span>
  71. 0018 <span class="comment">% *See GUI Options on GUIDE's Tools menu. Choose &quot;GUI allows only one</span>
  72. 0019 <span class="comment">% instance to run (singleton)&quot;.</span>
  73. 0020 <span class="comment">%</span>
  74. 0021 <span class="comment">% See also: GUIDE, GUIDATA, GUIHANDLES</span>
  75. 0022
  76. 0023 <span class="comment">% Copyright 2002-2003 The MathWorks, Inc.</span>
  77. 0024
  78. 0025 <span class="comment">% Edit the above text to modify the response to help wave_browser</span>
  79. 0026
  80. 0027 <span class="comment">% Last Modified by GUIDE v2.5 29-May-2007 16:30:52</span>
  81. 0028
  82. 0029 <span class="comment">% Begin initialization code - DO NOT EDIT</span>
  83. 0030 gui_Singleton = 1;
  84. 0031 gui_State = struct(<span class="string">'gui_Name'</span>, mfilename, <span class="keyword">...</span>
  85. 0032 <span class="string">'gui_Singleton'</span>, gui_Singleton, <span class="keyword">...</span>
  86. 0033 <span class="string">'gui_OpeningFcn'</span>, @<a href="#_sub1" class="code" title="subfunction wave_browser_OpeningFcn(hObject, eventdata, handles, varargin)">wave_browser_OpeningFcn</a>, <span class="keyword">...</span>
  87. 0034 <span class="string">'gui_OutputFcn'</span>, @<a href="#_sub2" class="code" title="subfunction varargout = wave_browser_OutputFcn(hObject, eventdata, handles)">wave_browser_OutputFcn</a>, <span class="keyword">...</span>
  88. 0035 <span class="string">'gui_LayoutFcn'</span>, [] , <span class="keyword">...</span>
  89. 0036 <span class="string">'gui_Callback'</span>, []);
  90. 0037 <span class="keyword">if</span> nargin &amp;&amp; ischar(varargin{1})
  91. 0038 gui_State.gui_Callback = str2func(varargin{1});
  92. 0039 <span class="keyword">end</span>
  93. 0040
  94. 0041 <span class="keyword">if</span> nargout
  95. 0042 [varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
  96. 0043 <span class="keyword">else</span>
  97. 0044 gui_mainfcn(gui_State, varargin{:});
  98. 0045 <span class="keyword">end</span>
  99. 0046 <span class="comment">% End initialization code - DO NOT EDIT</span>
  100. 0047
  101. 0048
  102. 0049 <span class="comment">% --- Executes just before wave_browser is made visible.</span>
  103. 0050 <a name="_sub1" href="#_subfunctions" class="code">function wave_browser_OpeningFcn(hObject, eventdata, handles, varargin)</a>
  104. 0051 <span class="comment">% This function has no output args, see OutputFcn.</span>
  105. 0052 <span class="comment">% hObject handle to figure</span>
  106. 0053 <span class="comment">% eventdata reserved - to be defined in a future version of MATLAB</span>
  107. 0054 <span class="comment">% handles structure with handles and user data (see GUIDATA)</span>
  108. 0055 <span class="comment">% varargin command line arguments to wave_browser (see VARARGIN)</span>
  109. 0056
  110. 0057 handles.firsttime = 0; <span class="comment">% indicates the firsttime that segment has been precomputed</span>
  111. 0058 handles.precomputed_spec = 0; <span class="comment">% indicates that the spectra has not been precomputed</span>
  112. 0059 handles.longfile = 0; <span class="comment">% indicates whether the file is a long file</span>
  113. 0060 handles.maxwavsize = 10 * 44100; <span class="comment">% I will have to explore what number works best here</span>
  114. 0061 handles.maxspec_t = 30; <span class="comment">% duration of the max size of a spectra</span>
  115. 0062
  116. 0063 handles.Fs = 44100; <span class="comment">% default size to start with</span>
  117. 0064
  118. 0065 handles.segments = []; <span class="comment">% holds regular segments in the current chunk</span>
  119. 0066 handles.allsegments = []; <span class="comment">% holds segments across the maximum wave size</span>
  120. 0067 handles.loadedsegment = 0; <span class="comment">% indicates no segments have been loaded</span>
  121. 0068
  122. 0069 handles.lastmarkerstart = 1; <span class="comment">% largest segment</span>
  123. 0070
  124. 0071 handles.segmentmode = 0; <span class="comment">% by default start off with segmenting turned off</span>
  125. 0072 handles.dontcutsegments = 0; <span class="comment">% by default do not adapt to segments</span>
  126. 0073
  127. 0074 handles.automethod = <span class="string">'threshold'</span>; <span class="comment">% use threshold or ratiof method</span>
  128. 0075
  129. 0076 handles.indexthresh = 10; <span class="comment">% for ration method the threshold which to cut the curve off</span>
  130. 0077 handles.lower_range = [10 10000]; <span class="comment">% the numerator in the ratio</span>
  131. 0078 handles.upper_range = [15000 20000]; <span class="comment">% the denomitor in the ratio</span>
  132. 0079
  133. 0080 handles.nsmooth = 0; <span class="comment">% moving average parameter for the thresholds curves</span>
  134. 0081
  135. 0082 positionP = get(handles.OptionsUiPanel,<span class="string">'Position'</span>);
  136. 0083 positionF = get(gcf,<span class="string">'Position'</span>);
  137. 0084
  138. 0085 positionF(3) = positionF(3) - positionP(3);
  139. 0086
  140. 0087 <span class="comment">% set(gcf,'Position',positionF); % untested</span>
  141. 0088
  142. 0089 <span class="comment">% Choose default command line output for wave_browser</span>
  143. 0090 handles.output = hObject;
  144. 0091
  145. 0092
  146. 0093 <span class="comment">% Update handles structure</span>
  147. 0094 guidata(hObject, handles);
  148. 0095
  149. 0096 <span class="comment">% UIWAIT makes wave_browser wait for user response (see UIRESUME)</span>
  150. 0097 <span class="comment">% uiwait(handles.figure1);</span>
  151. 0098
  152. 0099
  153. 0100 <span class="comment">% --- Outputs from this function are returned to the command line.</span>
  154. 0101 <a name="_sub2" href="#_subfunctions" class="code">function varargout = wave_browser_OutputFcn(hObject, eventdata, handles) </a>
  155. 0102
  156. 0103 <span class="comment">% Get default command line output from handles structure</span>
  157. 0104 varargout{1} = handles.output;
  158. 0105
  159. 0106 <a name="_sub3" href="#_subfunctions" class="code">function Frequency_Callback(hObject, eventdata, handles)</a>
  160. 0107 handles.Fs = eval(get(hObject,<span class="string">'String'</span>));
  161. 0108 guidata(gcbo,handles);
  162. 0109
  163. 0110 <a name="_sub4" href="#_subfunctions" class="code">function Frequency_CreateFcn(hObject, eventdata, handles)</a>
  164. 0111 set(hObject,<span class="string">'String'</span>, <span class="string">'44100'</span>);
  165. 0112 handles.Fs = 44100;
  166. 0113 guidata(gcbo,handles);
  167. 0114 <span class="keyword">if</span> ispc
  168. 0115 set(hObject,<span class="string">'BackgroundColor'</span>,<span class="string">'white'</span>);
  169. 0116 <span class="keyword">else</span>
  170. 0117 set(hObject,<span class="string">'BackgroundColor'</span>,get(0,<span class="string">'defaultUicontrolBackgroundColor'</span>));
  171. 0118 <span class="keyword">end</span>
  172. 0119
  173. 0120 <span class="comment">% --- Executes on button press in LoadFile.</span>
  174. 0121 <a name="_sub5" href="#_subfunctions" class="code">function LoadFile_Callback(hObject, eventdata, handles)</a>
  175. 0122
  176. 0123 [fname pname]=uigetfile({<span class="string">'*.wav'</span>;<span class="string">'*.*'</span>},<span class="string">'Load Time Series'</span>);
  177. 0124
  178. 0125 <span class="keyword">if</span> fname == 0
  179. 0126 <span class="keyword">return</span>
  180. 0127 <span class="keyword">end</span>
  181. 0128
  182. 0129
  183. 0130
  184. 0131 set(handles.FileNameString, <span class="string">'String'</span>,fname);
  185. 0132 handles.filename = [pname fname];
  186. 0133 [path] = cell2mat(regexp( handles.filename, <span class="string">'^.*\'</span>, <span class="string">'match'</span> ));
  187. 0134 [extension] = cell2mat(regexp( handles.filename, <span class="string">'\w+$'</span>, <span class="string">'match'</span> ));
  188. 0135 set(handles.Path,<span class="string">'String'</span>,path);
  189. 0136 <span class="comment">% set(handles.Extensions,'String',extension);</span>
  190. 0137
  191. 0138 handles.segments = [];
  192. 0139 handles.allsegments = [];
  193. 0140
  194. 0141 handles = <a href="#_sub7" class="code" title="subfunction handles = loadfile(hObject, eventdata, handles, varargin)">loadfile</a>(hObject, eventdata, handles);
  195. 0142 guidata(hObject,handles);
  196. 0143
  197. 0144 <a name="_sub6" href="#_subfunctions" class="code">function [wavesize channels] = wavsizeget(filename);</a>
  198. 0145 <span class="comment">% Provides usable information about a file</span>
  199. 0146 wavesize = 0;
  200. 0147 [filestatus info] = wavfinfo(filename);
  201. 0148 info = regexp(info,<span class="string">'[0-9]+'</span>,<span class="string">'match'</span>);
  202. 0149 channels = str2num(info{2});
  203. 0150 wavesize = str2num(info{1});
  204. 0151
  205. 0152 <a name="_sub7" href="#_subfunctions" class="code">function handles = loadfile(hObject, eventdata, handles, varargin)</a>
  206. 0153 <span class="comment">% Function for loading a file or using the optional varargin to load a</span>
  207. 0154 <span class="comment">% specified position and size in the file</span>
  208. 0155
  209. 0156 <span class="comment">% contents=get(handles.endian,'String');</span>
  210. 0157 <span class="comment">% precision=contents{get(handles.endian,'Value')};</span>
  211. 0158
  212. 0159 [datasize channels] = <a href="#_sub6" class="code" title="subfunction [wavesize channels] = wavsizeget(filename);">wavsizeget</a>(handles.filename);
  213. 0160 handles.wavsize = datasize; <span class="comment">% total number of samples in the files</span>
  214. 0161
  215. 0162 <span class="keyword">try</span>
  216. 0163 handles.maxwavsize = round(handles.Fs * str2num(get(handles.MaximumWavSize,<span class="string">'String'</span>)));
  217. 0164 <span class="keyword">catch</span>
  218. 0165 handles.maxwavsize = 20;
  219. 0166 set(handles.MaximumWavSize,<span class="string">'String'</span>,num2str(handles.maxwavsize));
  220. 0167 handles.maxwavsize = handles.maxwavsize * handles.Fs;
  221. 0168 <span class="keyword">end</span>
  222. 0169
  223. 0170 <span class="keyword">if</span> isempty(varargin)
  224. 0171 handles.markerstart = 1;
  225. 0172 <span class="keyword">if</span> datasize &gt; handles.maxwavsize
  226. 0173 handles.markerend = handles.maxwavsize;
  227. 0174 handles.longfile = 1; <span class="comment">% indicates that the file is long and will be loaded in chunks</span>
  228. 0175 <span class="keyword">else</span>
  229. 0176 handles.markerend = datasize;
  230. 0177 <span class="keyword">end</span>
  231. 0178 <span class="keyword">else</span> <span class="comment">% passed in optional parameter</span>
  232. 0179 handles.markervec = varargin{1};
  233. 0180 handles.markerstart = handles.markervec(1);
  234. 0181 handles.markerend = handles.markervec(2);
  235. 0182 <span class="keyword">end</span>
  236. 0183
  237. 0184 <span class="keyword">if</span> handles.markerstart &lt;= 1 <span class="comment">% make sure the range is possible</span>
  238. 0185 handles.markerstart = 1;
  239. 0186 set(handles.PreviousChunk,<span class="string">'Enable'</span>,<span class="string">'off'</span>);
  240. 0187 <span class="keyword">else</span>
  241. 0188 set(handles.PreviousChunk,<span class="string">'Enable'</span>,<span class="string">'on'</span>);
  242. 0189 <span class="keyword">end</span>
  243. 0190
  244. 0191 <span class="keyword">if</span> handles.markerend &gt;= handles.wavsize
  245. 0192 handles.markerend = handles.wavsize;
  246. 0193 set(handles.NextChunk,<span class="string">'Enable'</span>,<span class="string">'off'</span>);
  247. 0194 <span class="keyword">else</span>
  248. 0195 set(handles.NextChunk,<span class="string">'Enable'</span>,<span class="string">'on'</span>);
  249. 0196 <span class="keyword">end</span>
  250. 0197
  251. 0198
  252. 0199 <span class="keyword">if</span> handles.maxwavsize &lt; handles.wavsize
  253. 0200 total_chunk = ceil(handles.wavsize / handles.maxwavsize);
  254. 0201 i = 1;
  255. 0202 <span class="keyword">while</span> (i &lt; total_chunk) &amp;&amp; (handles.markerend &gt;= (handles.maxwavsize * i))
  256. 0203 i = i + 1;
  257. 0204 <span class="keyword">end</span>
  258. 0205
  259. 0206 current_chunk = i-1;
  260. 0207
  261. 0208 <span class="keyword">if</span> handles.markerend == handles.wavsize
  262. 0209 current_chunk = total_chunk;
  263. 0210 <span class="keyword">end</span>
  264. 0211
  265. 0212 set(handles.ChunkText,<span class="string">'String'</span>,[<span class="string">'Chunk '</span> num2str(current_chunk) <span class="string">'/'</span> num2str(total_chunk)]);
  266. 0213 <span class="keyword">end</span>
  267. 0214
  268. 0215 <span class="keyword">try</span>
  269. 0216 handles.maxseglength = round(handles.Fs * str2num(get(handles.MaxSegLength,<span class="string">'String'</span>)));
  270. 0217 <span class="keyword">catch</span>
  271. 0218 handles.maxseglength = handles.Fs * 1;
  272. 0219 <span class="keyword">end</span>
  273. 0220
  274. 0221 set(handles.RealDuration,<span class="string">'String'</span>,num2str(handles.wavsize/handles.Fs,<span class="string">'%.1f'</span>));
  275. 0222
  276. 0223 <span class="keyword">if</span> handles.segmentmode <span class="comment">% only if in segment mode make sure segments are not cut</span>
  277. 0224 <span class="keyword">if</span> (handles.markerstart - handles.lastmarkerstart &gt; 0) <span class="comment">% only do this in terms of forward movement</span>
  278. 0225 <span class="keyword">if</span> handles.dontcutsegments <span class="comment">% this code is added so segments are not cut off when segmenting</span>
  279. 0226 <span class="keyword">if</span> not(isempty(handles.segments)) <span class="comment">% at least one segment has been defined previously</span>
  280. 0227 maxsegend = handles.segments(1).end; <span class="comment">% find last defined segment in previous view</span>
  281. 0228 <span class="keyword">for</span> i = 2:length(handles.segments)
  282. 0229 <span class="keyword">if</span> handles.segments(i).end &gt; maxsegend
  283. 0230 maxsegend = handles.segments(i).end;
  284. 0231 <span class="keyword">end</span>
  285. 0232 <span class="keyword">end</span>
  286. 0233
  287. 0234 maxsegend = round(maxsegend * handles.Fs);
  288. 0235
  289. 0236 <span class="keyword">if</span> (handles.lastmarkerend - maxsegend) &lt; (handles.lastmarkerend - handles.maxseglength)
  290. 0237 handles.markerstart = (handles.lastmarkerstart + maxsegend) + 1; <span class="comment">% defined segment is closer to the end</span>
  291. 0238 <span class="keyword">else</span>
  292. 0239 handles.markerstart = handles.lastmarkerend - handles.maxseglength;
  293. 0240 <span class="keyword">end</span>
  294. 0241 <span class="keyword">else</span>
  295. 0242 handles.markerstart = handles.lastmarkerend - handles.maxseglength;
  296. 0243 <span class="keyword">end</span>
  297. 0244
  298. 0245 handles.markerend = handles.markerstart + handles.maxwavsize - 1;
  299. 0246 <span class="keyword">if</span> handles.markerend &gt; handles.wavsize
  300. 0247 handles.markerend = handles.wavsize;
  301. 0248 <span class="keyword">end</span>
  302. 0249 <span class="keyword">end</span>
  303. 0250 <span class="keyword">end</span>
  304. 0251 <span class="keyword">end</span>
  305. 0252
  306. 0253 hw=waitbar(0,<span class="string">'Loading ...'</span>); waitbar(0.5,hw); drawnow;
  307. 0254
  308. 0255 [handles.markerstart handles.markerend]/handles.Fs
  309. 0256 [handles.ts,handles.Fs] = wavread(handles.filename, [handles.markerstart handles.markerend]);
  310. 0257 channel = str2double(get(handles.channel,<span class="string">'String'</span>));
  311. 0258 handles.ts = handles.ts(:,channel);
  312. 0259
  313. 0260 count = length(handles.ts);
  314. 0261 handles.ts = handles.ts/std(handles.ts); <span class="comment">% variance normalisation</span>
  315. 0262 set(handles.Frequency,<span class="string">'String'</span>, num2str(handles.Fs));
  316. 0263 set( handles.Duration, <span class="string">'String'</span>, count/handles.Fs );
  317. 0264 Tim=eval(get(handles.DisplayWindow,<span class="string">'String'</span>));
  318. 0265 display_frac = 1;<span class="comment">%max(1,Tim*handles.Fs/count);</span>
  319. 0266
  320. 0267 set( handles.slider1, <span class="string">'Value'</span>, 0 );
  321. 0268 set( handles.SegmentButton, <span class="string">'Enable'</span>, <span class="string">'on'</span> );
  322. 0269
  323. 0270 <span class="keyword">if</span> handles.longfile
  324. 0271 set(handles.SeekButton,<span class="string">'Enable'</span>, <span class="string">'on'</span>);
  325. 0272 <span class="keyword">end</span>
  326. 0273
  327. 0274 set(handles.LoadNext, <span class="string">'Enable'</span>, <span class="string">'on'</span> );
  328. 0275 set(handles.PlayAll, <span class="string">'Enable'</span>, <span class="string">'on'</span> );
  329. 0276 set(handles.PlayWindow, <span class="string">'Enable'</span>, <span class="string">'on'</span> );
  330. 0277 set(handles.Plot, <span class="string">'Enable'</span>, <span class="string">'on'</span> );
  331. 0278 set(handles.PlotAllButton, <span class="string">'Enable'</span>, <span class="string">'on'</span>);
  332. 0279 set(handles.Precompute, <span class="string">'Enable'</span>,<span class="string">'on'</span>);
  333. 0280 set(handles.Jump,<span class="string">'Enable'</span>,<span class="string">'on'</span>);
  334. 0281 set(handles.JumpBack,<span class="string">'Enable'</span>,<span class="string">'on'</span>);
  335. 0282
  336. 0283 handles.segments = []; <span class="comment">% remove the current segments</span>
  337. 0284 handles.segments = <a href="#_sub61" class="code" title="subfunction filteredsegments = filtersegments(handles,segments)">filtersegments</a>(handles,handles.allsegments);
  338. 0285
  339. 0286 set(handles.Precompute,<span class="string">'Value'</span>,1); <span class="comment">% Set into precompute mode</span>
  340. 0287
  341. 0288 <a href="#_sub52" class="code" title="subfunction Precompute_Callback(hObject, eventdata, handles)">Precompute_Callback</a>(handles.Precompute, eventdata, handles);
  342. 0289 handles = guidata(gcbo);
  343. 0290
  344. 0291 <span class="comment">% set(handles.Precompute,'Value',1);</span>
  345. 0292
  346. 0293 handles.precomputed_spec = 1;
  347. 0294 handles.dontcutsegments = 1; <span class="comment">% make sure segments are not cut off</span>
  348. 0295 handles.lastmarkerstart = handles.markerstart;
  349. 0296 handles.lastmarkerend = handles.markerend;
  350. 0297
  351. 0298 <a href="../../chronux_2_10/fly_track/videoIO/videoIO_2006a/@videoReader/close.html" class="code" title="function vr = close(vr)">close</a>(hw);
  352. 0299 <span class="comment">% guidata(gcbo,handles);</span>
  353. 0300
  354. 0301
  355. 0302 <span class="comment">% Plot_Callback(hObject, eventdata, handles);</span>
  356. 0303
  357. 0304 <span class="comment">% --- Executes on selection change in endian.</span>
  358. 0305 <a name="_sub8" href="#_subfunctions" class="code">function endian_Callback(hObject, eventdata, handles)</a>
  359. 0306
  360. 0307 <span class="comment">% --- Executes during object creation, after setting all properties.</span>
  361. 0308 <a name="_sub9" href="#_subfunctions" class="code">function endian_CreateFcn(hObject, eventdata, handles)</a>
  362. 0309 <span class="keyword">if</span> ispc
  363. 0310 set(hObject,<span class="string">'BackgroundColor'</span>,<span class="string">'white'</span>);
  364. 0311 <span class="keyword">else</span>
  365. 0312 set(hObject,<span class="string">'BackgroundColor'</span>,get(0,<span class="string">'defaultUicontrolBackgroundColor'</span>));
  366. 0313 <span class="keyword">end</span>
  367. 0314
  368. 0315
  369. 0316 <a name="_sub10" href="#_subfunctions" class="code">function edit2_Callback(hObject, eventdata, handles)</a>
  370. 0317 <a name="_sub11" href="#_subfunctions" class="code">function edit2_CreateFcn(hObject, eventdata, handles)</a>
  371. 0318 <span class="keyword">if</span> ispc
  372. 0319 set(hObject,<span class="string">'BackgroundColor'</span>,<span class="string">'white'</span>);
  373. 0320 <span class="keyword">else</span>
  374. 0321 set(hObject,<span class="string">'BackgroundColor'</span>,get(0,<span class="string">'defaultUicontrolBackgroundColor'</span>));
  375. 0322 <span class="keyword">end</span>
  376. 0323
  377. 0324 <a name="_sub12" href="#_subfunctions" class="code">function FileNameString_Callback(hObject, eventdata, handles)</a>
  378. 0325
  379. 0326 <a name="_sub13" href="#_subfunctions" class="code">function FileNameString_CreateFcn(hObject, eventdata, handles)</a>
  380. 0327 <span class="keyword">if</span> ispc
  381. 0328 set(hObject,<span class="string">'BackgroundColor'</span>,<span class="string">'white'</span>);
  382. 0329 <span class="keyword">else</span>
  383. 0330 set(hObject,<span class="string">'BackgroundColor'</span>,get(0,<span class="string">'defaultUicontrolBackgroundColor'</span>));
  384. 0331 <span class="keyword">end</span>
  385. 0332
  386. 0333 <a name="_sub14" href="#_subfunctions" class="code">function WinSize_Callback(hObject, eventdata, handles)</a>
  387. 0334
  388. 0335 <a name="_sub15" href="#_subfunctions" class="code">function WinSize_CreateFcn(hObject, eventdata, handles)</a>
  389. 0336 <span class="keyword">if</span> ispc
  390. 0337 set(hObject,<span class="string">'BackgroundColor'</span>,<span class="string">'white'</span>);
  391. 0338 <span class="keyword">else</span>
  392. 0339 set(hObject,<span class="string">'BackgroundColor'</span>,get(0,<span class="string">'defaultUicontrolBackgroundColor'</span>));
  393. 0340 <span class="keyword">end</span>
  394. 0341
  395. 0342
  396. 0343 <span class="comment">% --- Executes on slider movement.</span>
  397. 0344 <a name="_sub16" href="#_subfunctions" class="code">function slider1_Callback(hObject, eventdata, handles)</a>
  398. 0345
  399. 0346 <a name="_sub17" href="#_subfunctions" class="code">function slider1_CreateFcn(hObject, eventdata, handles)</a>
  400. 0347 usewhitebg = 1;
  401. 0348 <span class="keyword">if</span> usewhitebg
  402. 0349 set(hObject,<span class="string">'BackgroundColor'</span>,[.9 .9 .9]);
  403. 0350 <span class="keyword">else</span>
  404. 0351 set(hObject,<span class="string">'BackgroundColor'</span>,get(0,<span class="string">'defaultUicontrolBackgroundColor'</span>));
  405. 0352 <span class="keyword">end</span>
  406. 0353
  407. 0354 <a name="_sub18" href="#_subfunctions" class="code">function StepSize_Callback(hObject, eventdata, handles)</a>
  408. 0355
  409. 0356 <a name="_sub19" href="#_subfunctions" class="code">function StepSize_CreateFcn(hObject, eventdata, handles)</a>
  410. 0357 <span class="keyword">if</span> ispc
  411. 0358 set(hObject,<span class="string">'BackgroundColor'</span>,<span class="string">'white'</span>);
  412. 0359 <span class="keyword">else</span>
  413. 0360 set(hObject,<span class="string">'BackgroundColor'</span>,get(0,<span class="string">'defaultUicontrolBackgroundColor'</span>));
  414. 0361 <span class="keyword">end</span>
  415. 0362
  416. 0363 <a name="_sub20" href="#_subfunctions" class="code">function TW_Callback(hObject, eventdata, handles)</a>
  417. 0364
  418. 0365 <a name="_sub21" href="#_subfunctions" class="code">function TW_CreateFcn(hObject, eventdata, handles)</a>
  419. 0366 <span class="keyword">if</span> ispc
  420. 0367 set(hObject,<span class="string">'BackgroundColor'</span>,<span class="string">'white'</span>);
  421. 0368 <span class="keyword">else</span>
  422. 0369 set(hObject,<span class="string">'BackgroundColor'</span>,get(0,<span class="string">'defaultUicontrolBackgroundColor'</span>));
  423. 0370 <span class="keyword">end</span>
  424. 0371
  425. 0372 <a name="_sub22" href="#_subfunctions" class="code">function DisplayWindow_Callback(hObject, eventdata, handles)</a>
  426. 0373
  427. 0374 <a name="_sub23" href="#_subfunctions" class="code">function DisplayWindow_CreateFcn(hObject, eventdata, handles)</a>
  428. 0375 set(hObject, <span class="string">'String'</span>, <span class="string">'4'</span>);
  429. 0376 <span class="keyword">if</span> ispc
  430. 0377 set(hObject,<span class="string">'BackgroundColor'</span>,<span class="string">'white'</span>);
  431. 0378 <span class="keyword">else</span>
  432. 0379 set(hObject,<span class="string">'BackgroundColor'</span>,get(0,<span class="string">'defaultUicontrolBackgroundColor'</span>));
  433. 0380 <span class="keyword">end</span>
  434. 0381
  435. 0382 <span class="comment">%function axes2ButtonDownCallback(hObject, eventdata, handles)</span>
  436. 0383 <span class="comment">%h=handles.axesS; P=get(h,'CurrentPoint');</span>
  437. 0384 <span class="comment">%fprintf( 'worked %f %f!\n', P(1),P(2));</span>
  438. 0385
  439. 0386 <a name="_sub24" href="#_subfunctions" class="code">function indexinS = getindexpre_c(t,timestart,timeend)</a>
  440. 0387 <span class="comment">% A function for indexing correctly in time to a spectra stored in memory</span>
  441. 0388 tlen = length(t);
  442. 0389
  443. 0390 i=1;
  444. 0391
  445. 0392 <span class="keyword">while</span> (i &lt;= tlen) &amp;&amp; (t(i) &lt; timestart)
  446. 0393 i = i + 1;
  447. 0394 <span class="keyword">end</span>
  448. 0395
  449. 0396 firstindex = i;
  450. 0397
  451. 0398 <span class="keyword">while</span> (i &lt;= tlen) &amp;&amp; (t(i) &lt; timeend)
  452. 0399 i = i + 1;
  453. 0400 <span class="keyword">end</span>
  454. 0401
  455. 0402 secondindex = i;
  456. 0403
  457. 0404 indexinS = [firstindex secondindex];
  458. 0405 <span class="comment">% --- Executes on button press in Plot.</span>
  459. 0406 <a name="_sub25" href="#_subfunctions" class="code">function Plot_Callback(hObject, eventdata, handles)</a>
  460. 0407
  461. 0408 hw=waitbar(0.5,<span class="string">'Spectrogram calculation'</span>);drawnow
  462. 0409
  463. 0410 params.Fs=handles.Fs;
  464. 0411
  465. 0412 window=eval(get(handles.WinSize,<span class="string">'String'</span>));
  466. 0413 winstep=eval(get(handles.StepSize,<span class="string">'String'</span>));
  467. 0414 movingwin=[window winstep]*0.001;
  468. 0415
  469. 0416 fmin=eval(get(handles.MinFreq,<span class="string">'String'</span>));
  470. 0417 fmax=eval(get(handles.MaxFreq,<span class="string">'String'</span>));
  471. 0418 params.fpass=[fmin fmax];
  472. 0419
  473. 0420 p=eval(get(handles.TW,<span class="string">'String'</span>));
  474. 0421 params.tapers=[p floor(2*p-1)];
  475. 0422
  476. 0423 params.pad=1;
  477. 0424
  478. 0425 Tslider=get(handles.slider1,<span class="string">'Value'</span>);
  479. 0426 Tim=eval(get(handles.DisplayWindow,<span class="string">'String'</span>));
  480. 0427 NT=min(round(Tim*handles.Fs),length(handles.ts));
  481. 0428 handles.Tmin=1+floor(Tslider*length(handles.ts));
  482. 0429 handles.Tmax=min(handles.Tmin+NT,length(handles.ts));
  483. 0430
  484. 0431 <span class="keyword">if</span> handles.Tmax &lt; length(handles.ts)
  485. 0432 set( handles.Jump, <span class="string">'Enable'</span>, <span class="string">'on'</span> );
  486. 0433 <span class="keyword">else</span>
  487. 0434 set( handles.Jump, <span class="string">'Enable'</span>, <span class="string">'off'</span> );
  488. 0435 <span class="keyword">end</span>
  489. 0436 <span class="keyword">if</span> handles.Tmin &gt; 1
  490. 0437 set( handles.JumpBack, <span class="string">'Enable'</span>, <span class="string">'on'</span> );
  491. 0438 <span class="keyword">else</span>
  492. 0439 set( handles.JumpBack, <span class="string">'Enable'</span>, <span class="string">'off'</span> );
  493. 0440 <span class="keyword">end</span>
  494. 0441
  495. 0442 data=handles.ts(handles.Tmin:handles.Tmax);data=data(:);
  496. 0443
  497. 0444 handles.upper_range = eval(get(handles.RatioLower,<span class="string">'String'</span>));
  498. 0445 handles.lower_range = eval(get(handles.RatioUpper,<span class="string">'String'</span>));
  499. 0446 handles.indexthresh = eval(get(handles.RatioThresh,<span class="string">'String'</span>));
  500. 0447 handles.nsmooth = eval(get(handles.SmoothFactor,<span class="string">'String'</span>));
  501. 0448
  502. 0449 <span class="comment">% determine spectrum type</span>
  503. 0450
  504. 0451 contents=get(handles.SpectrumType,<span class="string">'String'</span>);
  505. 0452 stype=contents{get(handles.SpectrumType,<span class="string">'Value'</span>)};
  506. 0453
  507. 0454 axes(handles.axesW); plot(((handles.markerstart - 1)/handles.Fs) + [handles.Tmin:handles.Tmax]/handles.Fs,handles.ts(handles.Tmin:handles.Tmax)); axis tight;
  508. 0455
  509. 0456 <span class="keyword">switch</span> stype
  510. 0457 <span class="keyword">case</span> <span class="string">'Original'</span>
  511. 0458
  512. 0459 <span class="keyword">if</span> not(handles.precomputed_spec) || handles.firsttime
  513. 0460 [S,t,f]=<a href="../../chronux_2_10/spectral_analysis/continuous/mtspecgramc.html" class="code" title="function [S,t,f,Serr]=mtspecgramc(data,movingwin,params)">mtspecgramc</a>(diff(data),movingwin,params);
  514. 0461 timeax=(handles.Tmin/handles.Fs)+t;
  515. 0462 <span class="keyword">else</span>
  516. 0463 indexinS = <a href="#_sub24" class="code" title="subfunction indexinS = getindexpre_c(t,timestart,timeend)">getindexpre_c</a>(handles.t,(handles.Tmin-1)/handles.Fs,(handles.Tmax-1)/handles.Fs);
  517. 0464 <span class="comment">% indexinS = round(([handles.Tmin-1, handles.Tmax-1]/handles.Fs)/movingwin(2))+1;</span>
  518. 0465
  519. 0466 <span class="keyword">if</span> indexinS(1) &lt; 1
  520. 0467 indexinS(1) = 1;
  521. 0468 <span class="keyword">end</span>
  522. 0469
  523. 0470 SLen = length(handles.S(:,1));
  524. 0471
  525. 0472 <span class="keyword">if</span> indexinS(2) &gt; SLen
  526. 0473 indexinS(2) = SLen;
  527. 0474 <span class="keyword">end</span>
  528. 0475
  529. 0476 f = handles.f;
  530. 0477 t = handles.t(indexinS(1):indexinS(2));
  531. 0478 S = handles.S(indexinS(1):indexinS(2),:);
  532. 0479
  533. 0480 timeax=t;
  534. 0481 <span class="keyword">end</span>
  535. 0482
  536. 0483 cmap=<span class="string">'default'</span>;
  537. 0484
  538. 0485 th=eval(get(handles.AmpThresh,<span class="string">'String'</span>));
  539. 0486
  540. 0487 <span class="comment">% This sets up the automatic segmenting algorithm</span>
  541. 0488 <span class="keyword">if</span> strcmp(handles.automethod,<span class="string">'threshold'</span>)
  542. 0489 [Stot boxcurve] = <a href="#_sub26" class="code" title="subfunction [Stot boxcurve] = compute_threshold_free(S,th,n)">compute_threshold_free</a>(S,th,handles.nsmooth);
  543. 0490 axes(handles.axesP);
  544. 0491 semilogy(timeax,Stot);
  545. 0492 axis tight;
  546. 0493 <span class="keyword">elseif</span> strcmp(handles.automethod,<span class="string">'ratiof'</span>)
  547. 0494 [ratiof boxcurve] = <a href="#_sub27" class="code" title="subfunction [ratiof boxcurve] = compute_index(S,lower_range,upper_range,lowerfreq,upperfreq,indexthresh,n)">compute_index</a>(S,handles.lower_range,handles.upper_range,fmin,fmax,handles.indexthresh,handles.nsmooth);
  548. 0495 axes(handles.axesP);
  549. 0496 semilogy(timeax,ratiof);
  550. 0497 axis tight;
  551. 0498 <span class="keyword">end</span>
  552. 0499
  553. 0500
  554. 0501 hold on; semilogy(timeax,boxcurve,<span class="string">'r'</span>); hold off;
  555. 0502 axes(handles.axesS);
  556. 0503 imagesc(timeax,f,log(S)'); axis xy; colormap(cmap);
  557. 0504 <span class="comment">%imagesc(t,f,log(S)'); axis xy; colormap(cmap);</span>
  558. 0505
  559. 0506 <span class="comment">% set(h,'ButtonDownFcn',axes2ButtonDownCallback);</span>
  560. 0507
  561. 0508 <span class="keyword">case</span> <span class="string">'Time Derivative'</span>
  562. 0509
  563. 0510 <span class="keyword">if</span> not(handles.precomputed_spec) || handles.firsttime
  564. 0511 [S,t,f]=<a href="../../chronux_2_10/spectral_analysis/continuous/mtdspecgramc.html" class="code" title="function [dS,t,f]=mtdspecgramc(data,movingwin,phi,params)">mtdspecgramc</a>(diff(data),movingwin,0,params);S = S';
  565. 0512 timeax=handles.Tmin/handles.Fs+t;
  566. 0513 <span class="keyword">else</span>
  567. 0514 indexinS = <a href="#_sub24" class="code" title="subfunction indexinS = getindexpre_c(t,timestart,timeend)">getindexpre_c</a>(handles.t,(handles.Tmin-1)/handles.Fs,(handles.Tmax-1)/handles.Fs);
  568. 0515 <span class="comment">% indexinS = round(([handles.Tmin-1, handles.Tmax-1]/handles.Fs)/movingwin(2))+1;</span>
  569. 0516
  570. 0517 <span class="keyword">if</span> indexinS(1) &lt; 1
  571. 0518 indexinS(1) = 1;
  572. 0519 <span class="keyword">end</span>
  573. 0520
  574. 0521 SLen = length(handles.S(1,:));
  575. 0522
  576. 0523 <span class="keyword">if</span> indexinS(2) &gt; SLen
  577. 0524 indexinS(2) = SLen;
  578. 0525 <span class="keyword">end</span>
  579. 0526
  580. 0527 f = handles.f;
  581. 0528 t = handles.t(indexinS(1):indexinS(2));
  582. 0529 S = handles.S(:,indexinS(1):indexinS(2));
  583. 0530 timeax = t;
  584. 0531 <span class="keyword">end</span>
  585. 0532
  586. 0533 cmap=<span class="string">'gray'</span>;
  587. 0534 th=eval(get(handles.TDerThresh,<span class="string">'String'</span>));
  588. 0535
  589. 0536 <span class="keyword">if</span> strcmp(handles.automethod,<span class="string">'threshold'</span>)
  590. 0537 [Stot boxcurve] = <a href="#_sub26" class="code" title="subfunction [Stot boxcurve] = compute_threshold_free(S,th,n)">compute_threshold_free</a>(abs(S'),th.handles.nsmooth);
  591. 0538 axes(handles.axesP);
  592. 0539 semilogy(timeax,Stot);
  593. 0540 axis tight;
  594. 0541 <span class="keyword">elseif</span> strcmp(handles.automethod,<span class="string">'ratiof'</span>)
  595. 0542 [ratiof boxcurve] = <a href="#_sub27" class="code" title="subfunction [ratiof boxcurve] = compute_index(S,lower_range,upper_range,lowerfreq,upperfreq,indexthresh,n)">compute_index</a>(abs(S)',handles.lower_range,handles.upper_range,fmin,fmax,handles.indexthresh,handles.nsmooth);
  596. 0543 axes(handles.axesP);
  597. 0544 semilogy(timeax,ratiof);
  598. 0545 axis tight;
  599. 0546 <span class="keyword">end</span>
  600. 0547
  601. 0548 hold on; semilogy(timeax,boxcurve,<span class="string">'r'</span>); hold off;
  602. 0549 axes(handles.axesS);
  603. 0550 imagesc(timeax,f,S); axis xy; colormap(cmap);
  604. 0551 cmin=0.02*min(min(S)); cmax=0.02*max(max(S)); caxis([cmin cmax]);
  605. 0552
  606. 0553 <span class="keyword">case</span> <span class="string">'Frequency Derivative'</span>
  607. 0554
  608. 0555 <span class="keyword">if</span> not(handles.precomputed_spec) || handles.firsttime
  609. 0556 [S,t,f]=<a href="../../chronux_2_10/spectral_analysis/continuous/mtdspecgramc.html" class="code" title="function [dS,t,f]=mtdspecgramc(data,movingwin,phi,params)">mtdspecgramc</a>(diff(data),movingwin,pi/2,params);S=S';
  610. 0557 timeax=handles.Tmin/handles.Fs+t;
  611. 0558 <span class="keyword">else</span>
  612. 0559 indexinS = <a href="#_sub24" class="code" title="subfunction indexinS = getindexpre_c(t,timestart,timeend)">getindexpre_c</a>(handles.t,(handles.Tmin-1)/handles.Fs,(handles.Tmax-1)/handles.Fs);
  613. 0560
  614. 0561 <span class="keyword">if</span> indexinS(1) &lt; 1
  615. 0562 indexinS(1) = 1;
  616. 0563 <span class="keyword">end</span>
  617. 0564
  618. 0565 SLen = length(handles.S(1,:));
  619. 0566
  620. 0567 <span class="keyword">if</span> indexinS(2) &gt; SLen
  621. 0568 indexinS(2) = SLen;
  622. 0569 <span class="keyword">end</span>
  623. 0570
  624. 0571 f = handles.f;
  625. 0572 t = handles.t(indexinS(1):indexinS(2));
  626. 0573 S = handles.S(:,indexinS(1):indexinS(2));
  627. 0574 timeax = t;
  628. 0575 <span class="keyword">end</span>
  629. 0576
  630. 0577 cmap=<span class="string">'gray'</span>;
  631. 0578 th=eval(get(handles.TDerThresh,<span class="string">'String'</span>));
  632. 0579
  633. 0580 <span class="keyword">if</span> strcmp(handles.automethod,<span class="string">'threshold'</span>)
  634. 0581 [Stot boxcurve] = <a href="#_sub26" class="code" title="subfunction [Stot boxcurve] = compute_threshold_free(S,th,n)">compute_threshold_free</a>(abs(S'),th,handles.nsmooth);
  635. 0582 axes(handles.axesP);
  636. 0583 semilogy(timeax,Stot);
  637. 0584 axis tight;
  638. 0585 <span class="keyword">elseif</span> strcmp(handles.automethod,<span class="string">'ratiof'</span>)
  639. 0586 [ratiof boxcurve] = <a href="#_sub27" class="code" title="subfunction [ratiof boxcurve] = compute_index(S,lower_range,upper_range,lowerfreq,upperfreq,indexthresh,n)">compute_index</a>(abs(S)',handles.lower_range,handles.upper_range,fmin,fmax,handles.indexthresh,handles.nsmooth);
  640. 0587 axes(handles.axesP);
  641. 0588 semilogy(timeax,ratiof);
  642. 0589 axis tight;
  643. 0590 <span class="keyword">end</span>
  644. 0591
  645. 0592 hold on; semilogy(timeax,boxcurve,<span class="string">'r'</span>); hold off;
  646. 0593 axes(handles.axesS);
  647. 0594 imagesc(timeax,f,S); axis xy; colormap(cmap);
  648. 0595 cmin=0.02*min(min(S)); cmax=0.02*max(max(S)); caxis([cmin cmax]);
  649. 0596
  650. 0597 <span class="keyword">end</span>;
  651. 0598
  652. 0599 <span class="keyword">if</span> handles.firsttime <span class="comment">% first time precomputing the spectra</span>
  653. 0600 handles.S = S;
  654. 0601 handles.t = t;
  655. 0602 handles.f = f;
  656. 0603 handles.precomputed_spec = 1;
  657. 0604 handles.firstime = 0;
  658. 0605 <span class="keyword">end</span>
  659. 0606
  660. 0607 <span class="comment">% S = log(S)';</span>
  661. 0608 <span class="comment">% Smax = max(max(S));</span>
  662. 0609 <span class="comment">% Smin = min(min(S));</span>
  663. 0610 <span class="comment">% Ssmall = uint8(round(((S - Smin)/(Smax-Smin))*255));</span>
  664. 0611 <span class="comment">%</span>
  665. 0612 <span class="comment">% save('uint8_test.mat','Ssmall','-mat');</span>
  666. 0613 <span class="comment">% save('full_rest.mat','S','-mat');</span>
  667. 0614
  668. 0615 handles.times=timeax(:);
  669. 0616 handles.transition=[diff(boxcurve(:)); 0];
  670. 0617
  671. 0618 set( handles.axesS, <span class="string">'XTick'</span>, [] );
  672. 0619 set( handles.axesP, <span class="string">'XTick'</span>, [] );
  673. 0620
  674. 0621 <span class="keyword">if</span> exist(<span class="string">'handles.datacursor'</span>)
  675. 0622 delete( handles.datacursor );
  676. 0623 delete( handles.segmentLineP );
  677. 0624 delete( handles.segmentLineS );
  678. 0625 delete( handles.segmentLineW );
  679. 0626 <span class="keyword">end</span>
  680. 0627
  681. 0628 handles.datacursor=datacursormode(handles.figure1);
  682. 0629 axes(handles.axesP);
  683. 0630 handles.segmentLineP = line(<span class="string">'Visible'</span>,<span class="string">'off'</span>);
  684. 0631 axes(handles.axesS);
  685. 0632 handles.segmentLineS = line(<span class="string">'Visible'</span>,<span class="string">'off'</span>);
  686. 0633 axes(handles.axesW);
  687. 0634 handles.segmentLineW = line(<span class="string">'Visible'</span>,<span class="string">'off'</span>);
  688. 0635
  689. 0636 <span class="keyword">if</span> get( handles.SegmentButton, <span class="string">'Value'</span> )
  690. 0637 set(handles.datacursor,<span class="string">'Enable'</span>,<span class="string">'on'</span>,<span class="string">'DisplayStyle'</span>,<span class="string">'datatip'</span>,<span class="string">'SnapToDataVertex'</span>,<span class="string">'off'</span>,<span class="string">'UpdateFcn'</span>,@<a href="#_sub41" class="code" title="subfunction txt = datacursorfunc(empt,event_obj)">datacursorfunc</a>);
  691. 0638 <span class="keyword">end</span>
  692. 0639
  693. 0640 guidata(gcbo,handles);
  694. 0641 <a href="../../chronux_2_10/fly_track/videoIO/videoIO_2006a/@videoReader/close.html" class="code" title="function vr = close(vr)">close</a>(hw);
  695. 0642 handles = <a href="#_sub42" class="code" title="subfunction handles = draw_segments( handles )">draw_segments</a>(handles);
  696. 0643
  697. 0644 <a name="_sub26" href="#_subfunctions" class="code">function [Stot boxcurve] = compute_threshold_free(S,th,n)</a>
  698. 0645 <span class="comment">% Computes the threshold based on a floating percentage of the maximum</span>
  699. 0646 <span class="comment">% summed intensity</span>
  700. 0647 Stot=sum(S,2);
  701. 0648 boxcurve=Stot;
  702. 0649 smax=max(Stot);
  703. 0650
  704. 0651 Stot = <a href="#_sub28" class="code" title="subfunction smoothedcurve = smooth_curve(curve2smooth,n);">smooth_curve</a>(Stot',n); <span class="comment">% for removing extremes</span>
  705. 0652
  706. 0653 boxcurve(find(Stot&lt;th*smax))= smax*th;
  707. 0654 boxcurve(find(Stot&gt;th*smax))= smax;
  708. 0655
  709. 0656 <a name="_sub27" href="#_subfunctions" class="code">function [ratiof boxcurve] = compute_index(S,lower_range,upper_range,lowerfreq,upperfreq,indexthresh,n)</a>
  710. 0657 <span class="comment">% This algorithm is based on the method described in Aylin's</span>
  711. 0658 <span class="comment">% dissertation.</span>
  712. 0659
  713. 0660 S = S';
  714. 0661 nfreqs = length(S(:,1));
  715. 0662 freqspern = (upperfreq - lowerfreq) / nfreqs;
  716. 0663
  717. 0664 indexinlower = fliplr(nfreqs - round((lower_range - lowerfreq)/freqspern));
  718. 0665 indexinupper = fliplr(nfreqs - round((upper_range - lowerfreq)/freqspern)) + 1;
  719. 0666
  720. 0667 nrangelower = indexinlower(2)-indexinlower(1);
  721. 0668 nrangeupper = indexinupper(2)-indexinupper(1);
  722. 0669
  723. 0670 ratiof = ( sum(S(indexinupper(1) : indexinupper(2),:)) / nrangeupper )<span class="keyword">...</span><span class="comment"> </span>
  724. 0671 ./ ( sum(S( indexinlower(1) : indexinlower(2),:)) / nrangelower );
  725. 0672
  726. 0673
  727. 0674 ratiof = <a href="#_sub28" class="code" title="subfunction smoothedcurve = smooth_curve(curve2smooth,n);">smooth_curve</a>(ratiof,n); <span class="comment">% for smoothing the curve</span>
  728. 0675
  729. 0676 maxrf = max(ratiof);
  730. 0677
  731. 0678 boxcurve = ratiof;
  732. 0679
  733. 0680 boxcurve(find(ratiof&lt;indexthresh))= indexthresh;
  734. 0681 boxcurve(find(ratiof&gt;=indexthresh))= maxrf;
  735. 0682
  736. 0683 <a name="_sub28" href="#_subfunctions" class="code">function smoothedcurve = smooth_curve(curve2smooth,n);</a>
  737. 0684 <span class="comment">% Computes the moving average of the curve where n is an integer</span>
  738. 0685 <span class="comment">% for example n = 1 averages the current point with the point before and afterwards</span>
  739. 0686
  740. 0687 m = length(curve2smooth);
  741. 0688 <span class="keyword">if</span> m &gt; 0
  742. 0689 curve2smooth = [repmat(curve2smooth(1),1,n) curve2smooth repmat(curve2smooth(m),1,n)];
  743. 0690 smoothedcurve = zeros(m,1);
  744. 0691
  745. 0692 <span class="keyword">for</span> i = 1:m
  746. 0693 smoothedcurve(i) = sum(curve2smooth(i:i + 2 * n)) / (2 * n + 1);
  747. 0694 <span class="keyword">end</span>
  748. 0695 <span class="keyword">else</span> <span class="comment">% just to save computation time</span>
  749. 0696 smoothed_curve = curve2smooth;
  750. 0697 <span class="keyword">end</span>
  751. 0698
  752. 0699 <a name="_sub29" href="#_subfunctions" class="code">function MinFreq_Callback(hObject, eventdata, handles)</a>
  753. 0700
  754. 0701 <a name="_sub30" href="#_subfunctions" class="code">function MinFreq_CreateFcn(hObject, eventdata, handles)</a>
  755. 0702 <span class="keyword">if</span> ispc
  756. 0703 set(hObject,<span class="string">'BackgroundColor'</span>,<span class="string">'white'</span>);
  757. 0704 <span class="keyword">else</span>
  758. 0705 set(hObject,<span class="string">'BackgroundColor'</span>,get(0,<span class="string">'defaultUicontrolBackgroundColor'</span>));
  759. 0706 <span class="keyword">end</span>
  760. 0707
  761. 0708 <a name="_sub31" href="#_subfunctions" class="code">function MaxFreq_Callback(hObject, eventdata, handles)</a>
  762. 0709 <a name="_sub32" href="#_subfunctions" class="code">function MaxFreq_CreateFcn(hObject, eventdata, handles)</a>
  763. 0710 <span class="keyword">if</span> ispc
  764. 0711 set(hObject,<span class="string">'BackgroundColor'</span>,<span class="string">'white'</span>);
  765. 0712 <span class="keyword">else</span>
  766. 0713 set(hObject,<span class="string">'BackgroundColor'</span>,get(0,<span class="string">'defaultUicontrolBackgroundColor'</span>));
  767. 0714 <span class="keyword">end</span>
  768. 0715
  769. 0716 <span class="comment">% --- Executes on selection change in SpectrumType.</span>
  770. 0717 <a name="_sub33" href="#_subfunctions" class="code">function SpectrumType_Callback(hObject, eventdata, handles)</a>
  771. 0718 <a name="_sub34" href="#_subfunctions" class="code">function SpectrumType_CreateFcn(hObject, eventdata, handles)</a>
  772. 0719 <span class="keyword">if</span> ispc
  773. 0720 set(hObject,<span class="string">'BackgroundColor'</span>,<span class="string">'white'</span>);
  774. 0721 <span class="keyword">else</span>
  775. 0722 set(hObject,<span class="string">'BackgroundColor'</span>,get(0,<span class="string">'defaultUicontrolBackgroundColor'</span>));
  776. 0723 <span class="keyword">end</span>
  777. 0724
  778. 0725 <a name="_sub35" href="#_subfunctions" class="code">function AmpThresh_Callback(hObject, eventdata, handles)</a>
  779. 0726 <a name="_sub36" href="#_subfunctions" class="code">function AmpThresh_CreateFcn(hObject, eventdata, handles)</a>
  780. 0727 <span class="keyword">if</span> ispc
  781. 0728 set(hObject,<span class="string">'BackgroundColor'</span>,<span class="string">'white'</span>);
  782. 0729 <span class="keyword">else</span>
  783. 0730 set(hObject,<span class="string">'BackgroundColor'</span>,get(0,<span class="string">'defaultUicontrolBackgroundColor'</span>));
  784. 0731 <span class="keyword">end</span>
  785. 0732
  786. 0733 <a name="_sub37" href="#_subfunctions" class="code">function TDerThresh_Callback(hObject, eventdata, handles)</a>
  787. 0734
  788. 0735 <span class="comment">% --- Executes during object creation, after setting all properties.</span>
  789. 0736 <a name="_sub38" href="#_subfunctions" class="code">function TDerThresh_CreateFcn(hObject, eventdata, handles)</a>
  790. 0737 <span class="keyword">if</span> ispc
  791. 0738 set(hObject,<span class="string">'BackgroundColor'</span>,<span class="string">'white'</span>);
  792. 0739 <span class="keyword">else</span>
  793. 0740 set(hObject,<span class="string">'BackgroundColor'</span>,get(0,<span class="string">'defaultUicontrolBackgroundColor'</span>));
  794. 0741 <span class="keyword">end</span>
  795. 0742
  796. 0743 <span class="comment">% --- Executes on button press in PlayAll.</span>
  797. 0744 <a name="_sub39" href="#_subfunctions" class="code">function PlayAll_Callback(hObject, eventdata, handles)</a>
  798. 0745 wavplay(handles.ts,handles.Fs);
  799. 0746
  800. 0747
  801. 0748 <span class="comment">% --- Executes on button press in PlayWindow.</span>
  802. 0749 <a name="_sub40" href="#_subfunctions" class="code">function PlayWindow_Callback(hObject, eventdata, handles)</a>
  803. 0750 wavplay(handles.ts(handles.Tmin:handles.Tmax),handles.Fs,<span class="string">'async'</span>);
  804. 0751
  805. 0752 <span class="comment">%h=handles.axesP; axes(h); semilogy(timeax,Stot); axis tight;</span>
  806. 0753
  807. 0754 <a name="_sub41" href="#_subfunctions" class="code">function txt = datacursorfunc(empt,event_obj)</a>
  808. 0755 pos = get(event_obj,<span class="string">'Position'</span>);
  809. 0756 handles=guidata(get(event_obj,<span class="string">'Target'</span>));
  810. 0757
  811. 0758 set(handles.segmentLineP,<span class="string">'Xdata'</span>,[pos(1) pos(1)],<span class="string">'Ydata'</span>,[0.00000000000001*pos(2) 1000000000000*pos(2)],<span class="string">'Visible'</span>,<span class="string">'on'</span> );
  812. 0759 set(handles.segmentLineS,<span class="string">'Xdata'</span>,[pos(1) pos(1)],<span class="string">'Ydata'</span>,[0.00000000000001*pos(2) 1000000000000*pos(2)],<span class="string">'Visible'</span>,<span class="string">'on'</span> );
  813. 0760 set(handles.segmentLineW,<span class="string">'Xdata'</span>,[pos(1) pos(1)],<span class="string">'Ydata'</span>,[-100000000000*pos(2) 1000000000000*pos(2)],<span class="string">'Visible'</span>,<span class="string">'on'</span> );
  814. 0761
  815. 0762 <span class="keyword">if</span> handles.start_stop_enable == 1
  816. 0763 set( handles.SegStartButton, <span class="string">'Enable'</span>, <span class="string">'on'</span> );
  817. 0764 <span class="keyword">else</span>
  818. 0765 set( handles.SegEndButton, <span class="string">'Enable'</span>, <span class="string">'on'</span> );
  819. 0766 <span class="keyword">end</span>
  820. 0767
  821. 0768 txt = {[num2str(pos(1))]};
  822. 0769 guidata(gcbo,handles);
  823. 0770
  824. 0771 <a name="_sub42" href="#_subfunctions" class="code">function handles = draw_segments( handles )</a>
  825. 0772 n = 1;
  826. 0773 <span class="keyword">while</span> n &lt;= length( handles.segments )
  827. 0774 handles.segments(n).lines=[];
  828. 0775 handles.segments(n) = <a href="#_sub46" class="code" title="subfunction out=draw_all_x( handles, segment )">draw_all_x</a>( handles, handles.segments(n) );
  829. 0776 n = n + 1;
  830. 0777 <span class="keyword">end</span>
  831. 0778 guidata(gcbo,handles);
  832. 0779
  833. 0780 <span class="comment">% --- Executes on button press in SegmentButton.</span>
  834. 0781 <a name="_sub43" href="#_subfunctions" class="code">function SegmentButton_Callback(hObject, eventdata, handles)</a>
  835. 0782 toggled = get( handles.SegmentButton, <span class="string">'Value'</span> );
  836. 0783
  837. 0784 <span class="keyword">if</span> toggled
  838. 0785 handles.segments = [];
  839. 0786 handles.segmentmode = 1;
  840. 0787 set( handles.SegmentButton, <span class="string">'String'</span>, <span class="string">'Segment On'</span> );
  841. 0788 set( handles.SegmentButton, <span class="string">'Enable'</span>, <span class="string">'off'</span> );
  842. 0789 <span class="keyword">if</span> not(exist([handles.filename <span class="string">'.seg.txt'</span>]));
  843. 0790 set( handles.LoadSegments, <span class="string">'Enable'</span>, <span class="string">'off'</span> );
  844. 0791 <span class="keyword">else</span>
  845. 0792 set( handles.LoadSegments, <span class="string">'Enable'</span>, <span class="string">'on'</span> );
  846. 0793 <span class="keyword">end</span>
  847. 0794 set( handles.AutoSegmentFile, <span class="string">'Enable'</span>,<span class="string">'on'</span>);
  848. 0795 set( handles.AutoSegButton, <span class="string">'Enable'</span>, <span class="string">'on'</span> );
  849. 0796 set( handles.SegmentLengthEdit, <span class="string">'Enable'</span>, <span class="string">'on'</span> );
  850. 0797 set( handles.SegmentLengthText, <span class="string">'Enable'</span>, <span class="string">'on '</span> );
  851. 0798 set( handles.SaveSegments, <span class="string">'Enable'</span>, <span class="string">'on'</span> );
  852. 0799 set( handles.DeleteSegment, <span class="string">'Enable'</span>, <span class="string">'on'</span> );
  853. 0800 set( handles.DeleteAllButton, <span class="string">'Enable'</span>, <span class="string">'on'</span> );
  854. 0801 set( handles.SegCancel, <span class="string">'Enable'</span>, <span class="string">'on'</span> );
  855. 0802 set( handles.PlotSegments, <span class="string">'Enable'</span>, <span class="string">'on'</span> );
  856. 0803 set( handles.LoadFile, <span class="string">'Enable'</span>, <span class="string">'off'</span> );
  857. 0804 set( handles.LoadNext, <span class="string">'Enable'</span>, <span class="string">'off'</span> );
  858. 0805 handles.start_stop_enable = 1;
  859. 0806 set(handles.datacursor,<span class="string">'Enable'</span>,<span class="string">'on'</span>,<span class="string">'DisplayStyle'</span>,<span class="string">'datatip'</span>,<span class="string">'SnapToDataVertex'</span>,<span class="string">'off'</span>,<span class="string">'UpdateFcn'</span>,@<a href="#_sub41" class="code" title="subfunction txt = datacursorfunc(empt,event_obj)">datacursorfunc</a>);
  860. 0807 fprintf( <span class="string">'Segment mode on!\n'</span> );
  861. 0808 <span class="keyword">else</span>
  862. 0809 handles.segmentmode = 0;
  863. 0810 set( handles.SegmentButton, <span class="string">'String'</span>, <span class="string">'Segment Off'</span> );
  864. 0811 set( handles.AutoSegButton, <span class="string">'Enable'</span>, <span class="string">'off'</span> );
  865. 0812 set( handles.AutoSegmentFile, <span class="string">'Enable'</span>,<span class="string">'off'</span>);
  866. 0813 set( handles.SegmentLengthEdit, <span class="string">'Enable'</span>, <span class="string">'off'</span> );
  867. 0814 set( handles.SegmentLengthText, <span class="string">'Enable'</span>, <span class="string">'off'</span> );
  868. 0815 set( handles.LoadSegments, <span class="string">'Enable'</span>, <span class="string">'off'</span> );
  869. 0816 set( handles.SaveSegments, <span class="string">'Enable'</span>, <span class="string">'off'</span> );
  870. 0817 set( handles.SegStartButton, <span class="string">'Enable'</span>, <span class="string">'off'</span> );
  871. 0818 set( handles.SegEndButton, <span class="string">'Enable'</span>, <span class="string">'off'</span> );
  872. 0819 set( handles.DeleteSegment, <span class="string">'Enable'</span>, <span class="string">'off'</span> );
  873. 0820 set( handles.DeleteAllButton, <span class="string">'Enable'</span>, <span class="string">'off'</span> );
  874. 0821 set( handles.SegCancel, <span class="string">'Enable'</span>, <span class="string">'off'</span> );
  875. 0822 set( handles.PlotSegments, <span class="string">'Enable'</span>, <span class="string">'off'</span> );
  876. 0823 set( handles.LoadFile, <span class="string">'Enable'</span>, <span class="string">'on'</span> );
  877. 0824 set( handles.LoadNext, <span class="string">'Enable'</span>, <span class="string">'on'</span> );
  878. 0825 set(handles.datacursor,<span class="string">'Enable'</span>,<span class="string">'off'</span>)
  879. 0826 fprintf( <span class="string">'Segment mode off!\n'</span> );
  880. 0827 <span class="keyword">end</span>
  881. 0828 guidata(gcbo,handles);
  882. 0829
  883. 0830
  884. 0831 <span class="comment">% --- Executes on button press in SegStartButton.</span>
  885. 0832 <a name="_sub44" href="#_subfunctions" class="code">function SegStartButton_Callback(hObject, eventdata, handles)</a>
  886. 0833 set( handles.LoadSegments, <span class="string">'Enable'</span>, <span class="string">'off'</span> );
  887. 0834 set( handles.SegStartButton, <span class="string">'Enable'</span>, <span class="string">'off'</span> );
  888. 0835 handles.start_stop_enable = 0;
  889. 0836 xy=get(handles.segmentLineP,<span class="string">'Xdata'</span>);
  890. 0837 handles.segment.start=xy(1);
  891. 0838 handles.segment.lines=[];
  892. 0839 axes(handles.axesP);
  893. 0840 set(handles.segmentLineP,<span class="string">'LineWidth'</span>,3);
  894. 0841 handles.segment.lines(1) = handles.segmentLineP;
  895. 0842 handles.segmentLineP = line(<span class="string">'Visible'</span>,<span class="string">'off'</span>);
  896. 0843 axes(handles.axesS);
  897. 0844 set(handles.segmentLineS,<span class="string">'LineWidth'</span>,3);
  898. 0845 handles.segment.lines(2) = handles.segmentLineS;
  899. 0846 handles.segmentLineS = line(<span class="string">'Visible'</span>,<span class="string">'off'</span>);
  900. 0847 axes(handles.axesW);
  901. 0848 set(handles.segmentLineW,<span class="string">'LineWidth'</span>,3);
  902. 0849 handles.segment.lines(3) = handles.segmentLineW;
  903. 0850 handles.segmentLineW = line(<span class="string">'Visible'</span>,<span class="string">'off'</span>);
  904. 0851
  905. 0852 guidata(gcbo,handles);
  906. 0853
  907. 0854 <span class="comment">% --- Executes on button press in SegEndButton.</span>
  908. 0855 <a name="_sub45" href="#_subfunctions" class="code">function SegEndButton_Callback(hObject, eventdata, handles)</a>
  909. 0856 set( handles.SegEndButton, <span class="string">'Enable'</span>, <span class="string">'off'</span> );
  910. 0857 handles.start_stop_enable = 1;
  911. 0858 xy=get(handles.segmentLineP,<span class="string">'Xdata'</span>);
  912. 0859 handles.segment.end=xy(1);
  913. 0860 handles.segment=<a href="#_sub46" class="code" title="subfunction out=draw_all_x( handles, segment )">draw_all_x</a>( handles, handles.segment );
  914. 0861 handles.segments = [handles.segments handles.segment];
  915. 0862 guidata(gcbo,handles);
  916. 0863
  917. 0864 <a name="_sub46" href="#_subfunctions" class="code">function out=draw_all_x( handles, segment )</a>
  918. 0865 segment=<a href="#_sub47" class="code" title="subfunction out=draw_x( theaxes, segment )">draw_x</a>( handles.axesP, segment );
  919. 0866 segment=<a href="#_sub47" class="code" title="subfunction out=draw_x( theaxes, segment )">draw_x</a>( handles.axesS, segment );
  920. 0867 segment=<a href="#_sub47" class="code" title="subfunction out=draw_x( theaxes, segment )">draw_x</a>( handles.axesW, segment );
  921. 0868 out=segment;
  922. 0869
  923. 0870 <a name="_sub47" href="#_subfunctions" class="code">function out=draw_x( theaxes, segment )</a>
  924. 0871 axes(theaxes);
  925. 0872 ylim = get(theaxes,<span class="string">'YLim'</span>);
  926. 0873 segment.lines = [segment.lines line(<span class="string">'Xdata'</span>,[segment.start segment.start],<span class="string">'Ydata'</span>,ylim,<span class="string">'LineWidth'</span>,3)];
  927. 0874 segment.lines = [segment.lines line(<span class="string">'Xdata'</span>,[segment.end segment.end],<span class="string">'Ydata'</span>,ylim,<span class="string">'LineWidth'</span>,3)];
  928. 0875 segment.lines = [segment.lines line(<span class="string">'Xdata'</span>,[segment.start segment.end],<span class="string">'Ydata'</span>,ylim,<span class="string">'LineWidth'</span>,3)];
  929. 0876 segment.lines = [segment.lines line(<span class="string">'Xdata'</span>,[segment.start segment.end],<span class="string">'Ydata'</span>,[ylim(2) ylim(1)],<span class="string">'LineWidth'</span>,3)];
  930. 0877 out=segment;
  931. 0878
  932. 0879 <span class="comment">% --- Executes on button press in JumpBack.</span>
  933. 0880 <a name="_sub48" href="#_subfunctions" class="code">function JumpBack_Callback(hObject, eventdata, handles)</a>
  934. 0881 <a href="#_sub50" class="code" title="subfunction Jump_shared(hObject, eventdata, handles, jump_dir )">Jump_shared</a>(hObject, eventdata, handles, -1 )
  935. 0882
  936. 0883 <span class="comment">% --- Executes on button press in Jump.</span>
  937. 0884 <a name="_sub49" href="#_subfunctions" class="code">function Jump_Callback(hObject, eventdata, handles)</a>
  938. 0885 <a href="#_sub50" class="code" title="subfunction Jump_shared(hObject, eventdata, handles, jump_dir )">Jump_shared</a>(hObject, eventdata, handles, 1 )
  939. 0886
  940. 0887 <a name="_sub50" href="#_subfunctions" class="code">function Jump_shared(hObject, eventdata, handles, jump_dir )</a>
  941. 0888 Tim=eval(get(handles.DisplayWindow,<span class="string">'String'</span>));
  942. 0889 tDuration = str2num(get(handles.Duration,<span class="string">'String'</span>));
  943. 0890 maxTslider = (tDuration - Tim)/tDuration;
  944. 0891 NT=min(round(Tim*handles.Fs),length(handles.ts));
  945. 0892 Tslider=get(handles.slider1,<span class="string">'Value'</span>);
  946. 0893 Tslider = Tslider + jump_dir * Tim * handles.Fs / length(handles.ts);
  947. 0894
  948. 0895 <span class="keyword">if</span> Tim &gt; tDuration
  949. 0896 set(handles.DisplayWindow,<span class="string">'String'</span>,num2str(tDuration));
  950. 0897 Tslider = 0;
  951. 0898 <span class="keyword">end</span>
  952. 0899
  953. 0900
  954. 0901 <span class="keyword">if</span> jump_dir == 1 <span class="comment">% jumping forward</span>
  955. 0902 <span class="keyword">if</span> Tslider &gt; maxTslider
  956. 0903 Tslider = maxTslider;
  957. 0904 <span class="keyword">end</span>
  958. 0905 <span class="keyword">end</span>
  959. 0906
  960. 0907 <span class="keyword">if</span> jump_dir == -1 <span class="comment">% jumping backwards</span>
  961. 0908 <span class="keyword">if</span> Tslider &lt; 0
  962. 0909 Tslider = 0
  963. 0910 <span class="keyword">end</span>
  964. 0911 <span class="keyword">end</span>
  965. 0912
  966. 0913
  967. 0914 <span class="comment">% if Tslider &gt; 1</span>
  968. 0915 <span class="comment">% Tslider = ( length(handles.ts) - NT ) / length(handles.ts);</span>
  969. 0916 <span class="comment">% end</span>
  970. 0917 <span class="comment">% if Tslider &lt; 0</span>
  971. 0918 <span class="comment">% Tslider = 0</span>
  972. 0919 <span class="comment">% end</span>
  973. 0920 set(handles.slider1,<span class="string">'Value'</span>,Tslider);
  974. 0921 guidata(gcbo,handles);
  975. 0922 <a href="#_sub25" class="code" title="subfunction Plot_Callback(hObject, eventdata, handles)">Plot_Callback</a>(hObject, eventdata, handles)
  976. 0923
  977. 0924
  978. 0925 <a name="_sub51" href="#_subfunctions" class="code">function LoadNext_Callback(hObject, eventdata, handles)</a>
  979. 0926
  980. 0927 <span class="comment">% Get filename, extension. Look for next file with same extension, no seg</span>
  981. 0928 <span class="comment">% file associated</span>
  982. 0929
  983. 0930 exclude_name = [handles.filename, get(handles.ExcludeExt,<span class="string">'String'</span>)];
  984. 0931 <span class="keyword">if</span> not(exist(exclude_name))
  985. 0932 fid=fopen( exclude_name, <span class="string">'w'</span> );
  986. 0933 fclose( fid);
  987. 0934 <span class="keyword">end</span>
  988. 0935
  989. 0936 [path] = cell2mat(regexp( handles.filename, <span class="string">'^.*\'</span>, <span class="string">'match'</span> ));
  990. 0937 [extension] = cell2mat(regexp( handles.filename, <span class="string">'\w+$'</span>, <span class="string">'match'</span> ));
  991. 0938 dirlist = dir( [path <span class="string">'*'</span> extension] );
  992. 0939 ndir = length(dirlist);
  993. 0940 n = 1;
  994. 0941 <span class="keyword">while</span> n &lt;= ndir
  995. 0942 file = dirlist(n).name;
  996. 0943 <span class="keyword">if</span> not(exist([path file get(handles.ExcludeExt,<span class="string">'String'</span>)]))
  997. 0944 <span class="keyword">break</span>;
  998. 0945 <span class="keyword">end</span>
  999. 0946 n = n + 1;
  1000. 0947 <span class="keyword">end</span>
  1001. 0948 <span class="keyword">if</span> n &lt;= ndir
  1002. 0949 set( handles.FileNameString, <span class="string">'String'</span>,file);
  1003. 0950 handles.filename = [path file];
  1004. 0951 guidata(gcbo,handles);
  1005. 0952 handles = <a href="#_sub7" class="code" title="subfunction handles = loadfile(hObject, eventdata, handles, varargin)">loadfile</a>(hObject, eventdata, handles);
  1006. 0953 <span class="keyword">else</span>
  1007. 0954 error(<span class="string">'No more files found matching desired pattern'</span>);
  1008. 0955 <span class="keyword">end</span>
  1009. 0956
  1010. 0957 <span class="comment">% --- Executes on button press in Precompute.</span>
  1011. 0958 <a name="_sub52" href="#_subfunctions" class="code">function Precompute_Callback(hObject, eventdata, handles)</a>
  1012. 0959 <span class="comment">% handles = guidata(gcbo);</span>
  1013. 0960 toggled = get( hObject, <span class="string">'Value'</span> );
  1014. 0961 <span class="keyword">if</span> toggled
  1015. 0962
  1016. 0963 <span class="comment">% Disable spectra configuration parameters</span>
  1017. 0964
  1018. 0965 <span class="comment">% set(handles.DisplayWindow, 'Enable', 'off');</span>
  1019. 0966 set(handles.WinSize, <span class="string">'Enable'</span>, <span class="string">'off'</span>);
  1020. 0967 set(handles.StepSize, <span class="string">'Enable'</span>, <span class="string">'off'</span>);
  1021. 0968 set(handles.TW, <span class="string">'Enable'</span>, <span class="string">'off'</span>);
  1022. 0969 set(handles.MinFreq, <span class="string">'Enable'</span>, <span class="string">'off'</span>);
  1023. 0970 set(handles.MaxFreq, <span class="string">'Enable'</span>, <span class="string">'off'</span>);
  1024. 0971 set(handles.SpectrumType, <span class="string">'Enable'</span>, <span class="string">'off'</span>);
  1025. 0972 <span class="comment">% set(handles.AmpThresh, 'Enable', 'off');</span>
  1026. 0973 <span class="comment">% set(handles.TDerThresh, 'Enable', 'off');</span>
  1027. 0974 set(handles.LoadNext, <span class="string">'Enable'</span>,<span class="string">'off'</span>);
  1028. 0975 <span class="comment">% set(handles.LoadFile, 'Enable','off');</span>
  1029. 0976
  1030. 0977 valueTslider = get(handles.slider1,<span class="string">'Value'</span>);
  1031. 0978 set(handles.slider1,<span class="string">'Value'</span>,0);
  1032. 0979 strDuration = get(handles.Duration,<span class="string">'String'</span>);
  1033. 0980 strWindow = get(handles.DisplayWindow,<span class="string">'String'</span>);
  1034. 0981
  1035. 0982 handles.firsttime = 1; <span class="comment">% indicates that the spectra need to be calculated</span>
  1036. 0983
  1037. 0984 <span class="keyword">if</span> str2num(strDuration) &gt; handles.maxspec_t
  1038. 0985 strDuration = num2str(handles.maxspec_t);
  1039. 0986 <span class="keyword">end</span>
  1040. 0987
  1041. 0988 set(handles.DisplayWindow,<span class="string">'String'</span>,strDuration);
  1042. 0989
  1043. 0990 <a href="#_sub25" class="code" title="subfunction Plot_Callback(hObject, eventdata, handles)">Plot_Callback</a>(handles.Plot, eventdata, handles);
  1044. 0991
  1045. 0992 handles = guidata(hObject);
  1046. 0993
  1047. 0994 handles.firsttime = 0;
  1048. 0995 handles.precomputed_spec = 1;
  1049. 0996 set(handles.DisplayWindow,<span class="string">'String'</span>,strWindow);
  1050. 0997 set(handles.slider1,<span class="string">'Value'</span>,valueTslider);
  1051. 0998 <a href="#_sub25" class="code" title="subfunction Plot_Callback(hObject, eventdata, handles)">Plot_Callback</a>(handles.Plot, eventdata, handles);
  1052. 0999 handles = guidata(hObject);
  1053. 1000 handles.precomputed_spec = 1;
  1054. 1001 <span class="keyword">else</span>
  1055. 1002 handles.precomputed_spec = 0;
  1056. 1003
  1057. 1004
  1058. 1005 <span class="comment">% Enable spectra configuration parameters</span>
  1059. 1006
  1060. 1007 handles.S = []; <span class="comment">% release memory</span>
  1061. 1008 handles.t = [];
  1062. 1009 handles.f = [];
  1063. 1010
  1064. 1011 set(handles.WinSize, <span class="string">'Enable'</span>, <span class="string">'on'</span>);
  1065. 1012 set(handles.StepSize, <span class="string">'Enable'</span>, <span class="string">'on'</span>);
  1066. 1013 set(handles.TW, <span class="string">'Enable'</span>, <span class="string">'on'</span>);
  1067. 1014 set(handles.MinFreq, <span class="string">'Enable'</span>, <span class="string">'on'</span>);
  1068. 1015 set(handles.MaxFreq, <span class="string">'Enable'</span>, <span class="string">'on'</span>);
  1069. 1016 set(handles.SpectrumType, <span class="string">'Enable'</span>, <span class="string">'on'</span>);
  1070. 1017 <span class="comment">% set(handles.AmpThresh, 'Enable', 'on');</span>
  1071. 1018 set(handles.TDerThresh, <span class="string">'Enable'</span>, <span class="string">'on'</span>);
  1072. 1019 set(handles.LoadNext, <span class="string">'Enable'</span>,<span class="string">'on'</span>);
  1073. 1020 set(handles.LoadFile, <span class="string">'Enable'</span>,<span class="string">'on'</span>);
  1074. 1021
  1075. 1022 <span class="keyword">end</span>
  1076. 1023
  1077. 1024 guidata(hObject,handles);
  1078. 1025
  1079. 1026 <a name="_sub53" href="#_subfunctions" class="code">function Precompute_CreateFcn(hObject, eventdata, handles)</a>
  1080. 1027
  1081. 1028 <a name="_sub54" href="#_subfunctions" class="code">function Path_Callback(hObject, eventdata, handles)</a>
  1082. 1029 path=get(hObject,<span class="string">'String'</span>)
  1083. 1030
  1084. 1031
  1085. 1032 <a name="_sub55" href="#_subfunctions" class="code">function Path_CreateFcn(hObject, eventdata, handles)</a>
  1086. 1033 set(hObject,<span class="string">'String'</span>,pwd);
  1087. 1034 <span class="keyword">if</span> ispc
  1088. 1035 set(hObject,<span class="string">'BackgroundColor'</span>,<span class="string">'white'</span>);
  1089. 1036 <span class="keyword">else</span>
  1090. 1037 set(hObject,<span class="string">'BackgroundColor'</span>,get(0,<span class="string">'defaultUicontrolBackgroundColor'</span>));
  1091. 1038 <span class="keyword">end</span>
  1092. 1039
  1093. 1040 <a name="_sub56" href="#_subfunctions" class="code">function Extensions_Callback(hObject, eventdata, handles)</a>
  1094. 1041
  1095. 1042 <a name="_sub57" href="#_subfunctions" class="code">function Extensions_CreateFcn(hObject, eventdata, handles)</a>
  1096. 1043 set(hObject,<span class="string">'String'</span>,<span class="string">'wav'</span>);
  1097. 1044 <span class="keyword">if</span> ispc
  1098. 1045 set(hObject,<span class="string">'BackgroundColor'</span>,<span class="string">'white'</span>);
  1099. 1046 <span class="keyword">else</span>
  1100. 1047 set(hObject,<span class="string">'BackgroundColor'</span>,get(0,<span class="string">'defaultUicontrolBackgroundColor'</span>));
  1101. 1048 <span class="keyword">end</span>
  1102. 1049
  1103. 1050 <a name="_sub58" href="#_subfunctions" class="code">function Duration_CreateFcn(hObject, eventdata, handles)</a>
  1104. 1051 <span class="keyword">if</span> ispc
  1105. 1052 set(hObject,<span class="string">'BackgroundColor'</span>,<span class="string">'white'</span>);
  1106. 1053 <span class="keyword">else</span>
  1107. 1054 set(hObject,<span class="string">'BackgroundColor'</span>,get(0,<span class="string">'defaultUicontrolBackgroundColor'</span>));
  1108. 1055 <span class="keyword">end</span>
  1109. 1056
  1110. 1057 <a name="_sub59" href="#_subfunctions" class="code">function LoadSegments_Callback(hObject, eventdata, handles)</a>
  1111. 1058
  1112. 1059 handles = <a href="#_sub60" class="code" title="subfunction handles=load_segment(handles,filename)">load_segment</a>(handles, [handles.filename <span class="string">'.seg.txt'</span>] );
  1113. 1060 set( handles.LoadSegments, <span class="string">'Enable'</span>, <span class="string">'off'</span> );
  1114. 1061 handles = <a href="#_sub42" class="code" title="subfunction handles = draw_segments( handles )">draw_segments</a>( handles );
  1115. 1062 guidata(gcbo,handles);
  1116. 1063
  1117. 1064 <a name="_sub60" href="#_subfunctions" class="code">function handles=load_segment(handles,filename)</a>
  1118. 1065 fid=fopen( filename, <span class="string">'r'</span> );
  1119. 1066 segments = [];
  1120. 1067 scanned=fscanf( fid, <span class="string">'%g %g'</span>,[2 inf] );
  1121. 1068 n = 1;
  1122. 1069
  1123. 1070 <span class="keyword">while</span> n &lt;= size(scanned, 2)
  1124. 1071 segment.start = scanned(1,n);
  1125. 1072 segment.end = scanned(2,n);
  1126. 1073 segment.lines = [];
  1127. 1074 segments = [ segments segment ];
  1128. 1075 n = n + 1;
  1129. 1076 <span class="keyword">end</span>
  1130. 1077
  1131. 1078 handles.allsegments = segments; <span class="comment">% all segments holds all segments for the file</span>
  1132. 1079 handles.segments = <a href="#_sub61" class="code" title="subfunction filteredsegments = filtersegments(handles,segments)">filtersegments</a>(handles,handles.allsegments); <span class="comment">% get segments for the current chunk</span>
  1133. 1080 handles.loadedsegment = 1; <span class="comment">% indicates segments have been filtered</span>
  1134. 1081
  1135. 1082 guidata(gcf,handles);
  1136. 1083
  1137. 1084
  1138. 1085 <a name="_sub61" href="#_subfunctions" class="code">function filteredsegments = filtersegments(handles,segments)</a>
  1139. 1086 <span class="comment">% Returns segments which are in the current defined view. Returns segments</span>
  1140. 1087 <span class="comment">% which are not cut off.</span>
  1141. 1088
  1142. 1089 realstart = handles.markerstart / handles.Fs;
  1143. 1090 realend = handles.markerend / handles.Fs;
  1144. 1091
  1145. 1092 filteredsegments = [];
  1146. 1093
  1147. 1094 <span class="keyword">for</span> i = 1:length(segments) <span class="comment">% no garuantee segments are in the same order</span>
  1148. 1095 <span class="keyword">if</span> (segments(i).start &gt;= realstart) &amp;&amp; (segments(i).end &lt;= realend)
  1149. 1096 filteredsegments = [filteredsegments segments(i)];
  1150. 1097 <span class="keyword">end</span>
  1151. 1098 <span class="keyword">end</span>
  1152. 1099
  1153. 1100 <span class="keyword">for</span> i=1:length(filteredsegments)
  1154. 1101 filteredsegments(i).start = filteredsegments(i).start - realstart;
  1155. 1102 filteredsegments(i).end = filteredsegments(i).end - realstart;
  1156. 1103 <span class="keyword">end</span>
  1157. 1104
  1158. 1105 <a name="_sub62" href="#_subfunctions" class="code">function ExcludeExt_Callback(hObject, eventdata, handles)</a>
  1159. 1106
  1160. 1107 <span class="comment">% Hints: get(hObject,'String') returns contents of ExcludeExt as text</span>
  1161. 1108 <span class="comment">% str2double(get(hObject,'String')) returns contents of ExcludeExt as a double</span>
  1162. 1109
  1163. 1110 <a name="_sub63" href="#_subfunctions" class="code">function ExcludeExt_CreateFcn(hObject, eventdata, handles)</a>
  1164. 1111
  1165. 1112 <span class="keyword">if</span> ispc
  1166. 1113 set(hObject,<span class="string">'BackgroundColor'</span>,<span class="string">'white'</span>);
  1167. 1114 <span class="keyword">else</span>
  1168. 1115 set(hObject,<span class="string">'BackgroundColor'</span>,get(0,<span class="string">'defaultUicontrolBackgroundColor'</span>));
  1169. 1116 <span class="keyword">end</span>
  1170. 1117
  1171. 1118
  1172. 1119 <a name="_sub64" href="#_subfunctions" class="code">function DeleteSegment_Callback(hObject, eventdata, handles)</a>
  1173. 1120
  1174. 1121
  1175. 1122 pos=get(handles.segmentLineP,<span class="string">'Xdata'</span>);
  1176. 1123 n = 1;
  1177. 1124 <span class="keyword">while</span> n &lt;= length( handles.segments )
  1178. 1125 <span class="keyword">if</span> pos(1) &gt;= handles.segments(n).start &amp;&amp; pos(1) &lt;= handles.segments(n).end
  1179. 1126 handles=<a href="#_sub65" class="code" title="subfunction handles=delete_segment( handles, n )">delete_segment</a>( handles, n );
  1180. 1127 <span class="keyword">else</span>
  1181. 1128 n = n + 1;
  1182. 1129 <span class="keyword">end</span>
  1183. 1130 <span class="keyword">end</span>
  1184. 1131 drawnow;
  1185. 1132 guidata(gcbo,handles);
  1186. 1133
  1187. 1134 <a name="_sub65" href="#_subfunctions" class="code">function handles=delete_segment( handles, n )</a>
  1188. 1135 nl = 1;
  1189. 1136 <span class="keyword">while</span> nl &lt;= length( handles.segments(n).lines )
  1190. 1137 set( handles.segments(n).lines(nl), <span class="string">'Visible'</span>, <span class="string">'off'</span>);
  1191. 1138 nl = nl + 1;
  1192. 1139 <span class="keyword">end</span>
  1193. 1140 handles.segments(n) = [];
  1194. 1141 fprintf(<span class="string">'deleted!\n'</span>);
  1195. 1142
  1196. 1143 <a name="_sub66" href="#_subfunctions" class="code">function SaveSegments_Callback(hObject, eventdata, handles)</a>
  1197. 1144
  1198. 1145 <span class="comment">% For the currently defined segments append to the segment list</span>
  1199. 1146
  1200. 1147 handles = <a href="#_sub67" class="code" title="subfunction handles=savesegments2mem(handles)">savesegments2mem</a>(handles);
  1201. 1148
  1202. 1149 segment_file = fopen( [handles.filename <span class="string">'.seg.txt'</span>], <span class="string">'wt'</span> );
  1203. 1150 n = 1;
  1204. 1151 <span class="keyword">while</span> n &lt;= size(handles.allsegments, 2)
  1205. 1152 fprintf( segment_file, <span class="string">'%f %f\n'</span>, handles.allsegments(n).start, handles.allsegments(n).end );
  1206. 1153 n = n + 1;
  1207. 1154 <span class="keyword">end</span>
  1208. 1155 fclose(segment_file);
  1209. 1156 set( handles.SegmentButton, <span class="string">'Enable'</span>, <span class="string">'on'</span> );
  1210. 1157 guidata(gcbo,handles);
  1211. 1158
  1212. 1159 <a name="_sub67" href="#_subfunctions" class="code">function handles=savesegments2mem(handles)</a>
  1213. 1160 <span class="comment">% Updates the handles allsegments in memory</span>
  1214. 1161
  1215. 1162 <span class="comment">% first remove in all segments all segments which are in the current chunk</span>
  1216. 1163
  1217. 1164 oldsegments = [];
  1218. 1165
  1219. 1166 realstart = handles.markerstart / handles.Fs; <span class="comment">% readjust time</span>
  1220. 1167 realend = handles.markerend / handles.Fs; <span class="comment">% readjust time</span>
  1221. 1168
  1222. 1169 <span class="keyword">for</span> i = 1:length(handles.allsegments)
  1223. 1170 <span class="keyword">if</span> not((handles.allsegments(i).start) &gt;= realstart &amp;&amp; (handles.allsegments(i).end &lt;= realend))
  1224. 1171 oldsegments = [oldsegments handles.allsegments(i)];
  1225. 1172 <span class="keyword">end</span>
  1226. 1173 <span class="keyword">end</span>
  1227. 1174
  1228. 1175 <span class="comment">% now put in the new segments</span>
  1229. 1176
  1230. 1177 newsegments = [];
  1231. 1178
  1232. 1179 <span class="keyword">for</span> i = 1:length(handles.segments)
  1233. 1180 segment = handles.segments(i);
  1234. 1181 segment.start = segment.start + realstart;
  1235. 1182 segment.end = segment.end + realstart;
  1236. 1183 newsegments = [newsegments segment];
  1237. 1184 <span class="keyword">end</span>
  1238. 1185
  1239. 1186 handles.allsegments = [oldsegments newsegments];
  1240. 1187
  1241. 1188 <a name="_sub68" href="#_subfunctions" class="code">function SegCancel_Callback(hObject, eventdata, handles)</a>
  1242. 1189 set( handles.SegmentButton, <span class="string">'Enable'</span>, <span class="string">'on'</span> );
  1243. 1190 guidata(gcbo,handles);
  1244. 1191
  1245. 1192
  1246. 1193 <a name="_sub69" href="#_subfunctions" class="code">function PlotSegments_Callback(hObject, eventdata, handles)</a>
  1247. 1194
  1248. 1195 <span class="comment">% Load Segments in directory</span>
  1249. 1196
  1250. 1197 [path] = cell2mat(regexp( handles.filename, <span class="string">'^.*\'</span>, <span class="string">'match'</span> ));
  1251. 1198 [extension] = cell2mat(regexp( handles.filename, <span class="string">'\w+$'</span>, <span class="string">'match'</span> ));
  1252. 1199
  1253. 1200 path=get(handles.Path,<span class="string">'String'</span>);
  1254. 1201 extension=get(handles.Extensions,<span class="string">'String'</span>);
  1255. 1202 dirlist = dir( [path <span class="string">'\*'</span> extension <span class="string">'.seg.txt'</span>] );
  1256. 1203 ndir = length(dirlist);
  1257. 1204 n = 1;
  1258. 1205 all_segments = [];
  1259. 1206 <span class="keyword">while</span> n &lt;= ndir
  1260. 1207 file = dirlist(n).name;
  1261. 1208 segments = <a href="#_sub60" class="code" title="subfunction handles=load_segment(handles,filename)">load_segment</a>([path <span class="string">'\'</span> file]);
  1262. 1209 all_segments = [all_segments segments];
  1263. 1210 n = n + 1;
  1264. 1211 <span class="keyword">end</span>
  1265. 1212
  1266. 1213 <span class="comment">% Plot info</span>
  1267. 1214 <span class="keyword">if</span> length(all_segments) &gt; 2
  1268. 1215
  1269. 1216 figure();
  1270. 1217 axes();
  1271. 1218 nbin= max(length([all_segments.end])/5,10);
  1272. 1219 syllable_lengths=[all_segments.end]-[all_segments.start];
  1273. 1220 hi=hist( syllable_lengths ,nbin);
  1274. 1221 tl=min( syllable_lengths );
  1275. 1222 th=max( syllable_lengths );
  1276. 1223 times=tl:((th-tl)/(nbin-1)):th;
  1277. 1224 plot(times,hi);
  1278. 1225 xlabel(<span class="string">'Segment Length (s)'</span>);
  1279. 1226 ylabel(<span class="string">'N'</span>);
  1280. 1227 title([<span class="string">'All segments in '</span> path]);
  1281. 1228 <span class="keyword">else</span>
  1282. 1229 error(<span class="string">'too few segments to plot'</span>);
  1283. 1230 <span class="keyword">end</span>
  1284. 1231 guidata(gcbo,handles);
  1285. 1232
  1286. 1233
  1287. 1234
  1288. 1235 <a name="_sub70" href="#_subfunctions" class="code">function AutoSegButton_Callback(hObject, eventdata, handles)</a>
  1289. 1236
  1290. 1237 n = 1;
  1291. 1238 segments = [];
  1292. 1239 segment.start = 0;
  1293. 1240 segment.end = 0;
  1294. 1241 segment.lines = [];
  1295. 1242 minlen = eval(get( handles.SegmentLengthEdit, <span class="string">'String'</span> ));
  1296. 1243 <span class="keyword">while</span> n &lt; length( handles.times )
  1297. 1244
  1298. 1245 <span class="keyword">if</span> ( handles.transition(n) &gt; 0 )
  1299. 1246 segment.start = handles.times(n);
  1300. 1247 <span class="keyword">end</span>
  1301. 1248 <span class="keyword">if</span> ( handles.transition(n) &lt; 0 )
  1302. 1249 segment.end = handles.times(n);
  1303. 1250 <span class="keyword">end</span>
  1304. 1251 <span class="keyword">if</span> (segment.start &gt; 0) &amp;&amp; (segment.end) &gt; 0 &amp;&amp; (segment.end - segment.start) &gt; minlen
  1305. 1252 segments = [ segments segment ];
  1306. 1253 segment.start = 0;
  1307. 1254 segment.end = 0;
  1308. 1255 <span class="keyword">end</span>
  1309. 1256 n = n + 1;
  1310. 1257 <span class="keyword">end</span>
  1311. 1258
  1312. 1259 handles.segments = [handles.segments segments];
  1313. 1260 handles = <a href="#_sub42" class="code" title="subfunction handles = draw_segments( handles )">draw_segments</a>( handles );
  1314. 1261 guidata(gcbo,handles);
  1315. 1262
  1316. 1263 <a name="_sub71" href="#_subfunctions" class="code">function DeleteAllButton_Callback(hObject, eventdata, handles)</a>
  1317. 1264
  1318. 1265 <span class="keyword">while</span> length( handles.segments )
  1319. 1266 handles = <a href="#_sub65" class="code" title="subfunction handles=delete_segment( handles, n )">delete_segment</a>( handles, 1 );
  1320. 1267 <span class="keyword">end</span>
  1321. 1268 guidata(gcf,handles);
  1322. 1269
  1323. 1270
  1324. 1271 <span class="comment">% --- Executes on button press in PlotAllButton.</span>
  1325. 1272 <a name="_sub72" href="#_subfunctions" class="code">function PlotAllButton_Callback(hObject, eventdata, handles)</a>
  1326. 1273 <span class="comment">% hObject handle to PlotAllButton (see GCBO)</span>
  1327. 1274 <span class="comment">% eventdata reserved - to be defined in a future version of MATLAB</span>
  1328. 1275 <span class="comment">% handles structure with handles and user data (see GUIDATA)</span>
  1329. 1276
  1330. 1277 set(handles.slider1,<span class="string">'Value'</span>,0);
  1331. 1278
  1332. 1279 strDuration = get(handles.Duration,<span class="string">'String'</span>);
  1333. 1280
  1334. 1281 <span class="keyword">if</span> str2num(strDuration) &gt; handles.maxspec_t
  1335. 1282 strDuration = num2str(handles.maxspec_t);
  1336. 1283 <span class="keyword">end</span>
  1337. 1284
  1338. 1285
  1339. 1286 set(handles.DisplayWindow,<span class="string">'String'</span>,strDuration);
  1340. 1287 <a href="#_sub25" class="code" title="subfunction Plot_Callback(hObject, eventdata, handles)">Plot_Callback</a>(hObject, eventdata, handles);
  1341. 1288
  1342. 1289
  1343. 1290 <span class="comment">% --- Executes on button press in PreviousChunk.</span>
  1344. 1291 <a name="_sub73" href="#_subfunctions" class="code">function PreviousChunk_Callback(hObject, eventdata, handles)</a>
  1345. 1292 <span class="comment">% hObject handle to PreviousChunk (see GCBO)</span>
  1346. 1293 <span class="comment">% eventdata reserved - to be defined in a future version of MATLAB</span>
  1347. 1294 <span class="comment">% handles structure with handles and user data (see GUIDATA)</span>
  1348. 1295
  1349. 1296 <span class="comment">% [handles.markerstart handles.markerend]</span>
  1350. 1297 handles = <a href="#_sub67" class="code" title="subfunction handles=savesegments2mem(handles)">savesegments2mem</a>(handles);
  1351. 1298 handles = <a href="#_sub7" class="code" title="subfunction handles = loadfile(hObject, eventdata, handles, varargin)">loadfile</a>(hObject, eventdata, handles,[handles.markerstart-handles.maxwavsize-1,handles.markerstart-1]);
  1352. 1299 <span class="comment">% [handles.markerstart handles.markerend]</span>
  1353. 1300 ;
  1354. 1301 guidata(gcf,handles);
  1355. 1302
  1356. 1303 <span class="comment">% --- Executes on button press in NextChunk.</span>
  1357. 1304 <a name="_sub74" href="#_subfunctions" class="code">function NextChunk_Callback(hObject, eventdata, handles)</a>
  1358. 1305 <span class="comment">% hObject handle to NextChunk (see GCBO)</span>
  1359. 1306 <span class="comment">% eventdata reserved - to be defined in a future version of MATLAB</span>
  1360. 1307 <span class="comment">% handles structure with handles and user data (see GUIDATA)</span>
  1361. 1308
  1362. 1309 handles = <a href="#_sub67" class="code" title="subfunction handles=savesegments2mem(handles)">savesegments2mem</a>(handles);
  1363. 1310 handles = <a href="#_sub7" class="code" title="subfunction handles = loadfile(hObject, eventdata, handles, varargin)">loadfile</a>(hObject, eventdata, handles, [handles.markerend+1,handles.markerend+1+handles.maxwavsize]);
  1364. 1311 guidata(gcf,handles);
  1365. 1312
  1366. 1313 <span class="comment">% --- Executes on button press in AutoSegmentFile.</span>
  1367. 1314 <a name="_sub75" href="#_subfunctions" class="code">function AutoSegmentFile_Callback(hObject, eventdata, handles)</a>
  1368. 1315 <span class="comment">% hObject handle to AutoSegmentFile (see GCBO)</span>
  1369. 1316 <span class="comment">% eventdata reserved - to be defined in a future version of MATLAB</span>
  1370. 1317 <span class="comment">% handles structure with handles and user data (see GUIDATA)</span>
  1371. 1318
  1372. 1319 <span class="keyword">while</span> (handles.markerend &lt; handles.wavsize)
  1373. 1320
  1374. 1321 <a href="#_sub72" class="code" title="subfunction PlotAllButton_Callback(hObject, eventdata, handles)">PlotAllButton_Callback</a>(hObject, eventdata, handles);
  1375. 1322 handles = guidata(gcbo);
  1376. 1323 <a href="#_sub70" class="code" title="subfunction AutoSegButton_Callback(hObject, eventdata, handles)">AutoSegButton_Callback</a>(hObject, eventdata, handles);
  1377. 1324 handles = guidata(gcbo);
  1378. 1325 <a href="#_sub74" class="code" title="subfunction NextChunk_Callback(hObject, eventdata, handles)">NextChunk_Callback</a>(hObject, eventdata, handles);
  1379. 1326 handles = guidata(gcbo);
  1380. 1327
  1381. 1328 <span class="keyword">end</span>
  1382. 1329
  1383. 1330
  1384. 1331 <a href="#_sub72" class="code" title="subfunction PlotAllButton_Callback(hObject, eventdata, handles)">PlotAllButton_Callback</a>(hObject, eventdata, handles);
  1385. 1332 handles = guidata(gcbo);
  1386. 1333 <a href="#_sub70" class="code" title="subfunction AutoSegButton_Callback(hObject, eventdata, handles)">AutoSegButton_Callback</a>(hObject, eventdata, handles);
  1387. 1334 handles = guidata(gcbo);
  1388. 1335 guidata(gcbo,handles);
  1389. 1336
  1390. 1337
  1391. 1338 <a name="_sub76" href="#_subfunctions" class="code">function MaxSegLength_Callback(hObject, eventdata, handles)</a>
  1392. 1339 <span class="comment">% hObject handle to MaxSegLength (see GCBO)</span>
  1393. 1340 <span class="comment">% eventdata reserved - to be defined in a future version of MATLAB</span>
  1394. 1341 <span class="comment">% handles structure with handles and user data (see GUIDATA)</span>
  1395. 1342
  1396. 1343 <span class="comment">% Hints: get(hObject,'String') returns contents of MaxSegLength as text</span>
  1397. 1344 <span class="comment">% str2double(get(hObject,'String')) returns contents of MaxSegLength as a double</span>
  1398. 1345
  1399. 1346
  1400. 1347 <span class="comment">% --- Executes during object creation, after setting all properties.</span>
  1401. 1348 <a name="_sub77" href="#_subfunctions" class="code">function MaxSegLength_CreateFcn(hObject, eventdata, handles)</a>
  1402. 1349 <span class="comment">% hObject handle to MaxSegLength (see GCBO)</span>
  1403. 1350 <span class="comment">% eventdata reserved - to be defined in a future version of MATLAB</span>
  1404. 1351 <span class="comment">% handles empty - handles not created until after all CreateFcns called</span>
  1405. 1352
  1406. 1353 <span class="comment">% Hint: edit controls usually have a white background on Windows.</span>
  1407. 1354 <span class="comment">% See ISPC and COMPUTER.</span>
  1408. 1355 <span class="keyword">if</span> ispc
  1409. 1356 set(hObject,<span class="string">'BackgroundColor'</span>,<span class="string">'white'</span>);
  1410. 1357 <span class="keyword">else</span>
  1411. 1358 set(hObject,<span class="string">'BackgroundColor'</span>,get(0,<span class="string">'defaultUicontrolBackgroundColor'</span>));
  1412. 1359 <span class="keyword">end</span>
  1413. 1360
  1414. 1361 <a name="_sub78" href="#_subfunctions" class="code">function MaximumWavSize_Callback(hObject, eventdata, handles)</a>
  1415. 1362 <span class="comment">% hObject handle to MaximumWavSize (see GCBO)</span>
  1416. 1363 <span class="comment">% eventdata reserved - to be defined in a future version of MATLAB</span>
  1417. 1364 <span class="comment">% handles structure with handles and user data (see GUIDATA)</span>
  1418. 1365
  1419. 1366 <span class="comment">% Hints: get(hObject,'String') returns contents of MaximumWavSize as text</span>
  1420. 1367 <span class="comment">% str2double(get(hObject,'String')) returns contents of MaximumWavSize as a double</span>
  1421. 1368
  1422. 1369
  1423. 1370 <span class="comment">% --- Executes during object creation, after setting all properties.</span>
  1424. 1371 <a name="_sub79" href="#_subfunctions" class="code">function MaximumWavSize_CreateFcn(hObject, eventdata, handles)</a>
  1425. 1372 <span class="comment">% hObject handle to MaximumWavSize (see GCBO)</span>
  1426. 1373 <span class="comment">% eventdata reserved - to be defined in a future version of MATLAB</span>
  1427. 1374 <span class="comment">% handles empty - handles not created until after all CreateFcns called</span>
  1428. 1375
  1429. 1376 <span class="comment">% Hint: edit controls usually have a white background on Windows.</span>
  1430. 1377 <span class="comment">% See ISPC and COMPUTER.</span>
  1431. 1378 <span class="keyword">if</span> ispc
  1432. 1379 set(hObject,<span class="string">'BackgroundColor'</span>,<span class="string">'white'</span>);
  1433. 1380 <span class="keyword">else</span>
  1434. 1381 set(hObject,<span class="string">'BackgroundColor'</span>,get(0,<span class="string">'defaultUicontrolBackgroundColor'</span>));
  1435. 1382 <span class="keyword">end</span>
  1436. 1383
  1437. 1384 <span class="comment">% --- Executes on button press in SeekButton.</span>
  1438. 1385 <a name="_sub80" href="#_subfunctions" class="code">function SeekButton_Callback(hObject, eventdata, handles)</a>
  1439. 1386 <span class="comment">% hObject handle to SeekButton (see GCBO)</span>
  1440. 1387 <span class="comment">% eventdata reserved - to be defined in a future version of MATLAB</span>
  1441. 1388 <span class="comment">% handles structure with handles and user data (see GUIDATA)</span>
  1442. 1389
  1443. 1390 <span class="comment">% Seek anywhere in a long file</span>
  1444. 1391
  1445. 1392 handles = <a href="#_sub67" class="code" title="subfunction handles=savesegments2mem(handles)">savesegments2mem</a>(handles);
  1446. 1393
  1447. 1394 <span class="keyword">try</span>
  1448. 1395 timetoseek = str2num(get(handles.SeektoEdit,<span class="string">'String'</span>));
  1449. 1396 <span class="keyword">catch</span>
  1450. 1397 timetoseek = 0;
  1451. 1398 set(handles.SeektoEdit,<span class="string">'String'</span>,<span class="string">'0'</span>);
  1452. 1399 <span class="keyword">end</span>
  1453. 1400
  1454. 1401 <span class="keyword">if</span> timetoseek &lt; 0
  1455. 1402 timetoseek = 0;
  1456. 1403 set(handles.SeektoEdit,<span class="string">'String'</span>,<span class="string">'0'</span>);
  1457. 1404 <span class="keyword">end</span>
  1458. 1405
  1459. 1406 timetoseek = round(timetoseek * handles.Fs);
  1460. 1407
  1461. 1408 <span class="keyword">if</span> timetoseek &gt;= handles.wavsize
  1462. 1409 timetoseek = timetoseek - handles.maxwavsize;
  1463. 1410 <span class="keyword">end</span>
  1464. 1411
  1465. 1412 timetoseek = timetoseek + 1;
  1466. 1413 timetoseekend = timetoseek + handles.maxwavsize;
  1467. 1414
  1468. 1415 <span class="keyword">if</span> timetoseekend &gt; handles.wavsize
  1469. 1416 timetoseekend = handles.wavsize;
  1470. 1417 <span class="keyword">end</span>
  1471. 1418
  1472. 1419 oldstate = handles.dontcutsegments;
  1473. 1420 handles.dontcutsegments = 0;
  1474. 1421 handles = <a href="#_sub7" class="code" title="subfunction handles = loadfile(hObject, eventdata, handles, varargin)">loadfile</a>(hObject,eventdata,handles,[timetoseek timetoseekend]);
  1475. 1422 handles.dontcutsegments = oldstate;
  1476. 1423
  1477. 1424 guidata(gcbo,handles);
  1478. 1425
  1479. 1426 <a name="_sub81" href="#_subfunctions" class="code">function SeektoEdit_Callback(hObject, eventdata, handles)</a>
  1480. 1427 <span class="comment">% hObject handle to SeektoEdit (see GCBO)</span>
  1481. 1428 <span class="comment">% eventdata reserved - to be defined in a future version of MATLAB</span>
  1482. 1429 <span class="comment">% handles structure with handles and user data (see GUIDATA)</span>
  1483. 1430
  1484. 1431 <span class="comment">% Hints: get(hObject,'String') returns contents of SeektoEdit as text</span>
  1485. 1432 <span class="comment">% str2double(get(hObject,'String')) returns contents of SeektoEdit as a double</span>
  1486. 1433
  1487. 1434
  1488. 1435 <span class="comment">% --- Executes during object creation, after setting all properties.</span>
  1489. 1436 <a name="_sub82" href="#_subfunctions" class="code">function SeektoEdit_CreateFcn(hObject, eventdata, handles)</a>
  1490. 1437 <span class="comment">% hObject handle to SeektoEdit (see GCBO)</span>
  1491. 1438 <span class="comment">% eventdata reserved - to be defined in a future version of MATLAB</span>
  1492. 1439 <span class="comment">% handles empty - handles not created until after all CreateFcns called</span>
  1493. 1440
  1494. 1441 <span class="comment">% Hint: edit controls usually have a white background on Windows.</span>
  1495. 1442 <span class="comment">% See ISPC and COMPUTER.</span>
  1496. 1443 <span class="keyword">if</span> ispc
  1497. 1444 set(hObject,<span class="string">'BackgroundColor'</span>,<span class="string">'white'</span>);
  1498. 1445 <span class="keyword">else</span>
  1499. 1446 set(hObject,<span class="string">'BackgroundColor'</span>,get(0,<span class="string">'defaultUicontrolBackgroundColor'</span>));
  1500. 1447 <span class="keyword">end</span>
  1501. 1448
  1502. 1449
  1503. 1450
  1504. 1451
  1505. 1452
  1506. 1453 <a name="_sub83" href="#_subfunctions" class="code">function RealDuration_Callback(hObject, eventdata, handles)</a>
  1507. 1454 <span class="comment">% hObject handle to RealDuration (see GCBO)</span>
  1508. 1455 <span class="comment">% eventdata reserved - to be defined in a future version of MATLAB</span>
  1509. 1456 <span class="comment">% handles structure with handles and user data (see GUIDATA)</span>
  1510. 1457
  1511. 1458 <span class="comment">% Hints: get(hObject,'String') returns contents of RealDuration as text</span>
  1512. 1459 <span class="comment">% str2double(get(hObject,'String')) returns contents of RealDuration as a double</span>
  1513. 1460
  1514. 1461
  1515. 1462 <span class="comment">% --- Executes during object creation, after setting all properties.</span>
  1516. 1463 <a name="_sub84" href="#_subfunctions" class="code">function RealDuration_CreateFcn(hObject, eventdata, handles)</a>
  1517. 1464 <span class="comment">% hObject handle to RealDuration (see GCBO)</span>
  1518. 1465 <span class="comment">% eventdata reserved - to be defined in a future version of MATLAB</span>
  1519. 1466 <span class="comment">% handles empty - handles not created until after all CreateFcns called</span>
  1520. 1467
  1521. 1468 <span class="comment">% Hint: edit controls usually have a white background on Windows.</span>
  1522. 1469 <span class="comment">% See ISPC and COMPUTER.</span>
  1523. 1470 <span class="keyword">if</span> ispc
  1524. 1471 set(hObject,<span class="string">'BackgroundColor'</span>,<span class="string">'white'</span>);
  1525. 1472 <span class="keyword">else</span>
  1526. 1473 set(hObject,<span class="string">'BackgroundColor'</span>,get(0,<span class="string">'defaultUicontrolBackgroundColor'</span>));
  1527. 1474 <span class="keyword">end</span>
  1528. 1475
  1529. 1476
  1530. 1477
  1531. 1478
  1532. 1479 <span class="comment">% --- Executes on selection change in AutoMethodPopupMenu.</span>
  1533. 1480 <a name="_sub85" href="#_subfunctions" class="code">function AutoMethodPopupMenu_Callback(hObject, eventdata, handles)</a>
  1534. 1481 <span class="comment">% hObject handle to AutoMethodPopupMenu (see GCBO)</span>
  1535. 1482 <span class="comment">% eventdata reserved - to be defined in a future version of MATLAB</span>
  1536. 1483 <span class="comment">% handles structure with handles and user data (see GUIDATA)</span>
  1537. 1484
  1538. 1485 <span class="comment">% Hints: contents = get(hObject,'String') returns AutoMethodPopupMenu contents as cell array</span>
  1539. 1486 <span class="comment">% contents{get(hObject,'Value')} returns selected item from AutoMethodPopupMenu</span>
  1540. 1487 contents = get(hObject,<span class="string">'String'</span>);
  1541. 1488 method = contents{get(hObject,<span class="string">'Value'</span>)}
  1542. 1489
  1543. 1490 <span class="keyword">if</span> strcmp(method,<span class="string">'Summed intensity'</span>)
  1544. 1491 handles.automethod = <span class="string">'threshold'</span>;
  1545. 1492 set(handles.AmpThresh,<span class="string">'Visible'</span>,<span class="string">'on'</span>);
  1546. 1493 set(handles.RatioThresh,<span class="string">'Visible'</span>,<span class="string">'off'</span>);
  1547. 1494 <span class="keyword">elseif</span> strcmp(method,<span class="string">'Ratio'</span>)
  1548. 1495 handles.automethod = <span class="string">'ratiof'</span>;
  1549. 1496 set(handles.AmpThresh,<span class="string">'Visible'</span>,<span class="string">'off'</span>);
  1550. 1497 set(handles.RatioThresh,<span class="string">'Visible'</span>,<span class="string">'on'</span>);
  1551. 1498 <span class="keyword">end</span>
  1552. 1499
  1553. 1500 guidata(gcbo,handles);
  1554. 1501
  1555. 1502 <span class="comment">% --- Executes during object creation, after setting all properties.</span>
  1556. 1503 <a name="_sub86" href="#_subfunctions" class="code">function AutoMethodPopupMenu_CreateFcn(hObject, eventdata, handles)</a>
  1557. 1504 <span class="comment">% hObject handle to AutoMethodPopupMenu (see GCBO)</span>
  1558. 1505 <span class="comment">% eventdata reserved - to be defined in a future version of MATLAB</span>
  1559. 1506 <span class="comment">% handles empty - handles not created until after all CreateFcns called</span>
  1560. 1507
  1561. 1508 <span class="comment">% Hint: popupmenu controls usually have a white background on Windows.</span>
  1562. 1509 <span class="comment">% See ISPC and COMPUTER.</span>
  1563. 1510 <span class="keyword">if</span> ispc
  1564. 1511 set(hObject,<span class="string">'BackgroundColor'</span>,<span class="string">'white'</span>);
  1565. 1512 <span class="keyword">else</span>
  1566. 1513 set(hObject,<span class="string">'BackgroundColor'</span>,get(0,<span class="string">'defaultUicontrolBackgroundColor'</span>));
  1567. 1514 <span class="keyword">end</span>
  1568. 1515
  1569. 1516
  1570. 1517
  1571. 1518 <a name="_sub87" href="#_subfunctions" class="code">function RatioThresh_Callback(hObject, eventdata, handles)</a>
  1572. 1519 <span class="comment">% hObject handle to RatioThresh (see GCBO)</span>
  1573. 1520 <span class="comment">% eventdata reserved - to be defined in a future version of MATLAB</span>
  1574. 1521 <span class="comment">% handles structure with handles and user data (see GUIDATA)</span>
  1575. 1522
  1576. 1523 <span class="comment">% Hints: get(hObject,'String') returns contents of RatioThresh as text</span>
  1577. 1524 <span class="comment">% str2double(get(hObject,'String')) returns contents of RatioThresh as a double</span>
  1578. 1525
  1579. 1526
  1580. 1527 <span class="comment">% --- Executes during object creation, after setting all properties.</span>
  1581. 1528 <a name="_sub88" href="#_subfunctions" class="code">function RatioThresh_CreateFcn(hObject, eventdata, handles)</a>
  1582. 1529 <span class="comment">% hObject handle to RatioThresh (see GCBO)</span>
  1583. 1530 <span class="comment">% eventdata reserved - to be defined in a future version of MATLAB</span>
  1584. 1531 <span class="comment">% handles empty - handles not created until after all CreateFcns called</span>
  1585. 1532
  1586. 1533 <span class="comment">% Hint: edit controls usually have a white background on Windows.</span>
  1587. 1534 <span class="comment">% See ISPC and COMPUTER.</span>
  1588. 1535 <span class="keyword">if</span> ispc
  1589. 1536 set(hObject,<span class="string">'BackgroundColor'</span>,<span class="string">'white'</span>);
  1590. 1537 <span class="keyword">else</span>
  1591. 1538 set(hObject,<span class="string">'BackgroundColor'</span>,get(0,<span class="string">'defaultUicontrolBackgroundColor'</span>));
  1592. 1539 <span class="keyword">end</span>
  1593. 1540
  1594. 1541
  1595. 1542
  1596. 1543 <a name="_sub89" href="#_subfunctions" class="code">function RatioLower_Callback(hObject, eventdata, handles)</a>
  1597. 1544 <span class="comment">% hObject handle to RatioLower (see GCBO)</span>
  1598. 1545 <span class="comment">% eventdata reserved - to be defined in a future version of MATLAB</span>
  1599. 1546 <span class="comment">% handles structure with handles and user data (see GUIDATA)</span>
  1600. 1547
  1601. 1548 <span class="comment">% Hints: get(hObject,'String') returns contents of RatioLower as text</span>
  1602. 1549 <span class="comment">% str2double(get(hObject,'String')) returns contents of RatioLower as a double</span>
  1603. 1550
  1604. 1551
  1605. 1552 <span class="comment">% --- Executes during object creation, after setting all properties.</span>
  1606. 1553 <a name="_sub90" href="#_subfunctions" class="code">function RatioLower_CreateFcn(hObject, eventdata, handles)</a>
  1607. 1554 <span class="comment">% hObject handle to RatioLower (see GCBO)</span>
  1608. 1555 <span class="comment">% eventdata reserved - to be defined in a future version of MATLAB</span>
  1609. 1556 <span class="comment">% handles empty - handles not created until after all CreateFcns called</span>
  1610. 1557
  1611. 1558 <span class="comment">% Hint: edit controls usually have a white background on Windows.</span>
  1612. 1559 <span class="comment">% See ISPC and COMPUTER.</span>
  1613. 1560 <span class="keyword">if</span> ispc
  1614. 1561 set(hObject,<span class="string">'BackgroundColor'</span>,<span class="string">'white'</span>);
  1615. 1562 <span class="keyword">else</span>
  1616. 1563 set(hObject,<span class="string">'BackgroundColor'</span>,get(0,<span class="string">'defaultUicontrolBackgroundColor'</span>));
  1617. 1564 <span class="keyword">end</span>
  1618. 1565
  1619. 1566
  1620. 1567
  1621. 1568 <a name="_sub91" href="#_subfunctions" class="code">function RatioUpper_Callback(hObject, eventdata, handles)</a>
  1622. 1569 <span class="comment">% hObject handle to RatioUpper (see GCBO)</span>
  1623. 1570 <span class="comment">% eventdata reserved - to be defined in a future version of MATLAB</span>
  1624. 1571 <span class="comment">% handles structure with handles and user data (see GUIDATA)</span>
  1625. 1572
  1626. 1573 <span class="comment">% Hints: get(hObject,'String') returns contents of RatioUpper as text</span>
  1627. 1574 <span class="comment">% str2double(get(hObject,'String')) returns contents of RatioUpper as a double</span>
  1628. 1575
  1629. 1576
  1630. 1577 <span class="comment">% --- Executes during object creation, after setting all properties.</span>
  1631. 1578 <a name="_sub92" href="#_subfunctions" class="code">function RatioUpper_CreateFcn(hObject, eventdata, handles)</a>
  1632. 1579 <span class="comment">% hObject handle to RatioUpper (see GCBO)</span>
  1633. 1580 <span class="comment">% eventdata reserved - to be defined in a future version of MATLAB</span>
  1634. 1581 <span class="comment">% handles empty - handles not created until after all CreateFcns called</span>
  1635. 1582
  1636. 1583 <span class="comment">% Hint: edit controls usually have a white background on Windows.</span>
  1637. 1584 <span class="comment">% See ISPC and COMPUTER.</span>
  1638. 1585 <span class="keyword">if</span> ispc
  1639. 1586 set(hObject,<span class="string">'BackgroundColor'</span>,<span class="string">'white'</span>);
  1640. 1587 <span class="keyword">else</span>
  1641. 1588 set(hObject,<span class="string">'BackgroundColor'</span>,get(0,<span class="string">'defaultUicontrolBackgroundColor'</span>));
  1642. 1589 <span class="keyword">end</span>
  1643. 1590
  1644. 1591
  1645. 1592 <span class="comment">% --- Executes on button press in OptionsDisplay.</span>
  1646. 1593 <a name="_sub93" href="#_subfunctions" class="code">function OptionsDisplay_Callback(hObject, eventdata, handles)</a>
  1647. 1594 <span class="comment">% hObject handle to OptionsDisplay (see GCBO)</span>
  1648. 1595 <span class="comment">% eventdata reserved - to be defined in a future version of MATLAB</span>
  1649. 1596 <span class="comment">% handles structure with handles and user data (see GUIDATA)</span>
  1650. 1597
  1651. 1598 <span class="comment">% Hint: get(hObject,'Value') returns toggle state of OptionsDisplay</span>
  1652. 1599
  1653. 1600 <span class="comment">% positionP = get(handles.OptionsUiPanel,'Position');</span>
  1654. 1601 <span class="comment">% positionF = get(gcf,'Position');</span>
  1655. 1602
  1656. 1603 state = get(hObject,<span class="string">'Value'</span>);
  1657. 1604
  1658. 1605 <span class="keyword">if</span> state
  1659. 1606 set(handles.OptionsUiPanel,<span class="string">'Visible'</span>,<span class="string">'on'</span>);
  1660. 1607 <span class="comment">% positionF(3) = positionF(3) + positionP(3);</span>
  1661. 1608 <span class="keyword">else</span>
  1662. 1609 set(handles.OptionsUiPanel,<span class="string">'Visible'</span>,<span class="string">'off'</span>);
  1663. 1610 <span class="comment">% positionF(3) = positionF(3) - positionP(3);</span>
  1664. 1611 <span class="keyword">end</span>
  1665. 1612
  1666. 1613 <span class="comment">% set(gcf,'Position',positionF); % untested</span>
  1667. 1614
  1668. 1615 guidata(gcbo,handles)
  1669. 1616
  1670. 1617
  1671. 1618
  1672. 1619 <a name="_sub94" href="#_subfunctions" class="code">function Duration_Callback(hObject, eventdata, handles)</a>
  1673. 1620 <span class="comment">% hObject handle to Duration (see GCBO)</span>
  1674. 1621 <span class="comment">% eventdata reserved - to be defined in a future version of MATLAB</span>
  1675. 1622 <span class="comment">% handles structure with handles and user data (see GUIDATA)</span>
  1676. 1623
  1677. 1624 <span class="comment">% Hints: get(hObject,'String') returns contents of Duration as text</span>
  1678. 1625 <span class="comment">% str2double(get(hObject,'String')) returns contents of Duration as a double</span>
  1679. 1626
  1680. 1627
  1681. 1628
  1682. 1629
  1683. 1630
  1684. 1631 <a name="_sub95" href="#_subfunctions" class="code">function SmoothFactor_Callback(hObject, eventdata, handles)</a>
  1685. 1632 <span class="comment">% hObject handle to SmoothFactor (see GCBO)</span>
  1686. 1633 <span class="comment">% eventdata reserved - to be defined in a future version of MATLAB</span>
  1687. 1634 <span class="comment">% handles structure with handles and user data (see GUIDATA)</span>
  1688. 1635
  1689. 1636 <span class="comment">% Hints: get(hObject,'String') returns contents of SmoothFactor as text</span>
  1690. 1637 <span class="comment">% str2double(get(hObject,'String')) returns contents of SmoothFactor as a double</span>
  1691. 1638
  1692. 1639
  1693. 1640 <span class="comment">% --- Executes during object creation, after setting all properties.</span>
  1694. 1641 <a name="_sub96" href="#_subfunctions" class="code">function SmoothFactor_CreateFcn(hObject, eventdata, handles)</a>
  1695. 1642 <span class="comment">% hObject handle to SmoothFactor (see GCBO)</span>
  1696. 1643 <span class="comment">% eventdata reserved - to be defined in a future version of MATLAB</span>
  1697. 1644 <span class="comment">% handles empty - handles not created until after all CreateFcns called</span>
  1698. 1645
  1699. 1646 <span class="comment">% Hint: edit controls usually have a white background on Windows.</span>
  1700. 1647 <span class="comment">% See ISPC and COMPUTER.</span>
  1701. 1648 <span class="keyword">if</span> ispc
  1702. 1649 set(hObject,<span class="string">'BackgroundColor'</span>,<span class="string">'white'</span>);
  1703. 1650 <span class="keyword">else</span>
  1704. 1651 set(hObject,<span class="string">'BackgroundColor'</span>,get(0,<span class="string">'defaultUicontrolBackgroundColor'</span>));
  1705. 1652 <span class="keyword">end</span>
  1706. 1653
  1707. 1654
  1708. 1655
  1709. 1656
  1710. 1657
  1711. 1658 <a name="_sub97" href="#_subfunctions" class="code">function channel_Callback(hObject, eventdata, handles)</a>
  1712. 1659 <span class="comment">% hObject handle to channel (see GCBO)</span>
  1713. 1660 <span class="comment">% eventdata reserved - to be defined in a future version of MATLAB</span>
  1714. 1661 <span class="comment">% handles structure with handles and user data (see GUIDATA)</span>
  1715. 1662
  1716. 1663 <span class="comment">% Hints: get(hObject,'String') returns contents of channel as text</span>
  1717. 1664 <span class="comment">% str2double(get(hObject,'String')) returns contents of channel as a double</span>
  1718. 1665
  1719. 1666
  1720. 1667
  1721. 1668 <span class="comment">% --- Executes during object creation, after setting all properties.</span>
  1722. 1669 <a name="_sub98" href="#_subfunctions" class="code">function channel_CreateFcn(hObject, eventdata, handles)</a>
  1723. 1670 <span class="comment">% hObject handle to channel (see GCBO)</span>
  1724. 1671 <span class="comment">% eventdata reserved - to be defined in a future version of MATLAB</span>
  1725. 1672 <span class="comment">% handles empty - handles not created until after all CreateFcns called</span>
  1726. 1673
  1727. 1674 <span class="comment">% Hint: edit controls usually have a white background on Windows.</span>
  1728. 1675 <span class="comment">% See ISPC and COMPUTER.</span>
  1729. 1676 <span class="keyword">if</span> ispc &amp;&amp; isequal(get(hObject,<span class="string">'BackgroundColor'</span>), get(0,<span class="string">'defaultUicontrolBackgroundColor'</span>))
  1730. 1677 set(hObject,<span class="string">'BackgroundColor'</span>,<span class="string">'white'</span>);
  1731. 1678 <span class="keyword">end</span>
  1732. 1679
  1733. 1680</pre></div>
  1734. <hr><address>Generated on Fri 12-Aug-2011 11:36:15 by <strong><a href="http://www.artefact.tk/software/matlab/m2html/" target="_parent">m2html</a></strong> &copy; 2005</address>
  1735. </body>
  1736. </html>