Basic comparison between columns
    2 vues (au cours des 30 derniers jours)
  
       Afficher commentaires plus anciens
    
Hello all,
Let's say I have a 10 x 10 matrix filled with numbers (10 x 10 double). When the value 999 is found (anywhere) the value in the row on the right-hand side must be 9 or it's an error. I would have thought that:
if Z(:,1:end) == 999 & Z(:,2:end)~=9 
     disp('error)
    return
  end
would work but it doesn't.
Any ideas? Thank you
1 commentaire
  the cyclist
      
      
 le 12 Avr 2017
				
      Modifié(e) : the cyclist
      
      
 le 12 Avr 2017
  
			When you say "right-hand side", do you mean the element just the right of each occurrence of 999 needs to be equal to 9, or that 9 needs to be in the right-most column of the matrix?
How should it be handled if 999 is in the right-most column?
Réponse acceptée
  the cyclist
      
      
 le 12 Avr 2017
        
      Modifié(e) : the cyclist
      
      
 le 12 Avr 2017
  
      Assuming 9 needs to be just to the right of 999 (and not handling the last column at all), I would probably do this as follows:
conditionFail = Z(:,1:end-1)==999 & not(Z(:,2:end)==9)
if any(conditionFail(:)) 
    disp('error)
    return
end
It is possible to put all the code into if statement (without needing to pre-specify the condition), like this ...
if any(any(Z(:,1:end-1)==999 & not(Z(:,2:end)==9)))
    disp('error)
    return
end
but I think that is more obfuscated.
Plus de réponses (0)
Voir également
Catégories
				En savoir plus sur Simscape Electrical 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!

