BUT DE TP
Génération - Manipulation
Cette partie fait un tour d'horizon des utilisations courantes des vecteurs et matrices,
de la génération à l'indexation.
On travaille dans cette partie à partir du prompt de l'espace de travail. Le prompt,
dénoté par >>, signifie que vous avez la main et qu'une commande est attendue.
Quelques commandes sont utiles, lorsque vous avez oublié quelles sont vos
variables ou une commande ...
Les commandes who et whos vous indiquent les tailles et types de vos
variables.
La commande help utilisée seule donne une liste et un bref descriptif des
sujets contenant une aide,
La commande help nom_fonction donne un descriptif de la fonction sur les
arguments nécessaires en entrée ainsi que les résultats donnés.
Scalaires
Dans un premier temps on génère trois variables scalaires a,b et c sur lesquelles on
va par la suite effectuer quelques opérations.
>> a = 2
a=
2
>> b = 3
b=
3
>> c = 4;
>>
Le caractère `;' sert à supprimer l'écho d'une ligne de commande, c'est-à-dire
l'affichage des valeurs prises par les variables dans la ligne de commande. Pour
connaître la valeur d'une variable, il suffit donc de taper son nom :
>> c
c=
4
Il est aussi possible de séparer 2 commandes sur la même ligne à l'aide d'une virgule
`,' sans supprimer l'écho ou d'un point virgule `;'. Essayez :
NASR KHOIDJA Med Ali 1/12
>> a = 3; b = 2, c = 4;
Enfin, si une ligne de commande est trop longue, vous pouvez passer à la ligne
suivante en tapant `...' puis ENTREE :
>> a = ...
4
a=
4
Vous pouvez alors effectuer des opérations sur vos variables en respectant les
règles classiques de priorités : * et / prioritaires devant + et -
>> a+b * c
ans =
16
>> (a+b) * c
ans =
28
>> d = a/b*c, e = (a/b)*c
d=
6
e=
6
Comparez alors l'effet des commandes who et whos.
Vecteurs
>> x = 0:pi/4:pi;
>> sin(x),cos(x), 1/x
???
Les matrices sont des tableaux à deux dimensions qui se génèrent comme les
vecteurs. À l'intérieur des délimiteurs [ ], deux colonnes sont séparées par un espace
et deux lignes par un point virgule `;'.
Surveillez bien que toutes vos lignes aient toujours le même nombre de colonnes !
Un certain nombre de matrices prédéfinies existent (diagonales, nulles, remplies de
1, ...), et fonctions réalisent les opérations courantes sur les matrices (déterminant,
trace, somme des lignes ou des colonnes, valeurs propres, ...). La liste est disponible
dans l'aide :
>> help elmat
Générez la matrice A( 3, 3) donnée ci-dessous, recherchez son déterminant, son
1
inverse, son carré, son inverse terme à terme. Vérifiez que A * A I (3,3) .
Pour vous en convaincre, générez une matrice et comparez les résultats des
multiplications et .
L'écriture sous forme de produit matriciel d'un système d'équations linéaire respecte
un certain ordre dans la multiplication. Ainsi le système :
(1.1)
x 1
s'écrit : A * X Y , où X y
z
et Y 0
1
La conversion (ligne,colonne) vers (indice) se fait alors, pour une matrice ayant
lignes et colonnes :
Indice = N*(colonne – 1)+ligne
Essayez avec les 2 types d'indexations de récupérer en une seule fois les éléments
A(2,1), A(1,3) et A(3,2). Concluez.
Il est parfois utile de devoir supprimer, ou ajouter, des éléments d'un vecteur ou
d'une matrice. L'ajout d'éléments se fait simplement en assignant une valeur à
l'indice désiré. Matlab met à jour la taille des matrices pour y inclure le nouvel
élément.
La taille des matrices est donnée par la fonction size pour les matrices ou les
tableaux de dimensions > 2 et par length pour les vecteurs. Une option intéressante
de la fonction size est la possibilité de ne récupérer que le nombre de lignes ou de
colonnes d'une matrice.
Regardez dans l'aide de la fonction size.
Essayez et commentez les ajouts suivants. Vérifiez aussi la taille de votre matrice
avant et après chacune des opérations.
>>A (5,2) = 5
>> A (4,:) = 5
>> A (1:4,7) = A(1,3)
L'opération de concaténation consiste à mettre bout à bout des matrices, ou
vecteur. Il n'est possible de concaténer les matrices en ligne ou en colonne que si
elles ont une dimension en commun.
Expliquez les concaténations suivantes :
>> A A1 = [ A A ]
>> A A2 = [ A ; A ]
>> A A3 = [A(1,:) ; A (:,2)' ]
>> A A4 = [A(1,1:2) , A(1:2,4) ’ ]
Il est aussi nécessaire, pour certaines opérations terme à terme entre 2 matrices de
répliquer un vecteur ou une matrice pour le mettre au format d'une autre. La
commande repmat permet de répliquer une matrice en la concaténant.
Expliquez chaque terme des commandes suivantes :
>> c = repmat(1:size(A,2),size(A,1),1)
>> d = A.^c
Enfin, pour supprimer des éléments d'une matrice, il faut en fait leur assigner une
matrice vide (>> [ ]).
Plutôt que de retaper toute une série de commandes au clavier, le travail sur une
application précise en Maltab se fera en créant dans l'éditeur de texte des fichiers
textes stockés avec l'extension `` .m''. Tous les fichiers ayant l'extension .m sont
exécutables directement depuis le prompt, en tapant le nom du fichier, sans
l'extension. Il faut toutefois s'assurer que le chemin du répertoire dans lequel se
trouve vos fichiers est bien connu par Matlab. C'est la commande path qui vous
indique quels sont les chemins connus. Cette commande permet aussi d'ajouter un
chemin à la liste. Les versions récentes de Matlab sont équipées d'un path browser
(explorateur de chemin) qui vous permet d'ajouter facilement les chemins des
répertoires contenant vos fichiers. Il existe 2 types de fichiers .m, les fichiers de
commandes et les fichiers de fonctions. Les fonctions seront vues plus tard et nous
ne présentons ici que les fichiers de commandes.
Les fichiers de commandes sont des fichiers textes, éditables avec n'importe quel
éditeur (Notepad, ...). Les versions récentes de Matlab proposent un éditeur de
fichiers ``.m'' présentant quelques avantages : couleurs spécifiques pour les
fonctions connus, outils de debbugage intégrés, ajout de points d'arrêts, ...
Pour ouvrir un fichier ``.m'' dans l'éditeur, tapez >> edit nom_fichier.
Vous travaillerez désormais uniquement dans des fichiers scripts, afin de garder une
trace de vos travaux, et de pouvoir apporter facilement des modifications.
Il est utile de commenter abondamment ces programmes, pour les comprendre
facilement même longtemps après leur création. Une ligne de commentaires est
délimitée sous Matlab par le caractère ``%''.
À titre d'exemple, créez un fichier ``.m'' qui génère un signal sinusoïdal de 128
points, puis qui l'affiche à l'écran, à l'aide de la commande plot.
Éxecutez votre programme depuis l'espace de travail (vérifiez que le chemin d'accès
au programme existe).
Un autre avantage des scripts est la possibilité de demander une valeur à l'utilisateur
pendant l'éxecution du programme. Ceci se fait par la commande input.
>> valeur = input('Entrez une valeur')
Modifiez votre programme pour demander la fréquence du sinus à l'utilisateur.
Affichage
Texte
Graphiques 2D
Un graphique sert à représenter dans une grande majorité des cas une grandeur
physique. Il est donc primordial de gérer les unités des axes que l'on utilise. De
nombreuses fonctions servent à personnaliser les axes en ajoutant vos propres
labels, légendes et titres. Différents types de représentations sont aussi possibles,
suivant le type de données que l'on désire représenter. Nous ne présentons ici que
Images et graphiques 3D
Par exemple, pour représenter le mode (1,1) de vibration d'une plaque, on génère la
matrice , et
>> y = 0:0.1:pi;
>> x = 0:0.1:pi;
>> n = 1; m = 1;
>> z = sin(n*x)'*sin(m*y);
>> figure(1); clf;
>> surf(x,y,z);
>> shading interp
>> figure(2), clf, imagesc(x,y,z)
Les fonctions
Les fonctions sont le deuxième type de fichiers ``.m''. Comme les scripts, il s'agit de
fichiers texte, mais elles implémentent une fonction, de manière interne au fichier.
Ainsi, on lui passe des paramètres d'entrée et la fonction rend des résultats. Les
variables utilisées dans les fonctions sont invisibles depuis l'espace de travail. Seuls
les résultats seront visibles.
Un fichier fonction débute par le mot function, suivi du nom de la fonction, et des
paramètres d'entrée sortie. La déclaration est de la forme :
function [ resultat1, resultat2, ... ] = mafonction(paramètre1,paramètre2,... )