While loop - display the last value while statement is still true
Show older comments
x=0
p=1-poisscdf(1,x);
while p<=0.1
x=x+0.01;
p=1-poisscdf(1,x);
end
display(x);
The x value given at the end of the loop is the first value that makes the statement false.What can I add to the script so that display(x) gives me the last value that makes the statement true?
*Edit:
I just tried:
x=0;
p=1-poisscdf(1,x);
while p2more<=0.1
x=x+0.01;
p=1-poisscdf(1,x);
if p>=0.1
break
end
display(x);
end
Now I get all the values of x where this statement is true. I just want the last value. :X
Accepted Answer
More Answers (1)
The trivial soultion is:
x = 0;
p = 1 - poisscdf(1, x);
while p <= 0.1
x = x + 0.01;
p = 1 - poisscdf(1, x);
end
x = x - 0.01;
display(x);
If the increasing of x is not a constant:
x = 0;
lastx = x;
p = 1 - poisscdf(1, x);
while p <= 0.1
lastx = x;
x = x + 0.01;
p = 1 - poisscdf(1, x);
end
display(lastx);
Now p is defined twice and redundacies in the code are prone to bugs: If one instance is modified later, that other might be forgotton. To avoid this:
x = 0;
ready = false
while ~ready
p = 1 - poisscdf(1, x);
ready = (p < 0.1);
lastx = x;
x = x + 0.01;
end
display(lastx);
Categories
Find more on Loops and Conditional Statements in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!