Vous êtes sur la page 1sur 34

Module : Info 3 2éme Année Licence Génie Électrique

Semestre n° : 3 (S3)

USDB_1 / FACULTE DE TECHNOLOGIE / DÉPARTEMENTS


D’ÉLECTRONIQUE

UE Méthodologique : INFORMATIQUE 3
Support de cours et Travaux pratiques

Les enseignantes responsable de la matière :


Mme REDAD. T
Melle BESSEKRI. A
Mme SAIDI. K

2020/2021
Module : Info 3 2éme Année Licence Génie Électrique
Semestre n° : 3 (S3)

Support de cours N°1 INTRODUCTION À MATLAB

I/ Introduction
MatLab est un système interactif de programmation scientifique, pour le calcul
numérique et la visualisation graphique. Développé à l'origine pour le calcul matriciel
(MatLab = Matrix Laboratoryl), il offre aujourd'hui bien d'autres possibilités. Il
contient des bibliothèques spécialisées (toolbox) qui répondent à des besoins
spécifiques : analyse numérique, traitement du signal, traitement d'image, etc.
(http://www.mathworks.com)

I.1 Accès à MatLab


Pour lancer MATLAB, allez à Démarrer / Programmes / MATLAB, ou

tout simplement cliquez sur l’icône sur le bureau. Une fenêtre appelée
MATLAB, s’ouvre :

2 3

La fenêtre MATLAB
Elle contient :

1. Command Window (1) : Cette fenêtre apparaît automatiquement dès que


MATLAB est démarré, remarquer la présence du prompt MATLAB ( >> ) qui
indique que MATLAB attend des instructions. Chaque ligne doit se terminer
par un retour chariot (en tapant sur la touche Entrée du clavier) qui permet
d’afficher le résultat.

2. Workspace (2) : Affiche les variables en cours d’utilisation.

2020/2021
Module : Info 3 2éme Année Licence Génie Électrique
Semestre n° : 3 (S3)

3. Current Directory (3) : Contient les fichiers et les figures enregistrés sous
MATLAB.

4. Command History (4) : Affiche toutes les commandes utilisées.


Pour faire apparaître les quatre fenêtres de MATLAB, allez à : DesktopDesktop
Layout Default.
On quitte MATLAB en tapant quit dans la fenêtre de commande ou en sélectionnant
quit dans le menu File de la barre de menu.

I.2 Aide en ligne


On peut se rendre compte de la puissance du logiciel en lançant la commande demo.

Les compléments d'informations peuvent être facilement obtenus grâce à l'aide en


ligne incluse dont l'accès s'obtient en tapant au clavier :

>> help (donne la liste des aides générales disponibles en ligne)


>> help general (donne la liste des commandes de contrôle).
>> help function ( pour plus d'info sur la fonction function).
>> help operation (pour plus d'info sur l'opération opération : exemple : tapez
help +)
>> help nom_de_commande (pour plus d'info sur la commande
nom_de_commande : exemple: tapez help plot, help for, help cos.

I.3 Lignes d'instructions


Chaque expression écrite est interprétée et évaluée avant de passer à la suivante. La
syntaxe est généralement de la forme :

1) variable = expression (;) : expression évaluée et résultat assigné à la variable


définie par variable
Ou bien :
2) expression(;) : expression évaluée et résultat assigné à la variable interne ans.

 Le point-virgule à la fin de la ligne indique si le résultat de l'évaluation devra


être affiché à l'écran (; absent) ou non (; présent).

Exemple
>> x = 2
>> x = 2;

- L'exécution peut être arrêtée par l'utilisation des touches Ctrl et C en même
temps.
- Pour rappeler des commandes précédentes, 2 possibilités :
① Utiliser les touches du clavier  ou  et les commandes précédentes
apparaissent dans l’ordre chronologique ;

2020/2021
Module : Info 3 2éme Année Licence Génie Électrique
Semestre n° : 3 (S3)

② Taper les premiers caractères de la commande puis utiliser les touches  ou


.
Après avoir choisi la commande à rappeler, il est toujours possible de la modifier en
se déplaçant avec les touches  et  et en effectuant la correction.
- Des lignes trop longues peuvent être continuées sur plusieurs lignes en utilisant
comme indicateur des points de suspension (…)

Exemple Soit l'opération :


>> x = 2*3+5-1
>> x = 2*3+ …
5-1
I.4 Liste des variables actives
- A tout moment, vous pouvez consulter la liste actuelle des variables de votre
espace de travail :
>> who
>> whos

- La commande whos fournit en plus des informations sur la taille, le nombre


d’éléments et le nombre d’octets occupés. MatLab travaille toujours sur des
données en double précision (soit 8 octets).

- Pour libérer de l'espace mémoire on peut éliminer une variable par clear
nom_de_la_variable ou bien clear all pour libérer tout l'espace mémoire.

Exemple

>> clear x
>> who
>> clear all
>> who

Remarque :

Une ligne de commentaires commence toujours avec le symbole % et à partir


de ce symbole, MatLab ignore complètement cette ligne qui sera utile pour
donner des explications sur la nature de ce qu'on est en train d'exécuter par
exemple.

Exemple

>> x=10+5 % somme de 10 et 5

I.5 Opérations numériques en ligne


Il s’agit ici d’utiliser les opérateurs mathématiques afin de se familiariser avec le
logiciel. Le calcul sur les nombres complexes est aussi abordé.

2020/2021
Module : Info 3 2éme Année Licence Génie Électrique
Semestre n° : 3 (S3)

I.5.1/ Premières commandes


Voici quelques exemples à tester (chercher le résultat avant l'exécution de la ligne et
le commenter) :
>> 3*4
On peut taper plusieurs commandes Matlab sur une même ligne, en les séparant par
une virgule :
>> 5*6, 2^5
>> 3+5*2^5
Les opérateurs arithmétiques ont la priorité habituelle (cf. calculette).

>> 3+5*2^5/5
>> (3+5*2^5)/5
>> (3+5*2^5)/5 ;
>> x = 4
>> y = x^5
>> y/x
>> z = 3*ans, ans, z = 4*z

I.5.2/ Calculs sur les nombre complexes


Dans Matlab, i (ou j) désigne le nombre imaginaire pur de partie imaginaire égale à
1 ; si la variable i a été utilisée entre temps à un autre usage (indice de boucle par
exemple) vous pouvez la réinitialiser par i=sqrt(-1) .
>> i^2
>> j^2
>> z1 = 1+sqrt(3)*i (sqrt : racine carrée)
>> z1c = conj(z1) (donne le conjugué de z1)
>> theta = angle(z1) (donne l’argument de z1 en radian)
>> theta = theta*180/pi (convertir en degré, pi=3.14…)
>> r = abs(z1) (donne le module de z1)
>> realZ1 = real(z1)
>> imagZ1 = imag(z1)

Pour les autres opérations sur les complexes voir l’aide en ligne ou le résumé des
commandes de MatLab fournis à part.

I.5.3/ Opérateurs de comparaisons

== : égal à (x == y)
> : strictement plus grand que (x > y)
< : strictement plus petit que (x < y)
>= : plus grand ou égal à (x >= y)
<= : plus petit ou égal à (x <= y)
~= : différent de (x ~= y)

Le résultat d’une évaluation d’un test logique à l’aide d’opérateurs de comparaisons


peut-être Vrai ou Faux

2020/2021
Module : Info 3 2éme Année Licence Génie Électrique
Semestre n° : 3 (S3)

qui sont respectivement représentés par les entiers 1 et 0 sous MATLAB ( VRAI<==>
1 , FAUX<==> 0 ).
Exemple
>> x = 3 ; y = 4 ;
>> x == y
>> x ~= 3
>> x ~= y
>> x > 3
>> x > y
>> x < y

I.5.4/ Opérateurs logiques


Créer 4 variables booléennes pour tester les différents opérateurs
>> a = 1; b = 0; c = 1; d = 0;
Puis tester les 3 opérateurs logiques :

A) l’opérateur & (ET logique)

>>a&c
>>a&b
>>b&d
>>b&a

Un ET logique entre 2 propositions renvoie VRAI si et seulement si les deux


propositions sont vraies.

B) l’opérateur | (OU logique)

>>a|c
>>a|b
>>b|d
>>b|a

Un OU logique entre 2 propositions renvoie FAUX si et seulement si les deux


propositions sont fausses.

C) l’opérateur ~ (NON logique)

>> ~a
>> ~b
>> ~b|a
>> ~(b|a)

I.6/ Variables prédéfinies


Il existe un certain nombre de variables pré-existantes. Nous avons déjà vu ans qui
contient le dernier résultat de calcul, ainsi que i et j qui représentent √

2020/2021
Module : Info 3 2éme Année Licence Génie Électrique
Semestre n° : 3 (S3)

Il existe aussi pi, qui représente , et quelques autres.

Attention : ces variables ne sont pas protégées, donc si vous les affectez, elles ne
gardent pas leur valeur. C’est souvent le problème pour i et j que l’on utilise souvent
spontanément comme indices de boucles, de telle sorte qu’on ne peut plus ensuite
définir de complexe.

TP N°1 : INTRODUCTION À MATLAB

Exercice 01

1. Tapez x=16 et y=x-3 sur une seule ligne avec affichage des résultats.
2. Tapez z=x+y sans afficher le résultat.
3. Tapez z1=z+1+2+3+4+5+6+…
+7+8+9+10, affichez le résultat.
4. Tapez x1=0 et x2=1/x1 ensuite x3=x1*x2/2 avec affichage des résultats,
commenter.
5. Affichez les détails des variables actives.
6. Effacez les variables x1 et x2 puis affichez les variables actives.

Exercice 02

Evaluez les expressions suivantes :


 3 + 2 * 4^2
 ((3+2)*4)^2
4x 2  2x  3
Y , avec x  3
 x2 1
4R 3
Calculez le volume d’une sphère V  , R  4cm
3
Exercice 03

Tout polynôme peut s'écrire sous la forme d'un vecteur ligne contenant les
coefficients du polynôme rangés par puissance décroissante.

Par exemple le polynôme P = x3 - 6x2 - 72x + 27 a pour écriture : P = [1 -6 -72 27]

Expliquez le rôle de la commande suivante (utilisez le help) et Donnez le résultat


obtenu :

 polyval(P,3)
 root(P)

2020/2021
Module : Info 3 2éme Année Licence Génie Électrique
Semestre n° : 3 (S3)

Support de cours N°2 VECTEURS ET MATRICES

I/ LES VECTEURS
I.1/ Définir un vecteur
On définit un vecteur ligne en donnant la liste de ses éléments entre crochets [ ].
Les éléments sont séparés au choix par des espaces ou par des virgules. On définit un
vecteur colonne en donnant la liste de ses éléments séparés au choix par des points
virgules ( ; ) ou par des retours chariots (touche Entrée).
I.2/ Opérations portant sur les vecteurs
Une particularité de MATLAB est de permettre d'effectuer des opérations de
manière globale sur les éléments d'un vecteur de type réel ou complexe sans avoir à
manipuler directement ses éléments :
 Si K est une variable scalaire et X un vecteur, K*X multiplie tous les éléments
de X par K.
 Si X et Y sont des vecteurs de longueur identique, Z =X ± Y définit le vecteur Z
dont les éléments sont Z(i) =X(i) ± Y(i).
 Le produit des éléments des 2 vecteurs X et Y s'obtient par: Z=X.*Y
 Le quotient est donné par Z=X./Y
Exemple
>> X= [1 2 3];
>> K=5;
>> K*X
ans = 5 10 15

>> Y= [4 5 6];
>> Z=X+Y
Z= 5 7 9
>> Z=X-Y
Z = -3 -3 -3
>> Z=X.*Y
Z = 4 10 18
>> Z=X./Y
Z = 0.2500 0.4000 0.5000

2020/2021
Module : Info 3 2éme Année Licence Génie Électrique
Semestre n° : 3 (S3)

I.3/ Manipulation des vecteurs


Les éléments d'un vecteur peuvent être manipulés grâce à leur indice dans le tableau. Le
kième élément du vecteur x est désigné par x(k). Le premier élément d'un vecteur a
obligatoirement pour indice 1.
Il est possible de manipuler plusieurs éléments d'un vecteur simultanément. Ainsi les
éléments k à l du vecteur x sont désignés par x(k : l). On peut également manipuler
facilement les éléments d'un vecteur dont les indices sont en progression arithmétique.
Ainsi si l'on souhaite extraire les éléments k, k+p , k+2p ,..., k+Np, l, on écrira x(k: p: l).
Exemple
>> x = [1 2 3 4 5 6 7 8 9 10] ;
>> x(5)
ans = 5
>> x(4:10)
ans = 4 5 6 7 8 9 10
>> x(2:2:10)
ans = 2 4 6 8 10
D'une manière général pour définir un vecteur x dont les composantes forment une suite
arithmétique de raison h, de premier terme a et de dernier terme b, on écrira x = a:h:b.
Exemple
>> x = 1.1:0.1:1.9
x=
Columns 1 through 7
1.1000 1.2000 1.3000 1.4000 1.5000 1.6000 1.7000
Columns 8 through 9
1.8000 1.9000

>> x = 1.1:0.4:2
x = 1.1000 1.5000 1.9000
Remarques
 On peut obtenir la longueur d’un vecteur donné (cad le nombre d'éléments d'un
vecteur) grâce à la commande length.
 La commande linspace permet de définir un vecteur x de longueur N dont les
composantes forment une suite arithmétique de premier terme a et de dernier
terme b (donc de pas h=(b-a)/(N-1)). Les composantes du vecteur sont donc
linéairement espacées.
La syntaxe est : x = linspace(a,b,N).
 Si on écrit linspace(a,b) ⇒ N=100 par défaut.

2020/2021
Module : Info 3 2éme Année Licence Génie Électrique
Semestre n° : 3 (S3)

Exemple
>> x = linspace(1.1,1.9,9)
ans =
Columns 1 through 7
1.1000 1.2000 1.3000 1.4000 1.5000 1.6000 1.7000
Columns 8 through 9
1.8000 1.9000
>> Y=length(x)
Y= 9

I.4/ Vecteurs spéciaux

Les commandes ones, zeros et rand permettent de définir des vecteurs dont les éléments
ont respectivement pour valeurs 0, 1 et des nombres générés de manière aléatoire.
ones(1,n) : vecteur ligne de longueur n dont tous les éléments valent 1
ones(m,1) : vecteur colonne de longueur m dont tous les éléments valent 1
zeros(1,n) : vecteur ligne de longueur n dont tous les éléments valent 0
zeros(m,1) : vecteur colonne de longueur m dont tous les éléments valent 0
rand(1,n) : vecteur ligne de longueur n dont les éléments sont générés de manière
aléatoire entre 0 et 1
rand(m,1) : vecteur colonne de longueur m dont les éléments sont générés de manière
aléatoire entre 0 et 1

I.5/ Les fonctions vectorielles

Les fonctions vectorielles les plus utilisées sont :


Soit un vecteur v
sum(v) : somme des éléments de v
prod(v) : produit des éléments de v
mean(v) : moyenne des éléments de v
std (v) : écart type de v
sort(v) : tri du vecteur v
max(v) : le maximum de v
min(v) : le minimum de v
norm(v) : la norme de v
dot(u,v) : produit scalaire de deux vecteurs

2020/2021
Module : Info 3 2éme Année Licence Génie Électrique
Semestre n° : 3 (S3)

II/ LES MATRICES

II.1/ Définir une matrice


Une matrice est un tableau bidimensionnel.
Pour la création d’une matrice, il faut respecter les règles suivantes :
 Les éléments doivent être mises entre des crochets [ ]
 Les espaces ou les virgules sont utilisés pour séparer les éléments dans la même
ligne
 Un point-virgule (ou la touche entrer) est utilisé pour séparer les lignes
Exemple

Soit la matrice suivante : [ ]

Cette matrice peut être écrite en MATLAB avec une des syntaxes suivantes :
>> A = [1,2,3,4 ; 5,6,7,8 ; 9,10,11,12] ;
>> A = [1 2 3 4 ; 5 6 7 8 ; 9 10 11 12] ;
>> A = [1,2,3,4
5,6,7,8
9,10,11,12] ;
>> A=[[1;5;9] , [2;6;10] , [3;7;11] , [4;8;12]] ;
Remarques
 Le nombre d’éléments dans chaque ligne (nombre de colonnes) doit être identique
dans toutes les lignes de la matrice, sinon une erreur sera signalée par MATLAB. Par
exemple :
>> X = [1 2 ; 4 5 6]
Error using vertcat
 Une matrice peut être générée par des vecteurs comme le montre les exemples
suivants :

>> x = 1:4 % création d’un vecteur x


x= 1 2 3 4
>> y = 5:5:20 % création d’un vecteur y
y= 5 10 15 20
>> z = 4:4:16 % création d’un vecteur z
z= 4 8 12 16

2020/2021
Module : Info 3 2éme Année Licence Génie Électrique
Semestre n° : 3 (S3)

>> A = [x ; y ; z] % A est formée par les vecteurs lignes x, y et z


A=
1 2 3 4
5 10 15 20
4 8 12 16
---------------------------------------------------------------------------------------
>> B = [x' y' z'] % B est formée par les vecteurs colonnes x, y et z
B=
1 5 4
2 10 8
3 15 12
4 20 16
---------------------------------------------------------------------------------------
>> C = [x ; x] % C est formée par le même vecteur ligne x 2 fois
C=
1 2 3 4
1 2 3 4
II.2/ Référencement et accès aux éléments d’une matrice
L’accès aux éléments d’une matrice se fait en utilisant la syntaxe générale suivante :
nom_matrice ( positions_lignes , positions_colonnes )
Il est utile de noter les possibilités suivantes :
 L’accès à un élément de la ligne i et la colonne j se fait par : A(i,j)
 L’accès à toute la ligne numéro i se fait par : A(i,:)
 L’accès à toute la colonne numéro j se fait par : A(:,j)
Le symbole deux-points (:) permet d'extraire simplement des lignes ou des colonnes
d'une matrice.
Il suffit de traduire le symbole deux-points (:) par << tout >>.
Exemple
>> A = magic(5)
A=
17 24 1 8 15
23 5 7 14 16
4 6 13 20 22
10 12 19 21 3
11 18 25 2 9

2020/2021
Module : Info 3 2éme Année Licence Génie Électrique
Semestre n° : 3 (S3)

------------------------------------------------------------------------------------------
>> A(1,:)
ans =
17 24 1 8 15
-----------------------------------------------------------------------------------------
>> A(:,2)
ans =
24
5
6
12
18
----------------------------------------------------------------------------------------
>> A(:,:)
ans =
17 24 1 8 15
23 5 7 14 16
4 6 13 20 22
10 12 19 21 3
11 18 25 2 9

Exemples

>> A = [1,2,3,4 ; 5,6,7,8 ; 9,10,11,12] % création de la matrice A


A=
1 2 3 4
5 6 7 8
9 10 11 12
-----------------------------------------------------------------------------------------------
>> A(2,3) % l’élément sur la 2ème ligne à la 3ème colonne
ans =
7
---------------------------------------------------------------------------------------------
>> A(1,:) % tous les éléments de la 1ère ligne
ans = 1 2 3 4

2020/2021
Module : Info 3 2éme Année Licence Génie Électrique
Semestre n° : 3 (S3)

>> A(:,2) % tous les éléments de la 2ème colonne


ans = 2
6
10
-------------------------------------------------------------------------------------------------
>> A(2:3,:) % tous les éléments de la 2ème et la 3ème ligne
ans = 5 6 7 8
9 10 11 12
-------------------------------------------------------------------------------------------------
>> A(1:2,3:4) % La sous matrice supérieure droite
ans = 3 4
7 8
-------------------------------------------------------------------------------------------------
>> A([1,3],[2,4]) % la sous matrice : lignes(1,3) et colonnes (2,4)
ans = 2 4
10 12
-------------------------------------------------------------------------------------------------
>> A(:,3) = [ ] % Supprimer la troisième colonne
A= 1 2 4
5 6 8
9 10 12
--------------------------------------------------------------------------------------------------
>> A(2,:) = [ ] % Supprimer la deuxième ligne
A= 1 2 4
9 10 12
----------------------------------------------------------------------------------------------------
>> A = [A , [0;0]] % Ajouter une nouvelle colonne {ou A(:,4)=[0;0]}
A= 1 2 4 0
9 10 12 0
----------------------------------------------------------------------------------------------------
>> A = [A ; [1,1,1,1]] % Ajouter une nouvelle ligne {ou A(3,:)=[1,1,1,1]}
A= 1 2 4 0
9 10 12 0
1 1 1 1

2020/2021
Module : Info 3 2éme Année Licence Génie Électrique
Semestre n° : 3 (S3)

 Les dimensions d’une matrice peuvent être acquises en utilisant la fonction size.
Cependant, avec une matrice A de dimension m × n le résultat de cette fonction est
un vecteur de deux composants, une pour m et l’autre pour n.
>> d = size(A)
d= 3 4
Ici, la variable d contient les dimensions de la matrice A sous forme d’un vecteur. Pour
obtenir les dimensions séparément on peut utiliser la syntaxe :
>> d1 = size (A, 1) % d1 contient le nombre de ligne (m)
d1 = 3
>> d2 = size (A, 2) % d2 contient le nombre de colonne (n)
d2 = 4
II.3/ Matrices spéciales
Certaines matrices se construisent très simplement grâce à des commandes dédiées.
Citons les plus utilisées:
eye(n) : la matrice identité de dimension n
ones(m,n) : la matrice à m lignes et n colonnes dont tous les éléments valent 1
zeros(m,n) : la matrice à m lignes et n colonnes dont tous les éléments valent 0
magic(n) : permet d'obtenir une matrice magique de dimension n.
Exemple
>> eye(3)
ans = 1 0 0
0 1 0
0 0 1
------------------------------------------------------------------------------------------
>> ones(2,2)
ans = 1 1
1 1
------------------------------------------------------------------------------------------
>> zeros(2)
ans = 0 0
00
------------------------------------------------------------------------------------------
Exercice
Comment échanger les colonnes 2 et 3 de la matrice A, avec A =magic(5) ?

2020/2021
Module : Info 3 2éme Année Licence Génie Électrique
Semestre n° : 3 (S3)

Solution proposée
>> A= magic(5) ; v = A(:,2) ; A(:,2) = A(:,3); A(:,3) = v;
A=
17 1 24 8 15
23 7 5 14 16
4 13 6 20 22
10 19 12 21 3
11 25 18 2 9
Il existe des commandes MATLAB permettant de manipuler globalement des matrices.
 La commande diag permet d'extraire la diagonale d'une matrice.
 Si A est une matrice, v=diag(A) est le vecteur composé des éléments diagonaux
de A.
Exemple
>> A=eye(3)
A= 1 0 0
0 1 0
0 0 1
>> diag(A)
ans = 1
1
1
 On dispose également de la commande tril permet d'obtenir la partie triangulaire
inférieure ( l pour lower) d'une matrice. La commande triu permet d'obtenir la
partie triangulaire supérieure (u pour upper) d'une matrice.
Exemple
>> A = [2 1 1 ; -1 2 1 ; -1 -1 2]
A= 2 1 1
-1 2 1
-1 -1 2
------------------------------------------------------------------------------------------
>> tril(A)
ans =
2 0 0
-1 2 0
-1 -1 2

2020/2021
Module : Info 3 2éme Année Licence Génie Électrique
Semestre n° : 3 (S3)

>> triu(A)
ans =
2 1 1
0 2 1
0 0 2
II.4/ Autres fonctions

inv(A) : Renvoie l’inverse de la matrice carrée A


det(A) : Renvoie le déterminant de la matrice carrée A
A' : Renvoie la transposée de la matrice A à coefficients réels
nnz(A) : Renvoie le nombre d’éléments non nuls de la matrice A.

Exemple

>> A = [3 1 2; -1 4 1; -2 -1 7]
>> det(A)
ans =
110
-----------------------------------------------------------------------------------------
>> inv(A)
ans =
0.2636 -0.0818 -0.0636
0.0455 0.2273 -0.0455
0.0818 0.0091 0.1182
-----------------------------------------------------------------------------------------
>> A'
ans =
3 -1 -2
1 4 -1
2 1 7
-----------------------------------------------------------------------------------------
>> nnz(A)
ans =
9

2020/2021
Module : Info 3 2éme Année Licence Génie Électrique
Semestre n° : 3 (S3)

II.5/ Les opérations de base sur les matrices

L’opération Signification
+ L’addition
- La soustraction
.* La multiplication élément par élément
./ La division élément par élément
.\ La division inverse élément par élément
.^ La puissance élément par élément
* La multiplication matricielle
/ La division matricielle (A/B) = (A*B-1)

Les opérations élément par éléments sur les matrices sont les mêmes que ceux pour les
vecteurs (la seule condition nécessaire pour faire une opération élément par élément est
que les deux matrices aient les mêmes dimensions).

2020/2021
Module : Info 3 2éme Année Licence Génie Électrique
Semestre n° : 3 (S3)

TP N°2 : VECTEURS ET MATRICES


EXERCICE 1
Ecrire un script MATLAB pour :
 Créer un vecteur v1 contenant 20 valeurs équidistantes entre 0 et 2 π.
 Créer un vecteur v2 contenant 15 valeurs équidistantes entre π/12 et 3 π/2.
 Fusionner ces deux vecteurs en un vecteur v3 trié du plus petit au plus grand
élément.
EXERCICE 2

 Donner les commandes MATLAB pour : ( )

 Créer la matrice C= [ A, zeros ( 3,2 ); zeros ( 2,3 ), eye ( 2 ) ]


 Donner les commandes MATLAB pour créer la matrice M de la manière la plus
courte possible
1 π 0 0 0 0 5
M= 1 0 π 0 0 0 6
1 0 0 π 0 0 7
1 0 0 0 π 0 8
1 0 0 0 0 π 9
 Donnez la ligne de commande permettant de créer la matrice suivante en
utilisant les opérations usuelles sur les matrices (utiliser ones, eye et magic).

( ) ( ) ( )

EXERCICE 3
Soit M, la matrice définie par :

La sous matrice M1
Ecrire un script MATLAB qui permet d’extraire :
 L’élément situé dans la troisième ligne et la quatrième colonne.
 Le vecteur L3 contenant tous les éléments de la troisième ligne.
 Le vecteur C4 contenant tous les éléments de la quatrième colonne.
 La sous matrice M1 de la matrice M, constituée à partir de l’intersection de la
deuxième et la troisième colonne avec la deuxième et la troisième ligne.
 Mettre tous les éléments de la deuxième ligne de la matrice M égaux à deux.

2020/2021
Module : Info 3 2éme Année Licence Génie Électrique
Semestre n° : 3 (S3)

Support du cours N°3 GRAPHISME SOUS MATLAB

Introduction
Une des forces de MATLAB est de permettre la représentation graphique sous forme de
courbes ou d'images, des différents objets manipulés.

1. Gestion des fenêtres graphiques


Tout tracé avec Matlab, s’effectue dans une fenêtre graphique que l’on crée par la commande
figure ou quand on exécute une commande de dessin plot. On peut créer autant de fenêtres
graphiques que l’on veut celles-ci étant numérotées de 1 à N au fur et à mesure de leur
création. La fenêtre graphique par défaut et la dernière qui a été créée par figure ou la
dernière activée par une commande de dessin ou sélectionnée avec la souris.

>> figure % crée une fenêtre graphique qui devient la figure par défaut
>> figure(n) % crée une fenêtre graphique numéro n qui devient la fenêtre active.

La commande close permet de fermer la fenêtre graphique active. On ferme une fenêtre
graphique précédemment ouverte en exécutant la commande close (n), où n désigne le
numéro de la figure. Il est également possible de fermer toutes les fenêtres graphiques en
tapant close all.

2. Graphisme 2D

2.1 La commande plot

2.1.1 Tracer une courbe simple


MATLAB permet de tracer facilement le graphe de fonctions scalaires. Cela se fait à l’aide de
la fonction plot. Elle prend en argument des paires de vecteurs de même dimension.
Voici par exemple le moyen d’obtenir le graphe de la fonction cos (3x) sur l’intervalle [0, 2]:

>> x = [0:0.01:2*pi] ; y =cos (3*x) ; plot(x, y);

La commande plot va fournir le graphe suivant :

2020/2021
Module : Info 3 2éme Année Licence Génie Électrique
Semestre n° : 3 (S3)

Le format de base de la fonction plot est en fait le suivant : plot(x,y,’cst’); Où « x » contient


les abscisses, « y » les ordonnées, et « cst » est une chaine de 1 à 3 caractères : cst=’couleur
symbole style de trait’, qui peuvent être choisis selon le tableau suivant :

Style de trait

2.1.2 Superposer plusieurs courbes


On peut tracer les graphes de plusieurs fonctions simultanément.

Exemple

>> x = [0 : 0.01 : 2*pi] ;


>> y =cos (3*x) ;
>> z = sin(2*x) ;
>> plot (x,y,x,z)

 On peut également obtenir ces deux courbes par la succession de commandes :

>> plot(x,y);
>> hold on;
>> plot(x,z);

La seule différence est que cette fois, les deux graphes sont tracés avec la même couleur. hold
on gère le graphique courant de façon que les commandes graphiques à suivre vont s’ajouter

2020/2021
Module : Info 3 2éme Année Licence Génie Électrique
Semestre n° : 3 (S3)

à ce graphique. hold off est la valeur par défaut : dans ce cas une nouvelle commande plot
effacera le graphique existant.

2.1.3 Décoration des graphiques (Améliorer la lisibilité d'une figure)

A/ Légendes

On peut légender notre graphique de la façon suivante :

>> x = [0 : 0.01 : 2*pi] ;


>> plot (x,cos(3*x),x,sin(2*x))
>> legend ('cos(3x)','sin(2x)');

B/ Titre

C’est l’instruction title à laquelle il faut fournir une chaine de caractères. Le titre apparait en
haut de la fenêtre graphique :

>> plot(x,cos(3*x),x,sin(2*x))
>> title(’Fonctions cos 3x et sin 2x’);

C/ Labels

Il s’agit d’afficher quelque chose sous les abscisses et à côté de l’axe des ordonnées :
>> plot(x,cos(3*x),x,sin(2*x))
>> xlabel(’x : axe des absisses’);
>> ylabel(’y : axe des ordonnées’);

2020/2021
Module : Info 3 2éme Année Licence Génie Électrique
Semestre n° : 3 (S3)

D/ Changement de l'échelle

Les axes sont définis automatiquement ; on peut choisir les bornes des coordonnées du graphe
à l’aide de la fonction axis. Essayez par exemple :

>> axis([-1 5 -1.5 1.5]);

E/ Texte dans la figure

On peut aussi écrire un texte donné à une position précise sur la figure grâce à la
commande text. La syntaxe est : text(posx,posy,' un texte ') où posx et posy sont les
coordonnées du point (dans le système associé au dessin).

Exemple

>> x = [0 : 0.01 : 2*pi] ;


>> plot (x,cos(3*x),x,sin(2*x))
>> text (0.5 , 0.8 ,' le graphe des fonctions cos(3x) et sin(2x)')

La commande gtext permet quant à elle de placer le texte à une position choisie sur la figure
à l'aide de la souris. La syntaxe est gtext(' un texte '). Une mire, que l'on déplace en utilisant la
souris, apparaît. Il suffit d'un << clic-souris >> pour que le texte apparaisse à la position
sélectionnée.

Exemple

>> x = [0 : 0.01 : 2*pi] ;


>> plot (x,cos(3*x),x,sin(2*x))
>> gtext(' le graphe des fonctions cos(3x) et sin(2x)')

2020/2021
Module : Info 3 2éme Année Licence Génie Électrique
Semestre n° : 3 (S3)

2.1.4 Courbes paramétrées


Vous remarquez que tout ce que demande plot, c’est un vecteur d’abscisses et un vecteur
d’ordonnées. Les abscisses peuvent donc être une fonction de x plutôt que x lui-même. En
d’autres termes, il est donc possible de tracer des courbes paramétrées :

>> plot(y,z);

On obtient, ainsi une courbe connue sous le nom de courbe de Lissajous.


Afin d'améliorer la lisibilité de cette courbe on va essayer de réduire légèrement l’échelle,
donner un titre et un nom aux axes, et faire apparaître une grille sur le fond :

>> axis([-1.1 1.1 -1.1 1.1])


>> title(’Courbe de Lissajous’);
>> xlabel(’x : axe des abscisses’);
>> ylabel(’y : axe des ordonnées’);
>> grid

2.2 La commande fplot


La commande fplot permet de tracer le graphe d'une fonction sur un intervalle donné. La
syntaxe est: fplot(' nomf ', [xmin , xmax])
Où :
nomf est soit le nom d'une fonction MATLAB incorporée, soit une expression définissant
une fonction de la variable x, soit le nom d'une fonction utilisateur.
[xmin , xmax] est l'intervalle pour lequel est tracé le graphe de la fonction.

2020/2021
Module : Info 3 2éme Année Licence Génie Électrique
Semestre n° : 3 (S3)

Exemple

>> fplot('cos',[0 2*pi])


>> figure
>> fplot('sin',[-2*pi, 2*pi])

2.3 Afficher plusieurs graphiques (subplot)


L’idée générale est de découper la fenêtre graphique en pavés de même taille, et d’afficher un
graphe dans chaque pavé.
On utilise l’instruction subplot en lui spécifiant le nombre de pavés sur la hauteur, le nombre
de pavés sur la largeur, et le numéro du pavé dans lequel on va tracer :

subplot (Nbre pavés sur hauteur, Nbre pavés sur largeur, Numéro pavé)

La virgule peut être omise. Les pavés sont numérotés dans le sens de la lecture d’un texte de
gauche à droite et de haut en bas :

subplot(2,3,4);

Une fois que l’on a tapé une commande subplot, toutes les commandes graphiques suivantes
seront exécutées dans le pavé spécifié.

Exemple 1

>> x = [0 : 0.01 : 2*pi] ;


>> subplot(221)
>> plot(x,sin(x))
>> subplot(222)

2020/2021
Module : Info 3 2éme Année Licence Génie Électrique
Semestre n° : 3 (S3)

>> plot(x,cos(x),x,sin(x),’-.’)
>> subplot(223)
>> plot(cos(x),sin(x))
>> subplot(224)
>> plot(sin(2*x),sin(3*x))

Exemple 2

>> close all


>> figure
>> subplot(2,3,1), fplot('cos',[0 4*pi]), title('cosinus'), grid
>> subplot(2,3,2), fplot('sin',[0 4*pi]), title('sinus'), grid
>> subplot(2,3,3), fplot('tan',[-pi/3 pi/3]), title('tangente'), grid
>> subplot(2,3,4), fplot('acos',[-1 1]), title('arc-cosinus'), grid
>> subplot(2,3,5), fplot('asin',[-1 1]), title('arc-sinus'), grid
>> subplot(2,3,6), fplot('atan',[-sqrt(3) sqrt(3)]), title('arc-tangente'), grid

2020/2021
Module : Info 3 2éme Année Licence Génie Électrique
Semestre n° : 3 (S3)

3. Graphisme 3D
Une courbe en 2D est définie par une liste de doublets (x, y) et une courbe en 3D par une liste
de triplets (x, y, z). Puisque l’instruction plot attendait deux arguments, un pour les x, un pour
les y, l’instruction plot3 en attend trois : les x, les y et les z.

la syntaxe est : plot3(x,y,z,’s’); avec x, y et z sont des vecteurs de même dimension

>> a = pi*[-4:0.04:4];
>> r = linspace(1,6,201);
>> x = r.*(1+cos(a));
>> y = r.*sin(a);
>> z = r;
>> plot3(x,y,z,’k*’);
>> grid;

2020/2021
Module : Info 3 2éme Année Licence Génie Électrique
Semestre n° : 3 (S3)

TP N°3 : GRAPHISME SOUS MATLAB

Exercice 1 (Tracé d’une courbe 2D de type x y avec plot)

Soit le vecteur x = [0 pi/12 2pi/12 …. 2pi]

1. Calculer les vecteurs y1 = 3sin(x) et y2 = -3cos(x) correspondants au vecteur x,


2. Tracer la fonction sinus avec plot(x, y1),
3. Mettre un quadrillage de fond.
4. Tracer sur le même graphique la fonction y2 = -3cos (x) ;(utiliser la commande hold on)
5. Taper figure pour ouvrir une nouvelle fenêtre sans fermer la première, puis tracer
y = exp(3sin (x)).

Exercice 2 (Style de courbe)

En utilisant le même vecteur x = [0 pi/12 2pi/12 … 2pi], tracer sur un même graphique les
trois courbes y1 = cos(x), y2 = cos(x - 0.5) et y3 = cos(x -1), de telle sorte que la courbe 1 soit
une ligne continue rouge, la courbe 2 des cercles bleus, et la courbe 3 des pointillés noirs.

Exercice 3 (Utilisation de subplot)

Soit le vecteur x = [0 pi/10 2pi/10 …. 2pi], définir y1=sin(x) et y2=cos(x), puis utiliser
l’instruction subplot pour tracer sur une même figure les deux graphes des fonctions sinus et
cosinus ; l’un en dessous de l’autre.

Exercice 4 (Tracé d’une courbe 3D)

Tracer une courbe en 3D définit par x=cos(t), y =sin(t) et z =t2 en utilisant plot3 ; avec
t=[0 pi/20….20pi].

2020/2021
Module : Info 3 2éme Année Licence Génie Électrique
Semestre n° : 3 (S3)

Support de cours N°4 PROGRAMMATION SOUS


MATLAB
1. Création de m-files

Les m-files permettent d’enregistrer les scripts sous forme de fichiers texte et servent
en particulier à définir de nouvelles fonctions (une grande partie des fonctions
prédéfinies de MATLAB sont stockées sous forme de m-files dans la toolbox matlab).
Les m-files peuvent être crées par n’importe quel éditeur. Dans les versions récentes
de MATLAB il existe un petit éditeur intégré que l’on peut appeler à partir du menu
file ou à partir de la barre de menu de la fenêtre de commande.

Dans la fenêtre de l’éditeur tapez les lignes suivantes :

% script - essai. m
a = .5;
b = pi;
c=a*b

Sauvegardez le fichier dans le répertoire de travail sous le nom essai.m.

2. Exécution d’un m-file

Pour exécuter le script contenu dans un m-file, il suffit de taper le nom de ce m-file
dans la fenêtre de commande suivi de < entrer >

>> essai

3. Eléments d’écriture de m-files


3.1 Entrées input

La fonction input permet la saisie d’une valeur depuis le clavier. Plus précisément :

 Pour les valeurs numériques  n = input (’message’)

Cette ligne d'instruction affiche message et affecte à la variable n la valeur numérique


entrée au clavier.

 Pour les chaînes de caractères  str = input (’message’,’s’)

Cette ligne d'instruction affiche message et affecte à la variable str la valeur entrée au
clavier considérée alors comme une chaîne de caractères.

Exemple

>> n = input( ’Entrez la valeur de n ’)


>> nom = input( ’Entrez votre nom ’,’s’)

2020/2021
Module : Info 3 2éme Année Licence Génie Électrique
Semestre n° : 3 (S3)

3.2 Affichages disp + num2str

1er cas: La valeur d’une variable est très simplement affichée en faisant évaluer une
expression réduite à la variable elle-même.

Exemple

>> a = [1 2] ;
>> a

2ème cas: La fonction num2str(x) où x est un nombre, retourne la valeur littérale de


ce nombre.

Exemple

>> s = [ ‘la valeur de pi est : ‘ num2str (pi)] ;


>> s

3ème cas: La commande disp(t) où t est une chaîne de caractères ou un tableau,


affiche la valeur de cette chaîne de caractère ou de ce tableau sans faire référence au
nom de la variable. Cette commande sera souvent utilisée avec num2str pour afficher
les valeurs des expressions numériques.

Exemple

>> a = [1 2; 3 4] ;
>> disp (a)
>> disp ([ ’ordre de la matrice a : ’ num2str(size(a,1))] );

4. Structures algorithmiques
Il existe deux structures possibles permettant de réaliser des tests sur les données.
La structure if permet de tester la valeur d'une variable et d'effectuer différents
traitement suivant les cas testés.
La structure switch permet de choisir entre différents cas, et de faire correspondre un
traitement adapté à chacun des cas reconnus.

4.1 Structure if …end et if ….else…..end

La structure if est indispensable à la programmation. Elle est présente dans tous les
langages, mais utilise des syntaxes un peu différentes. En langage Matlab, elle est
déclarée de la manière suivante:

2020/2021
Module : Info 3 2éme Année Licence Génie Électrique
Semestre n° : 3 (S3)

Seul le if ...end est obligatoire, else et elseif sont facultatifs et permettent d'effectuer
des tests supplémentaires.
Le script suivant vous donne un exemple d'utilisation de la fonction if sous Matlab.

Exemple

% Exemple d'utilisation de if, elseif, ... end

N = input ('Rentrez un nombre : ');


if (N < 100)
disp('votre nombre est < 100')
elseif (N = = 100)
disp('votre nombre est 100')
else
disp('votre nombre est > 100')
end

4.2 Switch …case… end

La deuxième structure permet le choix entre différents cas. Le seul test effectué dans
cette structure est donc un test d'égalité. Cette structure est déclarée par :

2020/2021
Module : Info 3 2éme Année Licence Génie Électrique
Semestre n° : 3 (S3)

Le test d'égalité est donc effectué par la fonction par rapport à chaque cas (case).
otherwise est une alternative lorsque la variable testée n'a pas d'égal parmi les
différents cas.

Exemple

% Un exemple d'utilisation de switch

jour = input( 'Quel jour sommes nous ? ','s');

switch jour
case 'lundi'
Jr = 5;
case 'mardi'
Jr = 4;
case 'mercredi'
Jr = 3;
case 'jeudi'
Jr = 2;
case 'vendredi'
Jr = 1;
otherwise
Jr = 0;
end
disp([ 'Encore ' num2str(Jr) ' jours avant le weekend' ])

5. Structures itératives
Il existe deux grands types de boucles : les boucles de type for dont on connaît le
nombre d'itérations et les boucles de type while dont le nombre d'itérations peut
évoluer à l'intérieur de la boucle.

5.1 Répétition : for … end

La structure for se présente comme suit

Exemple

% Un exemple de boucle for

for x = 1 :2:10
v(x) = x*x ;
end
disp(v)

2020/2021
Module : Info 3 2éme Année Licence Génie Électrique
Semestre n° : 3 (S3)

5.2 Boucle for emboîtés

for (L = 1 : 3)
for ( k = 1 : 3)
A(L,k) = L^2 + k^2 ;
end
end
disp (A)

5.3 Itération conditionnelle while . . . end

La structure while se présente comme suit

Exemple

n = 1;
while (2^n <= 100)
n = n + 1;
end
disp (n-1)

2020/2021
Module : Info 3 2éme Année Licence Génie Électrique
Semestre n° : 3 (S3)

TP N°4 : PROGRAMMATION SOUS MATLAB

Exercice 1
Ecrire un script MATLAB qui affecte à une variable R la valeur 20 puis affecte
aux trois variables D, P et S respectivement les valeurs du diamètre, du périmètre et
de la surface d’un cercle dont le rayon est R. On affichera à l’écran le contenu de ces
différentes variables selon le format suivant :
Un cercle de rayon R a pour diamètre D, pour circonférence P et pour surface S.
Exercice 2 (Utiliser la structure if ……..end)
Ecrire un script permettant de résoudre une équation du second degré : ax2+bx+c=0.
Ce script devra demander à l’utilisateur les valeurs de a, b et c ; puis donner le
résultat.
Exercice 3

Ecrire un script MATLAB permettant de lire la valeur de la température de l’eau et


d’afficher son état :
GLACE Si la température inférieure à 0,
EAU Si la température est strictement supérieure à 0 et inférieure à 100,
VAPEUR Si la température supérieure ou égale à 100.

Exercice 4
- Ecrire un script qui permet de calculer N ! en utilisant la boucle while.
- Ecrire un script qui permet de calculer N ! en utilisant la boucle for.

2020/2021

Vous aimerez peut-être aussi