Search All of the Math Forum:

Views expressed in these public forums are not endorsed by NCTM or The Math Forum.

Notice: We are no longer accepting new posts, but the forums will continue to be readable.

Topic: Trouble with the while loop
Replies: 2   Last Post: Mar 4, 2013 10:45 AM

 Messages: [ Previous | Next ]
 Steven Lord Posts: 18,038 Registered: 12/7/04
Re: Trouble with the while loop
Posted: Mar 4, 2013 10:45 AM

"Ishan " <ishanpatel1992@gmail.com> wrote in message
news:kgu4vo\$4t5\$1@newscl01ah.mathworks.com...
> Still a Novice at matlab, trying to figure out what's wrong with my while
> loop everytime I run it, matlab crashes. Here's my code:
> omegax=0;omegay=0;omegaz=1;x=0;y=0;z=1; rand(1000);
> omega=[omegax,omegay,omegaz];v=[x,y,z];w=1;alpha=0.9;
> while 0<=z && z<=5; r=-log(rand);
> v=v+r*omega;
> end

I let this run for 10 minutes on my machine and it didn't crash. If by crash
you really mean you received a crash report log and MATLAB disappeared and
you can reproduce that behavior please send the log along with this code to
Technical Support. If by crash you mean simply stops responding that's
because this is an infinite loop as TideMan identified.

Because of the values of your omega* variables, only z is actually updated
by this code. So I'd update this to be:

z = 1;
while 0 <= z && z <= 5
z = z - log(rand);
end

A second look indicates this can be simplified even more. Because RAND
returns a value between 0 and 1 log(rand) will always be negative so you
don't really need to check for 0 <= z; z starts and 1 and can only increase.

z = 1;
while z <= 5
z = z - log(rand);
end

--
Steve Lord
slord@mathworks.com