<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <link>http://www.mathworks.com/matlabcentral/newsreader/view_thread/256324</link>
    <title>MATLAB Central Newsreader - Nested Function Error?</title>
    <description>Feed for thread: Nested Function Error?</description>
    <language>en-us</language>
    <copyright>&amp;copy;1994-2012 by MathWorks, Inc.</copyright>
    <webmaster>webmaster@mathworks.com</webmaster>
    <generator>MATLAB Central Newsreader</generator>
    <docs>http://blogs.law.harvard.edu/tech/rss</docs>
    <ttl>60</ttl>
    <image>
      <title>MathWorks</title>
      <url>http://www.mathworks.com/images/membrane_icon.gif</url>
    </image>
    <item>
      <pubDate>Fri, 17 Jul 2009 01:42:01 -0400</pubDate>
      <title>Nested Function Error?</title>
      <link>http://www.mathworks.com/matlabcentral/newsreader/view_thread/256324#665954</link>
      <author>Bill </author>
      <description>Currently, I am trying to design a GUI that has a running clock. I assumed that the best way to do it is the make a master function, &quot;Garbage,&quot; start an infinite while loop, and embed all of the callbacks for my GUI in the infinite loop. For some reason, MATLAB doesn't like while statements that stretch across the entire program, because it says that it is an invald use of the function keyword. Any and all help would be greatly appreciated.&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
*********************************************************************&lt;br&gt;
handles.ticFlag = 1&lt;br&gt;
handles.startFlag = 1&lt;br&gt;
function garbage(hObject, eventdata, handles)&lt;br&gt;
&lt;br&gt;
while handles.ticFlag == 1&lt;br&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;handles.difference = toc - handles.startTime&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if handles.startFlag == 1;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;handles.timerDifference = floor(handles.difference);&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if handles.timerDifference &amp;lt; 10&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;handles.displayedTime = horzcat('00:00:0', num2str(handles.timerDifference));&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;elseif handles.TimerDifference &amp;lt; 60&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;handles.displayedTime = horzcat('00:00:', num2str(handles.timerDifference));&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;end&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;set(handles.Timer, 'string', handles.displayedTime);&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;end&lt;br&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;% --- Executes on key press with focus on figure1 and no controls selected.&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;function figure1_KeyPressFcn(hObject, eventdata, handles)&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;% hObject    handle to figure1 (see GCBO)&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;% eventdata  reserved - to be defined in a future version of MATLAB&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;% handles    structure with handles and user data (see GUIDATA)&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;end %end figure1_KeyPress&lt;br&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;end %end while statement&lt;br&gt;
&lt;br&gt;
end %end function Garbage&lt;br&gt;
*********************************************************************</description>
    </item>
    <item>
      <pubDate>Fri, 17 Jul 2009 03:46:01 -0400</pubDate>
      <title>Re: Nested Function Error?</title>
      <link>http://www.mathworks.com/matlabcentral/newsreader/view_thread/256324#665966</link>
      <author>Matt Fig</author>
      <description>It is true that you cannot define this kind of function in a while loop.&lt;br&gt;
&lt;br&gt;
&amp;gt;&amp;gt;help function</description>
    </item>
    <item>
      <pubDate>Fri, 17 Jul 2009 05:07:01 -0400</pubDate>
      <title>Re: Nested Function Error?</title>
      <link>http://www.mathworks.com/matlabcentral/newsreader/view_thread/256324#665971</link>
      <author>Shanmugam Kannappan</author>
      <description>&quot;Bill &quot; &amp;lt;millerwd@notes.udayton.edu&amp;gt; wrote in message &amp;lt;h3okt9$bng$1@fred.mathworks.com&amp;gt;...&lt;br&gt;
&amp;gt; Currently, I am trying to design a GUI that has a running clock. I assumed that the best way to do it is the make a master function, &quot;Garbage,&quot; start an infinite while loop, and embed all of the callbacks for my GUI in the infinite loop. For some reason, MATLAB doesn't like while statements that stretch across the entire program, because it says that it is an invald use of the function keyword. Any and all help would be greatly appreciated.&lt;br&gt;
&amp;gt; &lt;br&gt;
&amp;gt; &lt;br&gt;
&amp;gt; *********************************************************************&lt;br&gt;
&amp;gt; handles.ticFlag = 1&lt;br&gt;
&amp;gt; handles.startFlag = 1&lt;br&gt;
&amp;gt; function garbage(hObject, eventdata, handles)&lt;br&gt;
&amp;gt; &lt;br&gt;
&amp;gt; while handles.ticFlag == 1&lt;br&gt;
&amp;gt; &lt;br&gt;
&amp;gt;     handles.difference = toc - handles.startTime&lt;br&gt;
&amp;gt;     if handles.startFlag == 1;&lt;br&gt;
&amp;gt;         handles.timerDifference = floor(handles.difference);&lt;br&gt;
&amp;gt;         if handles.timerDifference &amp;lt; 10&lt;br&gt;
&amp;gt;             handles.displayedTime = horzcat('00:00:0', num2str(handles.timerDifference));&lt;br&gt;
&amp;gt;         elseif handles.TimerDifference &amp;lt; 60&lt;br&gt;
&amp;gt;             handles.displayedTime = horzcat('00:00:', num2str(handles.timerDifference));&lt;br&gt;
&amp;gt;         end&lt;br&gt;
&amp;gt;         set(handles.Timer, 'string', handles.displayedTime);&lt;br&gt;
&amp;gt;     end&lt;br&gt;
&amp;gt; &lt;br&gt;
&amp;gt;     % --- Executes on key press with focus on figure1 and no controls selected.&lt;br&gt;
&amp;gt;     function figure1_KeyPressFcn(hObject, eventdata, handles)&lt;br&gt;
&amp;gt;     % hObject    handle to figure1 (see GCBO)&lt;br&gt;
&amp;gt;     % eventdata  reserved - to be defined in a future version of MATLAB&lt;br&gt;
&amp;gt;     % handles    structure with handles and user data (see GUIDATA)&lt;br&gt;
&amp;gt;     end %end figure1_KeyPress&lt;br&gt;
&amp;gt; &lt;br&gt;
&amp;gt;     end %end while statement&lt;br&gt;
&amp;gt; &lt;br&gt;
&amp;gt; end %end function Garbage&lt;br&gt;
&amp;gt; *********************************************************************&lt;br&gt;
Hi,&lt;br&gt;
why do you need &quot;figure1_KeyPressFcn&quot; inside while loop.&lt;br&gt;
try to have this function declaretion &amp; statements after while loop but call this function inside while loop.&lt;br&gt;
&amp; any function should start with the function name followed by arguments &amp; statements .So remove the top two lines &amp; put it after function garbage()&lt;br&gt;
&amp; Retry....&lt;br&gt;
all the best....&lt;br&gt;
Shan.....</description>
    </item>
    <item>
      <pubDate>Fri, 17 Jul 2009 17:58:01 -0400</pubDate>
      <title>Re: Nested Function Error?</title>
      <link>http://www.mathworks.com/matlabcentral/newsreader/view_thread/256324#666159</link>
      <author>Bill </author>
      <description>Shan, the reason why I wanted KeyPressFcn in the while loop was because I'm trying to have a running timer in the GUI I am using. The problem is that while this clock is running, I need to be able to do other things, press other buttons, etc., and also at the same time be able to pause/stop the clock if need be. I not understand that I cannot nest GUI functions in a While Loop, but I am still without a solution. Currently, my solution, enclosed below works in terms of updating the clock, but fails to properly execute the stop and pause commands.&lt;br&gt;
&lt;br&gt;
*********************************************************************&lt;br&gt;
handles.ticFlag = 0;&lt;br&gt;
handles.whileInitializer = 1;&lt;br&gt;
handles.escapeFlag = 0;&lt;br&gt;
&lt;br&gt;
function figure1_KeyPressFcn(hObject, eventdata, handles)&lt;br&gt;
Key = get(gcf, 'CurrentKey');&lt;br&gt;
handles.Key = Key;&lt;br&gt;
&lt;br&gt;
switch(handles.Key)&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;case 'f12' %%start key&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if handles.ticFlag == 0&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;handles.startFlag = 1;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;handles.ticFlag = 1;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;beep;&lt;br&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;tic;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;while (handles.whileInitializer == 1) &amp;&amp; (handles.escapeFlag ~= 1)&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;handles.endTime = toc;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;handles.elapsedTime = handles.endTime;&lt;br&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if handles.elapsedTime &amp;gt;= .1&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;%%In this section, I have code to parse out the seconds into minutes, etc. which I end up calling handles.displayedTime I didn't feel it necessary to include this.&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;end&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;set(handles.Timer, 'string', handles.displayedTime);&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;drawnow;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;handles.Key=[];&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;end&lt;br&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;case 'escape' %%Stop key&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if handles.escapeFlag == 0&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;handles.whileInitializer = 0;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;handles.escapeFlag = 1;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;set(handles.Timer, 'string', 'Stopped');&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;set(handles.Timer, 'ForegroundColor', [1 0 0]);&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;guidata(hObject, handles);&lt;br&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;%%This will reset all settings back to the starting point.&lt;br&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;elseif handles.escapeFlag == 1&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;handles.escapeFlag = 0;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;handles.pauseFlag = 0;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;set(handles.Timer, 'string', '00:00:00');&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;set(handles.Timer, 'ForegroundColor', [1 1 0]);&lt;br&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;%%This will restart the program and restart all settings back to t=0&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;end&lt;br&gt;
&lt;br&gt;
etc...&lt;br&gt;
*********************************************************************&lt;br&gt;
&lt;br&gt;
I hope I explained it clearly. Basically, I want to ability to start and stop a timer that basically runs in the background of the GUI while I am able to do other things. I want the timer to be accessible, such as for whether or not I should modify things in the GUI, i.e. change the location of an axes over time, changes colors at certain times, etc.</description>
    </item>
    <item>
      <pubDate>Fri, 17 Jul 2009 18:43:03 -0400</pubDate>
      <title>Re: Nested Function Error?</title>
      <link>http://www.mathworks.com/matlabcentral/newsreader/view_thread/256324#666170</link>
      <author>Bruno Luong</author>
      <description>help TIMER&lt;br&gt;
&lt;br&gt;
Use the real TIMER objects instead of hacking loosely Matlab syntax rules. It sure did not work.&lt;br&gt;
&lt;br&gt;
Bruno</description>
    </item>
  </channel>
</rss>

