[MATLAB] Boucle if qui ne marche pas
Belki
-
Char Snipeur Messages postés 9813 Date d'inscription Statut Contributeur Dernière intervention -
Char Snipeur Messages postés 9813 Date d'inscription Statut Contributeur Dernière intervention -
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
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
A voir également:
- Boucle if matlab
- Xiaomi s'éteint tout seul et se rallume en boucle - Forum Xiaomi
- Boucle excel sans macro - Forum Excel
- Mon pc s'allume et s'éteint en boucle ✓ - Forum Matériel & Système
- Vlc lire en boucle ✓ - Forum Lecteurs et supports vidéo
- Mise à disposition de boucle locale dédiée ✓ - Forum Freebox
1 réponse
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
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