2012-10-13 1 views
0

Je cherche à réaliser quelque chose qui semble assez simple, mais pas sûr de savoir comment mettre en œuvre ORs dans une instruction IF:Comment initier instruction IF si la variable est uniquement contenue dans la matrice (Matlab)

A = [4 6 7; 3 4 7; 8 7 1] 
C = 6 
if C is in first row of A 
(i.e. if row 1 contains 6, basically -- IF C = 4 or C=6 or C=7)  
    (then do this) 
end 

Toutes les suggestions ?

+0

Kelly, vous avez été sur un certain temps maintenant. Essayez de formater votre (pseudo) code correctement .. – angainor

Répondre

2

Alors

A(1,:) == C 

est un début. Dans votre cas, il retournera un tableau booléen 3 élément où

ans(1) = 1 if A(1,1) == C, 0 otherwise 
ans(2) = 1 if A(1,2) == C, 0 otherwise 
ans(3) = 1 if A(1,3) == C, 0 otherwise 

À partir de là, vous pouvez faire quelque chose comme

if(sum(A(1,:) == C)) 
# or 
if(length(find(A(1,:) == C))) 

fonctionnerait.

+0

Merci beaucoup. Exactement ce que je cherchais! Et merci pour l'explication concise ... fait qu'il est plus facile de comprendre ce qui se passe. – Kelly

+0

Heureux de vous aider! (il y avait une petite faute de frappe sur la première ligne du troisième bloc que je viens de corriger aussi). – jedwards

+0

Cette même logique peut-elle également être utilisée pour "récupérer" cette colonne. Dans le cas d'origine - colonne [6; 4; 7]? – Kelly

0
A = [4 6 7; 3 4 7; 8 7 1]; 
    C = 6; 

    rowNum = 1; 

    if (sum(A(rowNum,:) == C) ~= 0) 
     do something 
    end 
Questions connexes