suivant: Lecture et écriture au
monter: Introduction au logiciel Matlab
précédent: Les boucles
Table des matières
Un test est une alternative entre deux commandes (ou groupe de commandes )
Matlab sélectionnées suivant le résultat d'une opération logique. Le résultat
d'une opération logique (voir tableau 4) est une variable logique ou
boléenne qui vaut
pour VRAI et
pour FAUX.
Dans Matlab on dispose du classique if-else agrémenté du elseif parfois bien utile. La syntaxe est par exemple
»x=16
x =
16
»if x>0, y=-x, else y=x, end
y =
- 16
On a aussi la possibilité d'utiliser le switch-case, qui a son
équivalent dans le langage C
switch expression
case case_expr
commande,... ,commande
case case_expr1,case_expr2,case_expr3,...
commande,... ,commande
...
otherwise
commande,... ,commande
end
Cet élément de syntaxe permet de gérer plus élégamment les tests portant sur
un seul critère pouvant prendre plus de deux valeurs entières, comme dans
l'exemple suivant
n=round(10*rand(1,1))
switch n
case 0
fprintf('cas numero 0')
case 1
fprintf('cas numero 1')
case 2
fprintf('cas numero 2')
otherwise
fprintf('autre cas')
end
Tableau 4:
Les opérateurs logiques dans les tests
| français |
test Matlab |
| et |
 |
| ou |
 |
| non |
~ |
| égal |
 |
| différent |
~ |
| plus petit que |
 |
| plus grand que |
 |
| plus petit ou égal à |
 |
| plus grand ou égal à |
 |
|
On a vu dans le paragraphe 2.3 qu'on pouvait utiliser la plupart
des fonctions définies pour un argument scalaire avec un argument
tableau. Dans ce cas la fonction renvoie dans un tableau la valeur de la
fonction appliquée à chaque composante.
Si la fonction met en oeuvre des tests logiques sur la valeur de la
variable scalaire passée en argument d'appel, le résultat appliqué à un
vecteur dépend du résultat logique intersection du test appliqué à toutes les composantes.
Pour appliquer la fonction composante par composante, il faut parfois la ré-écrire en remplaçant les tests sur des valeurs
scalaires par l'emploi de la fonction find ou bien par des fonctions caractéristiques.
Prenons par exemple, la fonction suivante
function y=test1(x)
if x>0.5
y=1
else
y=0
end
qui teste la position d'une variable réelle par rapport à
.
Si on l'applique à un vecteur, on obtient une seule valeur correspondant au
résultat du test scalaire vérifié pour toutes les composantes. Ici, test1(v) sera égal à
si toutes les composantes de v sont supérieures à
.
Pour appliquer le test composante par composante, le plus simple est de
remarquer que test1 se programme aussi par l'instruction
y=(x>0.5)
qui donne le résultat attendu dans le cas scalaire et aussi vectoriel (le
vérifier!)
Exercice 14 Regardons maintenant une deuxième fonction
test2
function y=test2(x)
if x>0.5
y=sin(x)
else
y=x
end
- Créer un vecteur contenant
valeurs aléatoires uniformément distribuées entre
et
.
- Tester l'emploi des deux fonctions test1 et test2 sur ce
vecteur
- Ecrire une fonction test2v qui fait la même chose que test2
composante par composante. (Utiliser find ou des fonctions caractéristiques)
suivant: Lecture et écriture au
monter: Introduction au logiciel Matlab
précédent: Les boucles
Table des matières
marie
2005-02-01