Problème avec une boucle if

7 views (last 30 days)
Léana TACKUY
Léana TACKUY on 20 Apr 2021
Commented: Mathieu NOE on 29 Apr 2021
Bonjour,
J’ai un petit problème avec une boucle if, car mes conditions ne sont pas prises en compte. Je souhaite calculer la direction de courants à partir des composantes Nord et Est de la vitesse du courant. J’ai donc 4 conditions pour calculer cette direction suivant le signe de vitesse nord et vitesse Est. Le soucis avec ma boucle c’est que toutes les directions sont calculées avec ma première instruction, donc c’est faux, et je ne comprends pas pourquoi...
Si l’un de vous pouvait me dire ce qui ne va pas dans ma boucle, ce serait vraiment cool !
for r=1:1:433
for c=1:1:20
if Vx_space(r,c)>0 && Vy_space(r,c)>0
tangente_a=Vx_space./Vy_space;
alpha=atand(tangente_a);
direction_Vr=alpha;
elseif Vx_space(r,c)>0 && Vy_space(r,c)<0
tangente_b=Vy_space./Vx_space;
alpha=atand(tangente_b);
direction_Vr=90+abs(alpha);
elseif Vx_space(r,c)<0 && Vy_space(r,c)<0
tangente_c=Vx_space./Vy_space;
alpha=atand(tangente_c);
direction_Vr=alpha+180;
elseif Vx_space(r,c)<0 && Vy_space(r,c)>0
tangente_d=Vy_space./Vx_space;
alpha=atand(tangente_d);
direction_Vr=270+abs(alpha);
end
end
end
  2 Comments
Mathieu NOE
Mathieu NOE on 21 Apr 2021
Bonjour Léana
je ne vois pas d'erreur dans le code.
J'ai fais un test basique en entrant des données aléatoires (négatif et positif) et on passe bien dans les 4 conditions
es tu sûre que tu as des données Vx_space ou Vy_space < 0 dans tes données ?
Mon test :
Vx_space = randn(10,12);
Vy_space = randn(10,12);
for r=1:1:10%433
for c=1:1:12%20
if Vx_space(r,c)>0 && Vy_space(r,c)>0
tangente_a=Vx_space./Vy_space;
alpha=atand(tangente_a);
direction_Vr=alpha;
a = 1
elseif Vx_space(r,c)>0 && Vy_space(r,c)<0
tangente_b=Vy_space./Vx_space;
alpha=atand(tangente_b);
direction_Vr=90+abs(alpha);
a = 2
elseif Vx_space(r,c)<0 && Vy_space(r,c)<0
tangente_c=Vx_space./Vy_space;
alpha=atand(tangente_c);
direction_Vr=alpha+180;
a = 3
elseif Vx_space(r,c)<0 && Vy_space(r,c)>0
tangente_d=Vy_space./Vx_space;
alpha=atand(tangente_d);
direction_Vr=270+abs(alpha);
a = 4
end
end
end
donne les résultats suivants :
a =
4
a =
2
a =
4
a =
4
a =
1
a =
3
a =
2
a =
1
a =
4
a =
4
a =
1
a =
1
a =
4
a =
2
a =
2
a =
2
a =
2
a =
1
a =
3
a =
1
a =
1
a =
3
a =
3
a =
1
a =
2
a =
2
a =
1
a =
1
a =
4
a =
4
a =
3
a =
2
a =
2
a =
1
a =
1
a =
1
a =
3
a =
3
a =
1
a =
2
a =
1
a =
4
a =
2
a =
1
a =
4
a =
3
a =
3
a =
2
a =
2
a =
4
a =
4
a =
2
a =
1
a =
4
a =
3
a =
3
a =
4
a =
3
a =
4
a =
1
a =
1
a =
2
a =
3
a =
2
a =
2
a =
2
a =
1
a =
4
a =
2
a =
3
a =
2
a =
4
a =
3
a =
2
a =
4
a =
3
a =
2
a =
2
a =
2
a =
1
a =
4
a =
4
a =
1
a =
4
a =
1
a =
4
a =
2
a =
2
a =
2
a =
1
a =
1
a =
3
a =
2
a =
3
a =
3
a =
1
a =
4
a =
3
a =
4
a =
3
a =
1
a =
4
a =
4
a =
3
a =
1
a =
3
a =
2
a =
4
a =
3
a =
2
a =
1
a =
3
a =
4
a =
3
a =
1
a =
3
a =
3
a =
2
a =
3
a =
2
Léana TACKUY
Léana TACKUY on 23 Apr 2021
Bonjour Mathieu,
Je te remercie ! Mais du coup je ne comprends pas pourquoi ça ne marche pas avec mes variables parce qu'il y a bien des valeurs négatives dans mes 2 matrices

Sign in to comment.

Accepted Answer

Mathieu NOE
Mathieu NOE on 23 Apr 2021
Bonjour Léana
est ce que tu peux partager l'ensemble du code + données d'entrée ?
  4 Comments
Léana TACKUY
Léana TACKUY on 29 Apr 2021
Super ! Merci beaucoup !
Mathieu NOE
Mathieu NOE on 29 Apr 2021
Au plaisir et bonne continuation !

Sign in to comment.

More Answers (0)

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!