execution order

What is the easiest way to control execution order of your code?
i have a function that creates an array of numbers and then I have a for loop that needs to use some numbers from that array. but the for loop seesms to be executing first.

4 comentarios

Jonathan
Jonathan el 17 de Nov. de 2011
Can you give us an example of this to clarify your question?
Baba
Baba el 17 de Nov. de 2011
time=function(pwd); % creates an array of numbers;
for i=1:10
...
...
need to use parts of time array here
end
but it seems that the time array gets populated after the for loop is executed.
Walter Roberson
Walter Roberson el 17 de Nov. de 2011
No, in such a situation, the "time" variable would get populated before the "for" loop starts.
However, please remember that "time" is the name of a MATLAB library routine, and functions cannot be named "function". When you use library routine names as variables, it is common to run in to unexpected effects.
Baba
Baba el 17 de Nov. de 2011
thank you!

Iniciar sesión para comentar.

 Respuesta aceptada

Jan
Jan el 17 de Nov. de 2011

0 votos

Matlab executes the code line by line in serial order. Inside a line the commands are executed from left to right.
Callbacks and timer functions are processed, if the command prompt is reached, or if PAUSE or DRAWNOW trigger their execution.
I do not see any possibilities to influence the order of execution.

7 comentarios

Baba
Baba el 17 de Nov. de 2011
thank you!
Walter Roberson
Walter Roberson el 17 de Nov. de 2011
In modern versions, timer callbacks can occur between any two lines, apparently.
Jan
Jan el 17 de Nov. de 2011
@Walter: Is this documented?
Walter Roberson
Walter Roberson el 17 de Nov. de 2011
No, not documented :(
http://www.mathworks.com/matlabcentral/answers/10394-timer-and-interruptible-off-button-callback-priority-preemption
Oh wait, here is official evidence!
http://www.mathworks.com/support/solutions/en/data/1-2QJ375/index.html?solution=1-2QJ375
And I think I might have traced back the discussion I was thinking of:
http://www.mathworks.com/matlabcentral/newsreader/view_thread/283728
Jonathan
Jonathan el 17 de Nov. de 2011
I would make a small modification to this answer. Inside a line, the commands are executed from left to right and inside to outside.
Daniel Shub
Daniel Shub el 17 de Nov. de 2011
@Walter, understanding timers is not that easy (and I am not sure you are implying it is easy). See my new question: http://www.mathworks.com/matlabcentral/answers/21537-what-thread-do-timers-operate-in
Jan
Jan el 17 de Nov. de 2011
@Jonathan: Exactly. Inside a line the precedence order rules, but for the same precedence the left operation is performed at first.

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Más información sobre Loops and Conditional Statements en Centro de ayuda y File Exchange.

Etiquetas

Preguntada:

el 17 de Nov. de 2011

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by