Formation Matlab, tutoriel & guide de travaux pratiques en pdf.
Programmation
Syntaxe du langage
Un script Matlab est composé d’une suite d’instructions, toutes separees par une virgule (ou de manière équivalente, un passage ` a la ligne) ou un point virgule. La diff´erence entre ces deux types de séparation est liee a l’affichage ou non du r´esultat ` a l’´ecran (seulement effectu´ e dans le premier cas). Comme tout langage, Matlab poss`ede aussi un certain nombre d’instructions syntaxiques (boucles simples, conditionnelles, etc…) et de commandes ´ el´ementaires (lecture, ´ecriture, etc…) r´ecapitul´ees dans les tableaux 2-3. D` es que le calcul ` a effectuer implique un enchaînement de commandes un peu compliqu´ e, il vaut mieux ´ecrire ces derni`eres dans un fichier. Par convention un fichier contenant des commandes Matlab porte un nom avec le suffixe .m et s’appelle pour cette raison un M-file ou encore script. On utilisera TOUJOURS l’´editeur int´egr´ e au logiciel qui se lance ` a partir de la fenˆetre de commande en cliquant sur les icˆones new M-file ou open file dans la barre de menu. Une fois le fichier enregistr´ e sous un nom valide, on peut executer les commandes qu’il contient en tapant son nom – sans le suffixe .m – dans la fenˆetre de commande. Si vous avez ouvert l’´editeur comme indiqu´ e, ` a partir de la fenˆetre de commande, les M-file seront cr´ e´ es dans le r´ epertoire courant, accessible depuis cette fenˆetre, et vous n’aurez pas de probl`eme d’acc`es. Si vous voulez ex´ecuter des scripts qui se trouvent ailleurs dans l’arborescence des fichiers, vous aurez ´eventuellement ` a modifier le Path en cliquant sur le menu file− >SetPath ou bien en changeant de r´epertoire de travail (cliquer sur l’onglet current directory).
Exercice 1 Un premier script Cr´eer dans le r´epertoire courant un M-file en cliquant sur l’icone New M-file et taper les instructions suivantes :
Script 1 Premier script
a=1; b=2; c=a+b;
Sauver (en cliquant sur l’icone save) sous le nom PremierScript.m et ex´ecuter la commande >>PremierScript dans la fenˆetre Matlab, soit en la tapant au clavier soit en cliquant sur l’icone Run à partir de la fenˆetre d’´edition. Taper maintenant >>c qui doit contenir la valeur calcul´ ee par le script.
Plusieurs types de donn´ees sont disponibles dans Matlab. Les types traditionnels que l’on retrouve dans tous les langages de programmation : les types num´eriques (single, double, int8, etc…), caractères char ,les tableaux de réels, et les tableaux creux sparse, et les types compos´ es cell, structure ainsi que les types d´efinis par l’utilisateur, comme les fonctions inline. Le type de donn´ ee privilegi´e sous Matlab est les tableaux ` a une ou deux dimensions, qui correspondent aux vecteurs et matrices utilis´es en math´ematiques et qui sont aussi utilis´ es pour la repr´esentation graphique. Nous allons donc nous attarder sur leur d´efinition et leur maniement dans les paragraphes qui suivent.
Vecteurs
Pour définir un vecteur la syntaxe est une des suivantes :
>>v=[2;3;7] %vecteur colonne composantes r´eelles v= 2.0000 3.0000 7.0000 >>v=[2,-3+i,7] %vecteur ligne composantes complexes, i^2 =-1 v = 2.0000 -3.0000 + 1.0000i 7.0000 >>v’ % vecteur transconjugu´ e ans = 2.0000 -3.0000 – 1.0000i 7.0000 >>v.’ % vecteur transpos´ e ans = 2.0000 -3.0000 + 1.0000i 7.0000 >>w=[-3;-3-i;2] % vecteur colonne w = -3.0000 -3.0000 – 1.0000i 2.0000 >>v+w’ % somme de deux vecteurs ans = -1.0000 -6.0000 + 2.0000i 9.0000 >>v*w % produit scalaire euclidien ans = 18. >>w’.*v % produit des composantes terme ` a terme ans = -6.0000 8.0000 – 6.0000i 14.0000
>>w’.*v % division des composantes terme ` a terme >>w.^3 % mise ` a la puissance 3 de chaque composante.
Les composantes sont séparées par des blancs (dangereux) ou de pr´ ef´erence par des virgules pour les vecteurs lignes et par des points-virgules pour les vecteurs colonnes. Des messages erreurs sont affich´ es si une op´eration impossible est tent´ ee (par exemple l’addition de vecteurs de longueurs diff´erentes). Et pour aller plus vite…
>>v=1:5.1:23 % vecteur a increment constant v = 1.0000 6.1000 11.2000 16.3000 21.4000 >>ones(size(v)) % vecteur de meme taille que v et contenant des 1 ans = 1 1 1 1 1 >>ones(1,4) % vecteur ligne 4 composantes egales a 1 ans = 1 1 1 1 >>3*ones(1,5) % vecteur ligne 5 composantes egales a 3 ans = 3 3 3 3 3 >>zeros(3,1) % vecteur colonne 3 composantes nulles ans = 0 0 0
Matrices
Les matrices suivent la mˆeme syntaxe que les vecteurs. Les composantes des lignes sont séparées par des virgules et chaque ligne est s´epar´ ee de l’autre par un point virgule.
>>% une mani`ere de d´efinir une matrice 3 x 3: >>A=[1,2,3;0,0,atan(1);5,9,-1];
>>% une autre syntaxe pour faire la m^eme chose >>A=[1 2 3 >> 0 0 atan(1) >> 5 9 -1] A = 1. 2. 3. 0. 0. .7853982 5. 9. – 1.
>>% ` a ne pas confondre avec ce groupe d’instructions >>A=[1 2 3… >>0 0 atan(1)… >>5 9 -1] A = 1. 2. 30. 0. 0.7853982 5. 9. – 1.
>>v=1:5;W=v’*v % multiplication de matrices W =1 2 3 4 5 2 4 6 8 10 3 6 9 12 15 4 8 12 16 20 5 10 15 20 25 >>W(1,:) %extraction de la premi`ere ligne ans = 1. 2. 3. 4. 5. >>A=eye(3,3) % Matrice identit´ e A = 1 0 0 0 1 0 0 0 1 >>B=toeplitz([2,1,0,0]) % une matrice de Toeplitz B = 2 1 0 0 1 2 1 0 0 1 2 1 0 0 1 2
Le tableau 1 résume les principales fonctions affectant ou effectuant des op´erations sur des matrices. Noter que les fonctions scalaires courantes, (sin, exp, etc…) peuvent aussi s’appliquer ` a des matrices, composante par composante, comme dans l’exemple suivant
>>u=[0:1:4] u = 0 1 2 3 4 >>v=sin(u) v = 0 0.8415 0.9093 0.1411 -0.7568
La fonction find(C(A)) renvoie les indices dans le tableau A des composantes vérifiant la condition C(A). Par exemple
>>A=rand(1,5) % cree un vecteur ligne contenant 5 nombres repartis % aleatoirement entre 0 et 1 >>find(A>0.5) % renvoie les indices des composantes de A >0.5 >>find(A) % renvoie les indices des composantes de A differentes de 0 >>find(A==0.2) % renvoie les indices des composantes de A egales a 0.2
Exercice 2 Tester et comprendre les deux lignes suivantes
A=[1 2 -1 1 ; -1 1 0 3] find(A>0)
Exercices sur la syntaxe de base et les tableaux
La solution des exercices ne doit pas ˆetre tap´ ee directement dans la fenetre de commandes mais au contraire dans la fenˆetre de l’´editeur de mani`ere` aˆetre sauvegardeed ans un script pour pouvoir y revenir ult´erieurement(cf. 1). Les mots clefs en italiques dans la marge sont des fonctions Matlab ` a utiliser pour faire l’exercice.