how to continuously loop until a condition is met?

I have a set of data that is varying throughout (force plate data) . I am trying to find the bodyweight of the particpants as it loops through the whole script. I tried to use the mode(A) function and it worked for most but not all as the data varies between them all. So, how can i write a loop that keeps using the mode function until it finds a value that is above 400 and below 1000?

1 Comment

see the idea of a 'while' loop. you'd want something like:
value = InF;
while ~(value>400 && value<1000 );
% perform operations
value = ??? % some updated value based on the operations at this stage
end

Sign in to comment.

Answers (1)

value = % calculate mode;
while 1
if ((value <= 4e2) && (value <= 1e3))
break
else
% value = calculate mode again , if it doesn't satisfy
end
end

6 Comments

how could i then find the mode and if it is not within those values, remove that mode and then redo the mode until it fits?
why would a nested control structure with a 'break' be preferred to a simple while statement?
you could also generate an error when the criterion is met, and use a try...catch block to exit the process, but that is not preferred either.
"why would a nested control structure with a 'break' be preferred to a simple while statement?"
Who said it was preferred?
the simplest solution that solves the problem is preferred.
if
while TRUE;
if (condition)
break
else
% stuff
end
end
and
while ~(condition);
%stuff
end
solve the same problem, the second one is PREFERRED, no?
Sometimes when a user talks about continuing to search until a condition holds, the code is more naturally of the form
while true
do some calculation
if a condition holds
break
end
do some more calculation
end
for example
while true
xnew = 1 - f(xold).^2;
if xnew > 0.99
break
end
xold = xnew;
end
Yes, the form could be rewritten as a while with a condition, but it is not always natural to do so
initialize variables so that condition is false
first_time = true;
while ~condition
if first_time
first_time = false;
else
do some more calculation
end
do some calculation
end
i agree completely that there are instances where this would be the natural way to do it. however, i did not (and still don't... ) see anything in the OP question that indicates it is 'more natural' here.

Sign in to comment.

Categories

Find more on Loops and Conditional Statements in Help Center and File Exchange

Asked:

on 5 Jan 2021

Commented:

on 6 Jan 2021

Community Treasure Hunt

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

Start Hunting!