What I have already figured out, is that since at every step in the "for" loop I create a new .m file and delete previous file, matlab still have a copy of the old file and executes that old .m instead of newly created. To overcome this I wrote a line to clear old .m file from a memory and everything seems to work properly.
A very odd loop behavior
1 Ansicht (letzte 30 Tage)
Ältere Kommentare anzeigen
I encountered a quite odd and unseen behavior in "for" loops. Consider this simple loop:
for i=1:5
Function(rand(1,1))
end
The loop gives the same results, while repeated lines as this:
Function(rand(1,1))
Function(rand(1,1))
Function(rand(1,1))
Function(rand(1,1))
Function(rand(1,1))
Gives 5 different results. What might be the problem? It seems that the "for" loop evaluates the function 5 times with the same argument. This effect is in Wondows, while in Mac system everything goes smoothly and produces different results.
Any advice would be of great value.
0 Kommentare
Akzeptierte Antwort
Tomas Iesmantas
am 14 Mär. 2013
2 Kommentare
Jan
am 14 Mär. 2013
Creating M-file dynamically is a bad programming practize. It is much more efficient and less prone to errors to call a static function with changing parameters. Any kind of meta-programming increases the effort for debugging substantially, and in all cases I've seen already, the parameterized functions have been more direct and clear.
Weitere Antworten (1)
Wayne King
am 14 Mär. 2013
We don't know anything about Function(), but that is certainly not the case in Windows in general
for ii = 1:5
sum([rand(1,1) 0])
end
4 Kommentare
Siehe auch
Kategorien
Mehr zu Loops and Conditional Statements finden Sie in Help Center und File Exchange
Produkte
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!