Vous êtes sur la page 1sur 8

Tech.

Multimédia ISTIC Borj Cédria


LFSI 3 Année Universitaire 2018-2019

TP No 0 Prise en main de Matlab

Matlab est un logiciel permettant l’optimisation des calculs scientifiques. Développé au départ
pour le calcul matriciel, d’où l’abréviation MATrix LABoratory, Matlab permet la
résolution de problèmes grâce à des algorithmes, des graphiques, des simulations,…
Matlab peut être considéré comme un langage de programmation au même titre que C, Pascal
ou Basic. C’est un langage interprété, c'est-à-dire que les instructions sont exécutées
immédiatement après avoir été tapées.
Matlab est donc un environnement à commande en ligne permettant de faire du calcul
numérique simplement : pas de déclaration préliminaire de variables, possibilité de faire de
l’algorithmique (boucle, conditions,...) et de très nombreuses fonctions dans de nombreux
domaines. Enfin, il est facile de présenter les résultats numériques sur des graphiques.

Génération - Manipulation

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.

Manipulations des vecteurs et scalaires


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
>> 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

Taper who et whos. Quelle est la différence entre les deux commandes ?

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 :
>> a = 3; b = 2, c = 4;

1
Tech. Multimédia ISTIC Borj Cédria
LFSI 3 Année Universitaire 2018-2019

Enfin, si une ligne de commande est trop longue, vous pouvez passez à la ligne suivante en
tapant `...' puis « Entrée » :
>> 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 -

Calculer et comparer a+b * c et (a+b) * c


Calculer et comparer a/b*c et (a/b) * c

Vecteurs

Les vecteurs peuvent être générés de manière manuelle ou automatique. Pour la génération
manuelle, les délimiteurs sont :
 `[' et `]' délimitent le début et la fin du vecteur,
 un espace sépare 2 colonnes,
 un point virgule `;' à l'intérieur de [ ] sépare 2 lignes.

On peut utiliser des virgules ou des blancs pour séparer les éléments d’un vecteur. Taper :
>> v1 = [ 2 3 5 7 11 13 ]
>> v1 = [ 2, 3, 5, 7, 11, 13 ]

Les éléments d’un tableau sont identifiés par leurs indices (commençant à 1):
>> v1(1)
>> v1(2)
>> length(v1)
>> clear v1

Autre manière de définir le tableau, élément par élément :


>> v1(1) = 2
>> v1(2) = 3

>>v1(6) = 13

On peut réaliser des opérations d’addition et de soustraction entre tableaux de même taille :
>> v2 = [ 1 2 3 4 5 6 ]
>> v1 + v2

On définit les vecteurs x = [1 2 3 4 5] et y = [-1 2 1/2 3 -2]. Tester les commandes suivantes :
x*y ; x . * y ; x*y ’ ; sum( x . *y ) ; x+1 ; y . / x
Expliquer ce qu’elles renvoient?

Tapez:
>> x = [1 2 3 4 5]
>> y = [ 1 , 2 , 3 , 4 , 5]
>> z = [ 1 ; 2 ; 3 ; 4 ; 5 ]
>> z ’

Quelle est la différence entre x et y ? et z et z’ ?

2
Tech. Multimédia ISTIC Borj Cédria
LFSI 3 Année Universitaire 2018-2019

Générez ainsi un vecteur ligne et un vecteur colonne


>> vect1 = [ a b c+b/2 ]
>> vect2 = [ c; b; a+b+c]

La transposition s'effectue à l'aide de l'apostrophe '. Essayez


>> vect1 + vect2
>> vect1 + vect2'
>> (vect2 + i)'
>> (vect2 + i).'

Essayez :
>> vect3 = 1:10
>> vect4 = 1:-0.5:-1
>> debut = 0; fin = 2*pi; pas = .1; vect5 = debut:pas:fin

Les opérations +,-,*,^ sur les vecteurs se font alors comme pour les matrices et il est en plus
possible de faire des opérations terme à terme en ajoutant un point devant l'opérateur
(.* , ./ ,.^ , ...). Les principales règles sont rappelées
 L'addition/soustraction de matrices est possible si et seulement si les matrices sont de
même taille.
 La multiplication de deux matrices est possible si et seulement si ces matrices ont une
taille en commun. existe si . Le produit est alors effectué
dans l'ordre classique ligne - colonne
 La puissance n'a de sens que pour les matrices carrées.
 Les opérations terme à terme ne sont possibles qu'entre des matrices de même taille.
 La puissance et l'inverse terme à terme sont possibles sur toutes les matrices (pour
l'inverse, il ne doit pas y avoir d'éléments nuls).

Une liste des fonctions les plus courantes est disponible dans l'aide en ligne par >>help elfun.

Essayez et commentez les opérations suivantes


>> vect1 * vect2
>> vect2 * vect1
>> vect1 .* vect2'

>> x = 0:pi/4:pi;
>> sin(x), cos(x), 1/x

Créer un tableau à intervalles réguliers entre les éléments :


>> T1 = 1 : 2 : 11
>> T2 = 2 : 2 : 12
>> T3 = 1 : 6 % lorsqu’il s’agit d’une incrémentation de 1
>> inverse_T1 = 11 : -2 : 1 % incrémentation inverse
>> T4 = 0 : 0.5 : 10 % incrémentation partiel

Autres opérateurs : produit, division et puissance élément par élément


>> T1 .* T2
>> T1 ./ T2

3
Tech. Multimédia ISTIC Borj Cédria
LFSI 3 Année Universitaire 2018-2019

>> T1.^2

Beaucoup de fonctions intégrées à MATLAB peuvent être appliquées à un tableau :


>> angle = [ 0 : 10 : 90] ;
>> angle = pi*angle/180 ;
>> sin(angle)

Manipulations des matrices

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

On peut juxtaposer des matrices pour en construire une plus grande, à condition que leur
dimension commune soit la même.
Taper:
>> A = [ 10 11 12 ; 9 0 4 ; 13 12 11 ] ;
>> B = [ 9 8 7 ; 6 5 4 ; 3 2 1 ] ;
>> C= [ A B ]
>> size(C)
Quelle est la différence entre [ A ; B] et [A B] ?

Exemple : construction d’une table


>> angle = 0 : 10 : 90
>> sine = sin(pi*angle/180)
>> [ angle’ sine’]

Pour extraire une sous-matrice :


>> A(1, : ) % extraire la première ligne
>> A( : , 2) % extraire la seconde colonne
>> A(1 :2, 1 :2) % extraire une sous-matrice

Opérations élémentaires
>> S = A+B
>> D = A-B
>> A*B
>> C = [10 11 ; 12 13 ; 14 15] ;
>> A*C
>> A.^2
>> L = log10(A)

Pour définir une matrice unitaire :


>> [m, n] = size(A) ; ones(m,n)
>> ones(size(A)) % la même commande mais simplifiée

Indexation des matrices

4
Tech. Multimédia ISTIC Borj Cédria
LFSI 3 Année Universitaire 2018-2019

Les manipulations fréquentes sur les matrices nécessitent souvent de ne récupérer qu'une
partie d'une matrice (ligne ou colonne, sous matrice). L'indexation, ou appel des éléments se
fait par rapport à leurs indices, numérotés de 1 au nombre total de ligne puis de 1 au nombre
total de colonnes. L'ordre d'indexation est toujours ligne - colonne.
Pour récupérer l'élément situé à la 2ème ligne, 3ème colonne de la matrice A, on appelle a(2,3).
>> A(2,3)

Comment récupérer ainsi l'élément 0 dans la matrice A ?

Afin de récupérer un sous bloc d'une matrice, il faut donner en indice non plus une valeur
mais un vecteur de valeur. La récupération d'une ligne ou d'une colonne se fait en indiquant `:'
comme indice. Le dernier élément d'une ligne ou d'une colonne peut être indexé par la
variable end.

Essayez et commentez
>> A(1:2,1)
>> A(1,:)
>> A(:,1:3)
>> A(1:2,2:3)
>> A(end,end-1)

Dans le cas où l'on ne veut récupérer que quelques éléments de la matrice, il faut avoir recours
à un autre type d'indexation. Matlab indexe en effet les éléments de 2 façons : soit en ligne -
colonne, soit comme un vecteur, en comptant les éléments dans l'ordre ligne colonne.
Pour la matrice , les éléments sont donc soit indexés de A(1,1) à A(3,3), soit deA(1) à
A(9) dans l'ordre :

lignes,colonnes , soit indices

La conversion (ligne,colonne) vers (indice) se fait alors, pour une matrice ayant N lignes
et M 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.

Suppression d'éléments, taille des matrices

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.

5
Tech. Multimédia ISTIC Borj Cédria
LFSI 3 Année Universitaire 2018-2019

Regardez dans l'aide de la fonction size. Essayez et commentez les ajouts suivants. Vérifiez
aussi la taille de votre matrice A 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 :


>> aa1 = [ A A ]
>> aa2 = [ A ; A]
>> aa3 = [ A(1,:) ; A(:,2)' ]
>> aa4 = [ 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

Commentez les opérations suivantes, en vérifiant la taille de votre matrice :


>> A(4,:) = [ ]
>> A(5,:) = [ ]
>> A(:,4:6) = [ ]

Utilisation de fichiers scripts

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 presentons ici que
les fichers 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.

6
Tech. Multimédia ISTIC Borj Cédria
LFSI 3 Année Universitaire 2018-2019

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

Matlab possède de nombreuses fonctions permettant de visualiser les données que ce soit en
2D, 3D ou même 4D puisqu'il est possible de réaliser des animations (pour voir les vibrations
d'une plaque par exemple). Avant tout, il est souvent nécessaire d'afficher du texte, pour
demander des valeurs à l'utilisateur ou simplement pour afficher des résultats.

Texte

Il existe 2 grands types de variables : les nombres, souvent réels (double), et les caractères.
Dans les 2 cas, Matlab traite les données sous forme matricielle, c'est à dire soit comme un
tableau de nombres, soit comme un tableau de caractères. Par exemple, une phrase sans saut
de ligne sera un vecteur de caractères.

Les chaînes de caractères sont délimitées par des apostrophes '.


>> txt1 = 'Bonjour les amis'
txt1 =
Bonjour les amis
>> txt1(1:8)
ans =
Bonjour

Pour récupérer une chaîne entrée par l'utilisateur, on utilise la fonction input avec
l'argument 's' signifiant string. La concaténation de texte s'effectue comme pour les matrices
et vecteurs.

Essayez :
>> txt2 = input('Tapez votre texte','s')
>> txt3 = [ txt2; reverse(txt2) ]

L'affichage du texte est possible par les commandes disp et sprintf.

 disp permet d'afficher une variable ou une chaîne de caractère, ou toute combinaison
licite des 2. Le mélange de variables numériques et de caractères se fait grace à la
fonction num2strqui convertit un nombre en chaîne (littéralement : number to string). Il
arrive cependant qu'une variable numérique soit sur plusieurs lignes, comme c'est le cas pour
les matrices. Aussi, la fonction strvcat permet de mettre en forme des variables de texte

7
Tech. Multimédia ISTIC Borj Cédria
LFSI 3 Année Universitaire 2018-2019

n'ayant pas le même nombre de lignes ou de colonnes.

Les différents exemples proposés ci-dessous montrent les différents cas possibles ou non:
>> disp(a);
>> disp(pi);
>> disp('du texte, blabla');
>> disp('du texte'),disp('blabla')
>> disp( [ 'l''élément a(3,3) vaut : ' num2str(a(3,3)) ] )
>> disp( [ 'La matrice A vaut :' num2str(a) ] )
>> disp( strvcat('La matrice A vaut :', num2str(a)) )
>> disp('La matrice A vaut : '), disp(a)

 sprintf est la fonction similaire à la fonction printf du langage C. Par rapport à la


fonction disp, elle permet d'inclure plus facilement des résultats numériques au milieu de
texte, et de choisir la précision d'affichage.

Regardez l'aide de cette fonction et commentez les différents exemples suivant :


>> sprintf('%.25f',pi)
>> sprintf('%.3f',pi);
>> disp(sprintf('%.3f',pi));
>> sprintf('%d ',a)
>> sprintf('A est une \nmatrice %dx%d',size(a,1),size(a,2))

Vous aimerez peut-être aussi