[MATLAB] Boucle if qui ne marche pas

Fermé
Belki - 17 sept. 2012 à 11:31
Char Snipeur Messages postés 9813 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 - 17 sept. 2012 à 14:16
Bonjour,

je poste ici car je rencontre un problème bête sur matlab qui commence à me rendre fou
Donc j'ai un vecteur p =

2.3635
0.3318
-1.1953

Je veux récupérer la valeur entre 0 et 1 . Pour ça, je rentre une boucle if :
if 0<=p(1)<=1
a=p(1);
elseif 0<=p(2)<=1
a=p(2);
else a=p(3);
end

Le problème, c'est que Matlab pense que la valeur 2.3635 se trouve entre 0 et 1 !
Est-ce que quelqu'un a déjà rencontré ce problème?? Je commence à désespérer de rester bloqué sur cette partie du problème

Merci d'avance

1 réponse

Char Snipeur Messages postés 9813 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 1 297
17 sept. 2012 à 14:16
En informatique 90 fois sur 100 le problème vient de ce qu'il y a entre le clavier et la chaise.
Et là c'est le cas, car tu ne connais pas la programmation et la façon de faire de la logique, en particulier la priorité des opérateur.
Bref, "0<=p(1)<=1" ne fait pas ce que tu penses. Il fait 0<=p(1) et retourne true (qui vaut aussi 1) et ensuite il fait 1<=1, et donc retourne true, donc il fait le corps du if et a=p(1). Il faut séparer ton opération en 2 :
if 0<=p(1) && p(1)<=1
0