Vous êtes sur la page 1sur 21

ELE108 & ELE109 Aide MATLAB

Conservatoire National des Arts et Métiers

• ELE108 : Techniques avancées en électronique


analogique et numérique (1)

• ELE109 : Techniques avancées en électronique


analogique et numérique (2)

------------------------------------------------------------------------

Aide MATLAB

------------------------------------------------------------------------

-1-
ELE108 & ELE109 Aide MATLAB

Préambule

Matlab pour « MATtrix LABoratory », est un logiciel de calcul numérique développé par la
société mathworks (http://fr.mathworks.com/). Il est particulièrement performant pour le
calcul matriciel et dispose de grandes capacités graphiques pour, la synthèse et l’analyse de
modèles/signaux complexes. Son fonctionnement repose sur un langage de programmation
propre qui permet un développement très rapide d’algorithmes et de programmes. L'aspect
modulaire est l'un des plus grands atouts de MATLAB : l'utilisateur peut lui-même définir ses
propres fonctions, en regroupant des instructions MATLAB dans un fichier portant le suffixe
".m".

-2-
ELE108 & ELE109 Aide MATLAB

1. Espace de travail
L’interface MATLAB est divisée en plusieurs fenêtres.

Nous pouvons citer, au moins, les 3 fenêtres suivantes :

1. Le Workspace : permet de gérer les variables utilisées,


2. Command History : indique les dernières commandes effectuées,
3. Command Window : fenêtre d’interaction avec Matlab.

2. Notions élémentaires
Matlab fonctionne de manière similaire à un shell Linux ou DOS. L’utilisateur rentre des
commandes, au niveau du Command Window, et Matlab les exécute.
>> 1+1

ans =

-3-
ELE108 & ELE109 Aide MATLAB

Le symbole [>>] indique à l’utilisateur où il faut rentrer la commande.

Il peut parfois être utile de stocker une valeur dans une variable pour l’utiliser plus tard.
L’affectation d’une variable en Matlab se fait au moyen du signe [=].

>> a=2

a=

>> b='Bienvenue dans MATLAB'

b=

Bienvenue dans MATLAB

Certaines constantes sont prédéfinies par défaut dans ce logiciel. Les constantes les plus utilisées
sont :

>> pi

ans =

3.1416

>> i

ans =

0 + 1.0000i

>> j

ans =

0 + 1.0000i

>> eps
-4-
ELE108 & ELE109 Aide MATLAB

ans =

2.2204e-016

Pour accéder à l’aide de MATLAB, vous pouvez saisir dans le « Command Window », la
commande « Help » qui donne la liste de toutes les commandes classées par thèmes.

Vous pouvez également accéder à l’aide MATLAB comme indiqué par la figure suivante :

Comme vous le constatez, au niveau de la fenêtre « Command History », Matlab garde en


mémoire les dernières commandes effectuées. On peut accéder à ces commandes
directement dans la fenêtre « Command Window » au moyen des touches [↑] et [↓]. Ceci
est particulièrement utile pour répéter la dernière commande exécutée.

Matlab offre plusieurs solutions de sauvegarde des calculs et des programmes réalisés :

• Le Workspace : On peut sauver l’état de la session en cours dans un fichier « .mat ».


Cette sauvegarde est réalisée dans la fenêtre principale, File → Save Workspace As,
et vous choisissez l’emplacement et le nom de votre fichier. Matlab sauvegarde ainsi
le nom et la valeur de chacune des variables.
• Les m-files : Il s’agit d’un fichier dans lequel on écrit les programmes et les fonctions
regroupant des commandes (cf. paragraphe 6.1). C’est une approche très utile pour
aborder des problèmes plus complexes et éviter de retaper les mêmes commandes
plusieurs fois.

MATLAB est un logiciel modulaire faisant appel, en fonction des traitements envisagés, à une
bibliothèque donnée. Ces bibliothèques sont connues sous le nom de Toolbox ou boite à
outils.
-5-
ELE108 & ELE109 Aide MATLAB

Toutes les fonctions courantes et beaucoup parmi les moins courantes (dédiées à des
applications spécifiques) existent dans les différents Toolbox de MATLAB. La plupart d'entre
elles fonctionnent en complexe.

Pour appliquer une fonction de type

- trigonométriques et inverses : sin, cos, tan, asin, acos, atan


- hyperboliques (on rajoute "h") : sinh, cosh, tanh, asinh, acosh, atanh
- racine, logarithmes et exponentielles : sqrt, log, log10, exp
- erreur : erf, erfc

à une valeur, il faut mettre cette dernière entre parenthèses.

Exemple :

>> sin(pi/12)

ans =

0.2588

Pour les fonctions moins usuelles, il est recommandé de faire appel à l’aide MATLAB avec la
commande :
>> help nom de la fonction

Dans le reste des TP de cette UE, on n’utilisera, en plus des fonctions usuelles, que celles
incluses dans le Toolbox « Signal processing » et « Image processing ».

-6-
ELE108 & ELE109 Aide MATLAB

3. Matrices et tableaux

La structure de données de Matlab est le tableau1 ; même un scalaire est considéré comme
une matrice 1 × 1. Toutes les fonctions et opérations relatives aux tableaux sont très
optimisées et sont à utiliser aussi souvent que possible dans vos programmes MATLAB.

3.1. Saisie d'une matrice

a=[1 2 ;3 4]

On obtient
a =

1 2

3 4

3.2. Génération d'une matrice de 1, de 0, ou d'une matrice unité

zeros(n,m) matrice n par m de zeros

ones(n,m) matrice n par m de un

eye(n) matrice identité n par n

3.3. Accès aux éléments d'une matrice

Les indices des tableaux (matrices) MATLAB commencent à 1 et non pas 0 comme en
langage C par exemple.

Ainsi, pour
A=

[1 2 ;3 4]

a(1,1)=1 a(1,2)=2 a(2,1)=3 a(2,2)=4

3.4. Extraction d'une ligne, colonne, ou sous-matrice

Pour accéder à une ligne entière

a(1,:) . On sélectionne la première ligne et toutes les colonnes.

Si on a
b=[1 2 3 4 5 6 ; 7 8 9 10 11 12 ; 13 14 15 16 17 18]
-7-
ELE108 & ELE109 Aide MATLAB

On peut sélectionner une sous matrice ainsi

c=b(1:2 ,3:5 ) qui correspond aux lignes 1 à 2 et aux colonnes 3 à 5

d=b(1:2,1:2:6) correspond aux lignes 1 à 2 et aux colonnes 1 à 6 par pas de 2 soit 1, 3


et 5
3.5. Redimensionnement de la matrice
Si on a :
b =

1 2 3 4 5 6

7 8 9 10 11 12

13 14 15 16 17 18

e=b(:) correspond à une matrice colonne comportant 18 lignes.

Les colonnes de la matrice sont mises bout à bout pour obtenir ceci :
1

13

14

15

10

16

11

17

12

18

autre fonction utilisable : reshape


-8-
ELE108 & ELE109 Aide MATLAB

3.6. Obtenir la taille d'une matrice ou d'un vecteur

Obtenir la taille d'une matrice


>> size(b)

ans =

3 6

Obtenir la longueur d'un vecteur


>> length(e)

ans =

18

3.7. Redimensionnement automatique des tableaux

L'exemple ci-dessous montre comment MATLAB redimensionne au fil des saisies la taille
d'une matrice. Il est toutefois préférable de dimensionner dès le départ la matrice à la taille
maximale que l'on utilisera.

Ici, on aurait par exemple initialisé la matrice avec

a=zeros(3,5);

Exemple :
>> a=56

a =

56

Matrice 1x1

>> a(2)=87

a =

56 87

La matrice est redimensionnée à 1x2 pour tenir compte du nouvel élément

>> a(5)=12

a =

-9-
ELE108 & ELE109 Aide MATLAB

56 87 0 0 12

La matrice est redimensionnée à 1x5 pour tenir compte du nouvel élément. Les éléments
non précisés sont par défaut mis à 0

>> a(3,2)=65

a =

56 87 0 0 12
0 0 0 0 0
0 65 0 0 0
Comme précédemment, la matrice est redimensionnée pour accepter le nouvel élément et
on trouve des 0 pour tous les éléments non précisés.

3.8. Transposition d'une matrice

Faire une transposition sur une matrice (ou un vecteur)

Si on a
b=

1 2 3 4 5 6

7 8 9 10 11 12

13 14 15 16 17 18

b=b.' donne

1 7 13

2 8 14

3 9 15

4 10 16

5 11 17

6 12 18

Remarque : b.' est la transposition d'une matrice comme montrée ci-dessus, b' est la
transposition hermitienne. En plus de l'opération de transposition précédente, chacun des
éléments de la matrice est remplacé par sa valeur conjuguée.

- 10 -
ELE108 & ELE109 Aide MATLAB

3.9. Supprimer des éléments d'une matrice

Pour un vecteur A(i:j)=[] supprime les éléments i à j du vecteur

Exemple :
A = [ 1 2 3 4 5 6 7]

A(3:4)=[] produit

A = 1 2 5 6 7

Pour une matrice rectangulaire

A(i:j,:)=[ ] supprime les lignes i à j inclus

A(:,i:j) supprime les colonnes i à j inclus

3.10. Concaténation de matrices

On peut concaténer des matrices A et B de la façon suivante

C=[A B] produira une matrice de la forme A B


A et B doivent avoir le même nombre de lignes

Exemple :
A=[1 2 3 ; 4 5 6]

B=[0 7 ; 8 5]

C=[A B] produit

C =

1 2 3 0 7

4 5 6 8 5

 A
➢ C=[A ; B ] produira une matrice de la forme  
B 

A et B doivent avoir le même nombre de colonnes

Exemple :
A= [1 2 ; 3 4]

B=[87 98];

C=[A;B] produit

- 11 -
ELE108 & ELE109 Aide MATLAB

C =

1 2

3 4

87 98

3.11. Opération sur des matrices, multiplication matricielle,


multiplication point à point

Soit deux matrices A et B

C=A*B correspond à la multiplication matricielle (Les tailles doivent être compatibles)

C=A.*B correspond à une multiplication deux à deux des éléments correspondants de


chaque matrice

Exemple :
a=[1 2 ; 3 4]

• multiplication matricielle
a*a =

7 10

15 22

• multiplication point à point


a.*a =

1 4

9 16

3.12. Application d'une fonction à une matrice ou un vecteur

Soit A une matrice constituée des éléments Ai , j

B=sin(A) donne une matrice de taille identique à A constituée des éléments Bi , j = sin( AI , j )

3.13. Application d'un opérateur booléen sur une matrice

soit le vecteur f =[ 1 3 17 6 9 10 56 ];
f = 1 3 17 6 9 10 56

>> test = f>=10

- 12 -
ELE108 & ELE109 Aide MATLAB

test = 0 0 1 0 0 1 1

3.14. Comment trouver la position des éléments satisfaisant une


condition dans une matrice

find retourne la position des éléments non nuls


>> find(test) % test est le vecteur calculé précédemment

ans = 3 6 7

find(f>=10) est équivalent à find(test) et retourne donc la position des éléments satisfaisant
la condition booléenne ici (f>=10)

3.15. Compter des éléments dans une matrice satisfaisant une


condition booléenne

Pour compter le nombre d'éléments satisfaisant une condition, par exemple valeur
supérieure ou égale à 10

Nombre = sum(f>=10) pour un vecteur

Nombre = sum(sum(f>=10)) pour une matrice quelconque

Dans le cas d'une matrice rectangulaire, de N lignes par M colonnes, sum effectue la somme
colonne par colonne et retourne un vecteur d'une ligne par M colonnes

Exemple :
a = 1 2

3 4

sum(a) = 4 6

sum(sum(a)) = 10 dans le cas d'un vecteur sum renvoie la somme de tous les
éléments.

3.16. Modulo, addition modulo 2

On peut utiliser la fonction mod ou rem. Voir aide pour les différences.

Si on manipule des nombres positifs, il n'y a pas de différence.

Soit deux matrices A et B


A=[0 1 1 0 1 0 1]

B=[1 0 1 1 0 0 1]

- 13 -
ELE108 & ELE109 Aide MATLAB

A+B = 1 1 2 1 1 0 2

rem(A+B,2)= 1 1 0 1 1 0 0

3.17. Dupliquer les lignes d'une matrice

Soit une matrice a=[1 2 3 4];

Si on veut obtenir une matrice b comportant 2 lignes identiques, on écrit


b=a([1 1],:)

qui produit
b =

1 2 3 4

1 2 3 4

a([1 1],:) permet de lire deux fois la ligne 1.

De façon générale, si on veut dupliquer N fois


b=a(ones(1,N),:)

3.18. Insérer des 0 dans un vecteur

Soit la matrice a=[1 2 3 4];

On concatène avec z=zeros(2,4);


z =

0 0 0 0

0 0 0 0

b=[a ; z]

puis on redimensionne et on transpose


b=b(:).' ce qui donne :

b = 1 0 0 2 0 0 3 0 0 4 0 0

De façon générale pour ajouter N zéros à un vecteur ligne a


b=[a ; zeros(N,length(a)) ];

b=b(:).';

3.19. Prélever un élément sur N dans un vecteur

- 14 -
ELE108 & ELE109 Aide MATLAB

Soi*t x =[ 1 2 3 4 5 6 7 8 9 10]

Si on veut sélectionner un élément sur 2


y=x(1:2:10)

donne
y =

1 3 5 7 9

D'une façon générale, si on veut extraire 1 élément sur N dans un vecteur x


quelconque
y = x(1:N:length(x))

4. Graphisme
4.1. Calcul d'une fonction

Ceci permet de calculer facilement une courbe.

Exemple : supposons que l'on veuille tracer la fonction f ( x) = x 2 + x sin x dans l'intervalle [0
1];

x=[0:0.01:1]; % On définit le vecteur x qui contient 101 points répartis entre 0 et 1 par pas de
0,01

y=x.^2+ x.*sin(x);% on calcule le vecteur

4.2. Tracé d'une courbe, quadrillage, superposition de 2 courbes

Soit une courbe correspond à une fonction y = f (x)

Soit x1 le vecteur contenant les abscisses et y1 les ordonnées correspondantes.

plot(x1,y1) produit l'ouverture d'une fenêtre si aucune fenêtre d'affichage ne l'était


auparavant et l'affichage de la courbe avec un cadrage automatique

➢ Ajout d'un quadrillage


grid on

Permet d'ajouter un quadrillage. A faire après le tracé de la courbe

➢ Superposition d'une deuxième courbe

Soit x2 le vecteur contenant les abscisses et y2 les ordonnées d'une deuxième courbe.
- 15 -
ELE108 & ELE109 Aide MATLAB

Si on veut afficher cette deuxième courbe dans la même figure, sans que la précédente ne
s'efface, on fait appel à « hold on » avant de tracer.
hold on

plot(x2,y2)

➢ Ajout de légende
Legend(‘Variable 1’, ‘Variable 2’)

➢ Ajout de titre
title(‘Titre de la figure’)

Pour plus d’options taper « help plot ».

4.3. Tracé d'une deuxième courbe dans une autre fenêtre

L'instruction plot affiche la courbe dans la dernière fenêtre d'affichage sélectionnée ou si


aucune fenêtre d'affichage n'existe en ouvre une.

Si on veut tracer une courbe dans une autre fenêtre, on utilise l'instruction figure, ce qui
donne par

Exemple :
figure

plot(x2,y2)

4.4. Affichage simultanée de 2 courbes

plot(x1,y1,'-',x2,y2,'- -')

Cette instruction provoque l'affichage simultané des 2 courbes sur un même système d'axe.

Le '-' indique que la première courbe sera tracée en trait plein et '- -' que la deuxième courbe
sera tracée en trait pointillé.

MATLAB attribue des couleurs par défaut aux courbes. Il est possible de modifier la
couleur, le style du trait et celui des points, en spécifiant après chaque couple (abscisse,
ordonnée) une chaîne de caractères (entre primes) pouvant contenir les codes suivants
(obtenus en tapant help plot.

- 16 -
ELE108 & ELE109 Aide MATLAB

4.5. Affichage de plusieurs courbes dans une même fenêtre


subplot(2,1,1), plot(x1,y1)
subplot(2,1,2), plot(x2,y2)

Cette instruction provoque l'affichage de 2 courbes dans une même fenêtre.

4.6. Tracé en semilog

A voir aussi semilogx, semilogy qui s'utilise comme plot et qui permet d'avoir un axe
logarithmique soit en x soit en y.

- 17 -
ELE108 & ELE109 Aide MATLAB

5. Boucles (for, while)


5.1. La boucle for

for compteurdeboucle=1:N

Instructions…

end

La boucle s'exécute N fois.

La forme générale du for est

for variable=vecteur

Instructions…..

end

La boucle s'exécute autant de fois qu'il y a d'éléments dans le vecteur et la variable


prend successivement les différentes valeurs des éléments du vecteur

Exemple :

a=0:0.1:0.2; ce vecteur comporte 3 éléments [0 0.1 0.2]

for b=a

b provoque l'affichage de b

end fin de la boucle for

donne
b =0

b =0.10000000000000

b = 0.20000000000000

5.2. La boucle while

while condition

instruction

end

Cette boucle s'exécute tant que la condition est vérifiée


Exemple :
a=0;

- 18 -
ELE108 & ELE109 Aide MATLAB

while a<1.5

a=a+0.4 on ajoute 0,4 à chaque itération et on affiche le résultat

end

donne
a =0.40000000000000

a = 0.80000000000000

a =1.20000000000000

a = 1.60000000000000

La boucle s'arrête dès que la valeur de « a » excède 1.5.

6. Programmation
6.1. Travail avec les « .m files »

Afin d’éviter d’avoir à retaper une série de commandes, il est possible de créer un
programme MATLAB, connu sous le nom de « fichier .m ».

Il s’agit, à l’aide de l’éditeur de MATLAB (Menu « Home ! New ! Script »), de créer un
fichier en format texte qui contient une série de commandes MATLAB.

- 19 -
ELE108 & ELE109 Aide MATLAB

Une fois le fichier sauvegardé (sous le nom nomdefichier.m par exemple), il s’agit de
l’appeler dans la fenêtre Commande Window de MATLAB à l’aide de la commande :
>> nomdefichier

6.2. Fonctions

Une fonction est un m-file particulier : on lui passe des arguments et il retourne une ou
plusieurs valeurs. Il faut simplement commencer le m-file par le mot function, lui préciser
les valeurs de retour et les arguments.

La forme générale de la déclaration d’une fonction est


function nom_variable_retour = nom_fonction ( nom_paramètres )

Exemple : suppression de la valeur moyenne d’un signal

function y = no_offset (x)


y=x-mean(x); % suppression de la valeur moyenne

Remarques importantes :
• le m-file et la fonction doivent avoir le même nom,
• il peut y avoir plusieurs paramètres (il suffit de les séparer par des virgules),
• il peut y avoir plusieurs variables de retour (les mettre entre crochets et les séparer
par des virgules),
• le « ; » après une instruction donnée permet d’éviter l’affichage des résultats des
calculs intermédiaires au niveau du Command Window,
• les commentaires doivent commencer par « % ».

- 20 -
ELE108 & ELE109 Aide MATLAB

7. Tutoriaux
Des tutoriaux en anglais de courte durée sont aussi disponibles sur youtube et
permettent de vous guider, si nécessaire.

Learning Module YouTube Link


What is MATLAB? http://youtu.be/g3WNkUXUUeo
Qu’est ce que MATLAB? (1:23)
The MATLAB Environment http://youtu.be/UmW585VZcPE
L’environnement de MATLAB (1:15)
MATLAB Variables http://youtu.be/Pw4uu1p9Zm4
Les variables dans MATLAB (2:44)
Complex Numbers http://youtu.be/2UDYbDIw6t4
Les nombres complexes (2:21)
MATLAB commecalculateur http://youtu.be/WOP5RtOWH4M
MATLAB as a Calculator (3:26)
Mathematical Functions http://youtu.be/vHubCIx4oZc
Les fonctions Mathématiques (2:43)
Adding Files to the Search Path (1:57) http://youtu.be/cf4LK3BfjAY
Création de vecteurs via des concaténations http://youtu.be/gjdJuSxZb_Y
Creating Vectors via Concatenation (1:13)
Création de vecteurs uniformément espacés http://youtu.be/26Eq5_F_l0U
Creating Uniformly Spaced Vectors (Colon
Operator) (2:11)
Création de vecteurs uniformément espacés http://youtu.be/cXAn_ct51ns
Creating Uniformly Spaced Vectors
(LINSPACE) (1:28)
Création de matrices http://youtu.be/wLs8aYBKUlY
Array Creation Functions (1:57)
Accéder aux elements d’un vecteur http://youtu.be/sVqhSjM3-W8
Accessing Elements of a Vector (2:04)
Tracé de figures http://youtu.be/lVC43dRmbr4
Line Plots (1:43)
Annotation des figures http://youtu.be/oJwaIqX6VqA
Annotating Graphs (1:19)
Addition et multiplication de signaux http://youtu.be/jKM5s-Ifz70
Vector Arithmetic (3:57)
Boucle de type « for » http://youtu.be/5UIpfHvQkR8
For Loop (2:01)
Boucle de type « while » http://youtu.be/j7eSbFipF9A
While Loop (2:26)
Génération de signaux aléatoires http://youtu.be/EZsEKdrJId8
Generating Random Numbers (2:28)
Transformée de Fourier discrète http://youtu.be/Rq72urkQ5ms
Discrete Fourier Transform (3:55)

- 21 -

Vous aimerez peut-être aussi