“if” statement using “or” operator.
    1 612 vues (au cours des 30 derniers jours)
  
       Afficher commentaires plus anciens
    
Hello everyone,
I have a very simple question....and I have been working on it for some time but cannot figure it out. This is essentially what I would LIKE to say:
    for r = 1:length(FreqSec)-1
        if FreqSec(1,r+1) > FreqSec(r)*1.01 "OR" FreqSec(1,r+1) <FreqSec(r)*0.99
            LagStart = [FreqSec(1,r) r];
            break;
        end
    end
FreqSec is a vector with lots and lots of values....generally within the range of 0.99 and 1.01, except for in a certain interval. I want to detect the exact index point at which the values start changing from the 0.99 to 1.01 range.
Thanks for the help in advance :)
1 commentaire
Réponse acceptée
  Walter Roberson
      
      
 le 3 Fév 2012
        if FreqSec(1,r+1) > FreqSec(r)*1.01 | FreqSec(1,r+1) <FreqSec(r)*0.99
or
if FreqSec(1,r+1) > FreqSec(r)*1.01 || FreqSec(1,r+1) <FreqSec(r)*0.99
The first of these is more general. The second of these, , is the short-circuiting OR that does not bother to evaluate the second expression if it already knows the final result after the first operation. The operator can only be used between expressions that produce scalar outputs.
3 commentaires
  Lewis Waswa
 le 9 Jan 2023
				A quick question, does this mean that the | evaluattes all the conditions? 
Plus de réponses (2)
  Geoff
      
 le 3 Fév 2012
        So you want the last index within the valid range?
I don't know why you are multiplying by 1.01 and 0.99. Perhaps you have described the problem incorrectly or that is the cause of your difficulties. What I think you are trying to do is this:
idx = find( FreqSec >= 0.99 & FreqSec <= 1.01, 1, 'last' )
LagStart = [FreqSec(1,idx) idx];
Or, since it's symmetric:
idx = find( abs(FreqSec-1) <= 0.01, 1, 'last' )
If instead you want the index of the first out-of-range value, use:
idx = find( abs(FreqSec-1) > 0.01, 1, 'first' )
The parameter 'first' is optional, but good for clarity.
-g-
1 commentaire
  Geoff
      
 le 3 Fév 2012
				Oops, those statements with 'last' are incorrect. You are probably better off doing the 'first' statement and subtracting 1.
  Rehman Tabasum
 le 30 Avr 2021
        i=5
while i>=-1
    pause(1)
    fprintf('%d\n',i)
    i=i-1
    if i==0
        break
    end
end
this is my code for the start button gui for countdown timer so anyone know how to stop coutdown timer when it is runnnig 
0 commentaires
Voir également
Catégories
				En savoir plus sur Loops and Conditional Statements dans Help Center et File Exchange
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!