When a variable (x) exeed the limit value (y) doing so after 5 times then stop the analysis.

1 commentaire

Dyuman Joshi
Dyuman Joshi le 22 Mai 2023
Are you using a loop to update the variable (x) or check if x>y? If so, then you can use break.

Connectez-vous pour commenter.

 Réponse acceptée

Image Analyst
Image Analyst le 22 Mai 2023
Try something like this
exceedCount = 0;
for k = 1 : 1000000
% First update x in the loop. Then compare it to y.
if x > y
% x is greater than y.
% Increment the count of how many times this has happened.
exceedCount = exceedCount + 1;
% Quit loop if x has exceeded y 5 times.
if exceedCount >= 5
break;
end
end
end

7 commentaires

Sir, my problem is like this so suggest me where i should use the exceedCount.
for K=1:10000
%u0 calculated from some loop
%ut input limit value
%uc input limit value
if u0<ut && u0<uc
no problem for exceedCount
elseif u0>ut
exceedCount calculated
else
exceedCount calculated
end
end
Chaudhary P Patel
Chaudhary P Patel le 25 Mai 2023
@Image Analyst sir, please suggest me.
Not really sure what you want to do, or how your code checks for the "5 times" criteria, but your code can be simplified to this:
for K=1:10000
%u0 calculated from some loop
%ut input limit value
%uc input limit value
if (u0>ut) || ~(u0<ut && u0<uc)
exceedCount = exceedCount + 1
end
end
but this is just your code simplified. I don't know if it's right or not. I suspect it's not. Which of the ut or uc is the upper limit and which is the lower limit?
Maybe it should be
for K=1:10000
%u0 calculated from some loop
%ut upper limit value
%uc lower limit value
if (u0>ut) || (u0<uc)
% Out of acceptable range.
exceedCount = exceedCount + 1
end
end
What I originally gave is what I believe would be right given your original desciption of the problem.
Chaudhary P Patel
Chaudhary P Patel le 25 Mai 2023
Sir @Image Analyst, when i am comparing the u0 with ut and uc,
There are three different case in first case when u0<ut && u0>uc then no need to count the exceed.
But for the second case occured that is u0>ut and u0<uc then we have to count the exceed and this exceed is allwoed for five time after that if it is exceeding then we have to break the analysis.
So do this:
exceedCount = 0;
for k = 1 : 1000000
% First update x in the loop. Then compare it to y.
if (u0 > ut) || (u0 < uc)
% u0 is out of the acceptable range.
% Increment the count of how many times this has happened.
exceedCount = exceedCount + 1;
% Quit loop if x has exceeded y 5 times.
if exceedCount >= 5
break;
end
end
end
In the else/otherwise case, the exceedCount is not incremented. If you want, you can set the count back to zero in that case. It just depends on if you want to check on 5 times overall, even if there are gaps, or if you want the 5 times to be in adjacent elements.
Chaudhary P Patel
Chaudhary P Patel le 26 Mai 2023
Sir @Image Analyst, for my analsis requirement i have to consider the u0<ut && u0>uc for the same loop using elseif condition.
Then where i should use the exceedCount?
Seems inefficient, but you can do
exceedCount = 0;
for k = 1 : 1000000
% First update x in the loop. Then compare it to y.
if (u0 < ut) && (u0 > uc) % Signal is above min and below max.
% u0 is in the acceptable range.
% Do whatever.
else
% u0 is out of the acceptable range.
% Increment the count of how many times this has happened.
exceedCount = exceedCount + 1;
% Quit loop if x has exceeded y 5 times.
if exceedCount >= 5
break;
end
end
end
To learn other fundamental concepts, invest 2 hours of your time here:

Connectez-vous pour commenter.

Plus de réponses (0)

Catégories

En savoir plus sur Loops and Conditional Statements dans Centre d'aide et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by