Professional Documents
Culture Documents
TP Matlab
TP Matlab
463
Département de génie électrique et génie informatique Analyse des signaux
Section télécommunications et micro-ondes
Initiation à MATLAB
Les travaux pratiques qui vous seront soumis au cours du trimestre sont planifiés en fonction
de l’utilisation du logiciel Matlab. C’est pourquoi nous vous proposons ici une séance d’initiation
à ce logiciel. Ce fascicule comporte principalement :
– un texte d’introduction qui vous explique l’utilisation des instructions Matlab les plus per-
tinentes pour le cours 3.463 ;
– une série d’exercices suggérés.
Notez que ce texte d’introduction ne présente Matlab qu’en fonction de son utilisation pour les
travaux pratiques du cours 3.463. Les possibilités et applications de ce logiciel sont beaucoup plus
nombreuses. Pour une information plus complète sur Matlab, consultez le manuel de référence
disponible sous la rubrique « help » du logiciel.
Calendrier
1
Table des matières
1 Introduction à Matlab 3
1.1 Préliminaires . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.2 Génération de vecteurs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.3 Boucles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.4 Instructions conditionnelles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.5 Opérations sur les matrices et vecteurs . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.6 Affichage graphique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.7 Multiplication de matrices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
1.8 Nombres complexes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
1.9 Réponse en fréquence d’un filtre . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
1.10 Réponse temporelle d’un filtre . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
1.11 Macro-instructions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
2 Procédure initiale 8
3 Exercices suggérés 8
Exercice 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
Exercice 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
Exercice 3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
Exercice 4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
Exercice 5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
Exercice 6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
Exercice 7 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
Exercice 8 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
Exercice 9 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
2
1 Introduction à Matlab
Matlab est un logiciel interactif permettant d’effectuer des calculs numériques complexes par-
ticulièrement utiles dans le domaine de l’ingénierie. Disponible sur de gros systèmes, il fut adapté
pour l’ordinateur personnel muni d’un coprocesseur mathématique permettant une grande capacité
de calcul.
Notez que Matlab est un logiciel auto-documenté ; des informations relatives à une instruction
en particulier peuvent être obtenues à l’écran en composant « help », suivi du nom de l’instruction.
1.1 Préliminaires
Le logiciel Matlab est conçu en fonction de la manipulation de matrices et de vecteurs (un
vecteur de longueur N est une matrice de dimension 1 × N comportant une rangée et N colonnes).
On génère une matrice en écrivant ses éléments entre crochets, chaque rangée étant délimitée
par un point-virgule. Par exemple, pour générer la matrice
1 2 3
A= 4 5 6
7 8 9
on compose :
A = [1 2 3 ; 4 5 6 ; 7 8 9 ]
On obtiendra la transposée et le déterminant de la matrice A en composant :
B = A.’
C = det(A)
Il est possible d’extraire un élément ou un groupe d’éléments d’une matrice ; par exemple :
D = A(2,1)
E = A([1,2],[2,3])
F = A(:,2)
G = A(2,:)
La matrice D contiendra l’élément situé à l’intersection de la 2e rangée et de la 1re colonne de A.
La matrice E contiendra l’intersection des rangées 1 et 2 et des colonnes 2 et 3 de A :
2 3
E=
5 6
3
Un vecteur peut être utilisé comme indice ; par exemple, en utilisant le vecteur b défini ci-dessus,
l’instruction d = b(30:-1:20) génère le vecteur
d=( 90
|{z} 87 84 . . . 63 60
|{z} )
30e elmt de b 30e elmt de b
Il est possible de générer des vecteurs dont la progression des éléments est logarithmique en
utilisant l’instruction logspace : e = logspace(K1,K2,N) produit un vecteur e dont les N éléments
varient logarithmiquement entre 10K1 et 10K2 . Lorsque le nombre d’éléments n’est pas spécifié, 50
est pris par défaut.
1.3 Boucles
Forme :
for I=x
.
.
.
end
où x est un vecteur comportant les valeurs que doit prendre la variable I à chaque itération.
Exemple :
a=[ ]
for I=1:3
a=[a 0 0 1 1]
end
Après cette boucle, on aura a = (0 0 1 1 0 0 1 1 0 0 1 1). Notez de quelle façon le vecteur a
est construit à l’intérieur de la boucle : la ligne a=[a 0 0 1 1] signifie que l’on place dans a
ce qu’il y avait déjà, suivi des éléments 0 0 1 1. La ligne a=[ ] nous assure que le vecteur a
est bien vide avant l’exécution de la boucle.
4
for I=1:length(a)
if a(I)<0
b=[b a(I)]
else
c=[c a(I)]
end
end
Après cette boucle on aura b = (−1 − 6 − 7) et c = (0 4 9). Remarquez ici de quelle façon
on vérifie une condition sur un seul élément de a à l’intérieur de la boucle.
Remarques
1. Tous les résultats des calculs effectués sont affichés à l’écran ; en ajoutant un point-virgule à
la fin d’une instruction, on annule l’affichage automatique du résultat ;
2. pour faire apparaı̂tre une valeur à l’écran, il suffit de composer son nom seul.
5
title(’Somme de deux sinusoı̈des’)
xlabel(’Temps (secondes)’)
ylabel(’Amplitude (volts)’)
Soit a et b les vecteurs de dimension N dont les composantes respectives sont a n et bn . La somme
s peut être évaluée par la multiplication matricielle suivante :
s = a · bT
6
Après l’opération, M est un vecteur contenant le module de la réponse en fonction des fré-
quences contenues dans W et P est un vecteur contenant le déphasage (en degrés) en fonction
de W.
On peut obtenir le module en dB en effectuant : C = 20*log10(M). C est construit en effec-
tuant l’opération 20 log10 (·) sur chaque élément de M.
Exemple : pour obtenir la réponse en fréquence d’un filtre dont la fonction de transfert est H(s) =
s3 /(s3 +2s2 +2s+1) selon une centaine de points entre les fréquences 0 et 3 rad/s, on utilisera
les instructions suivantes :
N = [1 0 0 0]; ← numérateur : 1s3 + 0s2 + 0s + 0
D = [1 2 2 1]; ← dénominateur: 1s3 + 2s2 + 2s + 1
W = 3*(0:100)/100;
[M,P] = bode(N,D,W);
Les résultats peuvent être ensuite affichés graphiquement à l’aide des instructions vues au
paragraphe 1.6. Dans le cas où seul le résultat graphique nous intéresse, on peut omettre
le membre de gauche de la dernière ligne et écrire uniquement bode(N,D,W) ce qui permet
l’affichage direct du résultat.
1.11 Macro-instructions
Bien que chaque instruction puisse être entrée directement au clavier, il est souvent utile de
grouper un ensemble d’instructions à exécuter qui sera identifié par un seul nom et qui pourra être
conservé et édité à volonté. Ceci est possible en plaçant les instructions dans un fichier dont le nom
se termine par .m.
Exemple : on crée un fichier nommé graphe.m comprenant les lignes suivantes :
% COMMANDE GRAPHIQUE
plot(X,Y)
grid
% AFFICHAGE DU TITRE
title(’RÉSULTATS’)
% IDENTIFICATION DES AXES
7
xlabel(’TEMPS(SEC)’)
ylabel(’AMPLITUDE’)
Chaque fois que graphe est appelé du clavier ou d’un autre fichier, la courbe de Y en fonction
de X est tracée à l’écran avec affichage du titre et identification des axes (on suppose ici que
les vecteurs X et Y ont été préalablement définis avant l’appel de graphe).
Il est possible également de créer ses propres fonctions Matlab auxquelles on doit transmettre
un ou plusieurs paramètres.
Exemple : on crée un fichier nommé sa.m comprenant les instructions suivantes :
function Y=sa(X)
if X==0
Y=1;
else
Y=sin(x)/x;
end
Chaque fois que l’on demande sa(v), on obtient l’évaluation de sin(v)/v. Avant l’exécution
de la fonction, la valeur du paramètre transmis est placée dans X ; le résultat retourné est la
valeur de Y après que toutes les instructions aient été exécutées.
Il est souligner que les variables d’une fonction de type function sont indépendantes des autres
variables, ce qui n’est pas le cas lorsque le fichier ne débute pas par l’instruction function.
Une fonction peut retourner plusieurs résultats.
Exemple :
function [X,Y,Z]=CALCUL(A,B,C,D)
X=A+B+C+D
Y=A*B*C*D
Z=A*B+C*D
Les fichiers .m peuvent être créés à l’aide de l’éditeur de texte de votre choix.
2 Procédure initiale
Le logiciel Matlab, ainsi qu’un éditeur sont disponibles sur le réseau des micro-ordinateurs du
local A-408. En dehors des heures de travaux pratiques, Matlab est disponible au C-539.4.
Une fois Matlab chargé on peut accéder à l’éditeur selon une procédure qui sera expliquée au
laboratoire.
Ne pas oublier pas que les noms des fichiers doivent se terminer par .m pour que Matlab les
reconnaisse.
Remarque : Lorsqu’un fichier function a été modifié à l’aide de l’éditeur pendant une séance
Matlab, n’oubliez pas d’effacer l’ancienne version de la mémoire vive de l’ordinateur en
composant clear, suivi du nom de la fonction ; vous êtes ainsi assurés que Matlab ira lire
la nouvelle version sur le disque.
3 Exercices suggérés
Note : habituez-vous dès maintenant aux manipulations de fichiers à l’aide de l’éditeur.
8
Exercice 1
1 2 3
1. Générez la matrice A = 4 5 6 .
7 8 9
2. Générez la transposée de A.
3. Trouvez le déterminant de A.
Exercice 2
1. Générez le vecteur a = (0 1 2 3 4 5 6)
2. À partir du vecteur a, générez le vecteur b = (0 1 4 9 16 25 36) en une seule opération, sans
utiliser de boucle for ... end.
3. Calculez sans boucle la somme
X 6
s= bn e−an /10
n=0
où an et bn sont les éléments de a et b.
Exercice 3
1. Soit le vecteur a défini par
a = (3 + 4i 5 + 9i − 3 − 4i − 5 − 9i 3 − 4i 5 − 9i − 3 + 4i − 5 + 9i).
À l’aide d’une boucle for ... end et d’une instruction conditionnelle if ... end, générez
le vecteur b contenant les éléments de a dont la partie imaginaire est positive.
2. Générez maintenant le vecteur b sans utiliser de boucle for ... end. Vous pourrez faire
appel à l’instruction find.
3. Générez le vecteur m contenant les modules des éléments du vecteur a.
4. Générez le vecteur p contenant les phases des éléments du vecteur a.
Exercice 4
Soit H(s) la fonction de transfert d’un filtre définie par :
1
H(s) = .
s4 + 2, 61s3 + 3, 41s2 + 2, 61s + 1
Remarques
Les échelles sont choisies automatiquement. En cas de besoin, il est toutefois possible d’impo-
ser une échelle d’affichage en employant l’instruction axis([xmin xmax ymin ymax]) après une
commande plot. On peut annuler cette échelle en composant axis(’auto’).
Pour imprimer un graphique affiché à l’écran, utilisez l’option PRINT sous la rubrique FILE.
9
Exercice 5
En une seule instruction et sans utiliser de boucle, générez les vecteurs :
1. a = (0 5 10 15 ... 100)
2. b = (0.1 ... 10), dont la progression des éléments est logarithmique.
Exercice 6
1. À l’aide de la fonction Matlab [M,P]=bode(NUM,DEN,W), trouvez le diagramme de Bode du
filtre dont la fonction de transfert est :
1
H(s) = .
s4 + 0, 58s3 + 1, 17s2 + 0, 40s + 0, 18
Comme vecteur de fréquences, on utilisera le vecteur b obtenu à l’exercice précédent.
2. Transformez M afin d’avoir le module en dB.
3. Affichez graphiquement le module en fonction de la fréquence en utilisant l’instruction
semilogx(W,M) et les commandes d’affichage du titre et d’identification des axes.
Exercice 7
Soit le filtre représenté par la fonction
1
H(s) =
s3 + 2s2 + 2s + 1
Obtenez graphiquement sa réponse temporelle à la fonction échelon. Le vecteur des instants où
la réponse est calculée pourra être spécifié par l’instruction T=0:4E-3:0.2, mais cette définition
pourra être modifiée si vous ne la jugez pas adéquate.
Exercice 8
Composez une macro-instruction qui, à partir d’un vecteur d’entrée représentant un polynôme,
sélectionne les racines situées à gauche de l’axe imaginaire.
Exercice 9
Sans utiliser de boucle, modifiez la fonction sa du paragraphe 1.11 de façon à ce que le paramètre
d’entrée X puisse être un vecteur plutôt qu’une valeur scalaire.
10