Cours MATLAB et Simulink appliqu© au traitement vid©o sur DSP
SÉANCE #1 (TP0) INTRODUCTION À MATLAB ET SIMULINK · École polytechnique de montrÉal ....
Transcript of SÉANCE #1 (TP0) INTRODUCTION À MATLAB ET SIMULINK · École polytechnique de montrÉal ....
ÉCOLE POLYTECHNIQUE DE MONTRÉAL
DÉPARTEMENT DE GÉNIE ÉLECTRIQUE
HIVER 2016
COURS ELE2700 ANALYSE DES SIGNAUX
SÉANCE #1 (TP0)
INTRODUCTION À MATLAB ET SIMULINK
section #1 section #2
Le logiciel MATLAB ainsi que l'outil Simulink seront utilisés pour réaliser les travaux pratiques
du cours d'Analyse des signaux tout au long du trimestre. Le présent document comporte les
trois parties suivantes:
1. Principales commandes MATLAB utilisées dans le cadre du cours d'Analyse des
signaux;
2. Introduction à l’outil de simulation Simulink;
3. Travail à réaliser au laboratoire lors de la première séance de travaux pratiques.
À noter que les deux premières parties ne constituent pas un document de référence exhaustif sur MATLAB et Simulink. D'autres manuels plus détaillés sont disponibles à la COOP ou sur Internet. Pour la partie 3, voir comme rappel Chapitre 5 pages 248 à 251 du livre du cours, "Signals, Systems, Transforms and Digital Signal Processing with MATLAB ©", (M. Corinthios), Taylor and Francis CRC Press 2009.
ELE2700 – ANALYSE DES SIGNAUX / TRAVAUX PRATIQUES / SÉANCE #1 TP0
- 2 -
TABLE DES MATIÈRES
1. Introduction à MATLAB
1.1 Matrices et vecteurs …………………………………….……………………. 3
1.2 Génération automatique de matrices et de vecteurs ….………………………. 4
1.3 Opérations sur les matrices et les vecteurs …….…………………….……….. 5
1.4 Nombres complexes ………………………..……………………….……….. 6
1.5 Affichage graphique ……………………………………………….…………. 7
1.6 Programmation de fonctions …….…………………………………………… 8
1.7 Exercices suggérés …………………………..……………………………….. 9
1.8 Liste des commandes utilisées le plus fréquemment ……………….………… 10
2. Introduction à Simulink
2.1 Simulation à l'aide de Simulink …………….………………….…………….. 14
2.2 Récupération des données ……………………………..………….………..…. 18
3. Travail à réaliser au laboratoire ……………………..……………………………… 20
Ce document a été rédigé avec la précieuse collaboration de Patricia Gilbert.
Les professeurs, Michael J. Corinthios
Michel Lemire
ELE2700 – ANALYSE DES SIGNAUX / TRAVAUX PRATIQUES / SÉANCE #1 TP0
- 3 -
Début de chaque session Au début de chaque session créez un dossier personnel sur le disque u :
Ouvrir Matlab. Sélectionnez votre dossier personnel que vous venez de créer sur le disque
u : comme l’adresse de destination. Ainsi tout script que vous créerez sera sauvé sur votre
dossier personnel. Simulink pourra ainsi accéder les données sur le WorkSpace générées
par vos programmes de Matlab.
ELE2700 – ANALYSE DES SIGNAUX / TRAVAUX PRATIQUES / SÉANCE #1 TP0
- 4 -
1. INTRODUCTION À MATLAB
MATLAB est un logiciel interactif permettant d’effectuer des calculs numériques complexes
particuliè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
commande donnée peuvent être obtenues à l’écran en composant help , suivi du nom de la
commande.
1.1 Matrices et vecteurs
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, c’est-à-dire comportant une ligne et N
colonnes). On génère une matrice en écrivant ses éléments entre crochets, chaque ligne étant
délimitée par un point-virgule. Par exemple, pour générer la matrice
1 2 34 5 67 8 9
A = ,
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 par les commandes B=A.’ (ou
B=A’) et C=det(A) respectivement.
ELE2700 – ANALYSE DES SIGNAUX / TRAVAUX PRATIQUES / SÉANCE #1 TP0
- 5 -
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 ligne et de la 1ère colonne de A.
La matrice E contiendra l’intersection des lignes 1 et 2 et des colonnes 2 et 3 de A :
2 35 6
E =
La matrice F de dimension 3×1 sera formée de la 2e colonne de A (car le symbole «:» dans
A(:,2) désigne toutes les lignes), tandis que la matrice G de dimension 1×3 sera formée de la
2e ligne de A (car le symbole «:» dans A(2,:) désigne toutes les colonnes). Que contiendra la
matrice H après l’exécution de la commande suivante : H=A([3 1],:)
1.2 Génération automatique de matrices et de vecteurs
Pour générer un vecteur, la commande est : A=AI:I:AF, où AI est la valeur initiale, I est
l’incrément et AF est la valeur finale. Si I est omis, un incrément de 1 est pris par défaut.
Exemples : A=1:0.25:2 produit A=[1 1.25 1.5 1.75 2]
B=(1:50)*3 produit B=[3 6 9 … 147 150]
C=10:-1:5 produit C=[10 9 8 7 6 5]
Un vecteur peut être utilisé comme indice; par exemple, en utilisant B défini ci-dessus,
D=B(30:-1:20) produit D=[90 87 84 … 63 60]
30e élément de B
20e élément de B
ELE2700 – ANALYSE DES SIGNAUX / TRAVAUX PRATIQUES / SÉANCE #1 TP0
- 6 -
Il est à noter que le premier élément d'un vecteur est désigné par l'indice 1. Ainsi, la commande
D(1) retournera 90 comme réponse, tandis que D(0) donnera un message d'erreur. Un indice
ne peut pas être négatif.
Il est possible de générer des vecteurs dont la progression des éléments est logarithmique :
E=logspace(K1,K2,N). Après l’opération, E sera un vecteur dont les N éléments varient
selon une progression logarithmique entre 10K1 et 10K2. Lorsque le nombre d’éléments n’est pas
spécifié, 50 est pris par défaut.
Il existe un certain nombre de matrices prédéfinies dans MATLAB. Les plus courantes sont:
eye(n) la matrice identité n × n
ones(m,n) la matrice m × n dont tous les éléments valent 1
zeros(m,n) la matrice m × n dont tous les éléments valent 0
rand(m,n) une matrice m × n dont les éléments sont générés de manière aléatoire
Si m=n, il suffit de spécifier une seule valeur de dimension: ones(n) est la matrice carrée n × n
dont tous les éléments valent 1.
1.3 Opérations sur les matrices et les vecteurs
Dans MATLAB, les opérations mathématiques peuvent être effectuées sur des matrices ou
vecteurs entiers à l’aide d’une seule commande, sans boucle for…end. Par exemple, soit le
vecteur produit par la commande T=2*pi*[0:100]/100. On veut évaluer le sinus et le
cosinus de chaque élément de T : R=sin(T) et S=cos(T) nous donne les vecteurs R et S
contenant les résultats désirés. Pour obtenir la somme des deux vecteurs : A=R+S, le produit
point à point : B=R.*S, le carré des éléments de R : C=R.^2 ou C=R.*R.
Notes : Tous les résultats des calculs effectués sont affichés à l’écran; en ajoutant un point-
virgule à la fin d’une commande, on annule l’affichage automatique du résultat. Pour faire
apparaître une valeur à l’écran, il suffit de composer son nom seul.
ELE2700 – ANALYSE DES SIGNAUX / TRAVAUX PRATIQUES / SÉANCE #1 TP0
- 7 -
Une multiplication de matrices sera réalisée par la commande A=B*C, où B et C sont les
matrices à multiplier. Après l’opération, le résultat sera dans A.
Attention : Il ne faut pas confondre les commandes B*C et B.*C. La première est la
multiplication matricielle de B et C dont les dimensions doivent être compatibles (par exemple,
M×N et N×P respectivement). La deuxième est la multiplication point à point des matrices B et
C dont les dimensions doivent être identiques. Exemple: Soient A=[1 2 3], B=[2 2 2] et
C=[2;2;2]. On a alors : A.*B qui donne [ 2 4 6 ]
A*C qui donne [ 12 ]
A*B qui est une commande impossible à réaliser (un message d’erreur apparaîtra)
1.4 Nombres complexes
MATLAB offre la possibilité de travailler avec des nombres complexes; il s’agit simplement de
définir les variables en conséquence. Exemples : z=sqrt(-1)
z1=5+2*z
z2=exp(-z*pi/4)
Dans MATLAB, les variables i et j sont initialement définies comme (-1)1/2 ; cette définition est
évidemment annulée lorsque ces variables sont redéfinies autrement. Certaines commandes ont
été spécialement conçues pour manipuler des nombres complexes:
real(z1) retourne la partie réelle
imag(z1) retourne la partie imaginaire
abs(z1) calcule le module
angle(z1) calcule la phase
conj(z1) génère le conjugué
ELE2700 – ANALYSE DES SIGNAUX / TRAVAUX PRATIQUES / SÉANCE #1 TP0
- 8 -
1.5 Affichage graphique
Forme : plot(X,Y), où X et Y sont des vecteurs de même longueur. Cette commande trace à
l’écran Y en fonction de X. Par défaut, les points seront reliés entre eux; on peut toutefois choisir
d’afficher uniquement les points : plot(X,Y,’o’) (d’autres caractères sont possibles comme
´x´, ´.´, ´*´ et ´ +´). Si X est omis, alors les éléments de Y seront tracés en fonction de leur rang
dans le vecteur.
Plusieurs courbes peuvent être affichées sur le même graphique de la façon suivante :
plot(X1,Y1,X2,Y2,X3,Y3).
stem(X,Y) affiche des signaux a temps discret.
Pour une échelle logarithmique, on utilisera les commandes semilogx(X,Y),
semilogy(X,Y) ou loglog(X,Y).
Pour l’affichage d’un titre et l’identification des axes, on utilise les commandes suivantes :
« title(’Ceci est le titre affiché’) », « xlabel(’identification de
l’’axe x’) » et « ylabel(’axe y’) ». La commande « grid » trace des lignes de
référence sur le graphique. La commande « axis » permet de fixer les bornes des abscisses et
ordonnées du graphique. Voici un exemple utilisant les vecteurs T, R, S et A définis dans le
premier exemple de la section 1.3 : plot(T,R,’o’,T,S,’x’,T,A) grid title(’Somme de deux sinusoïdes’) xlabel(’Temps (seconde)’) ylabel(’Amplitude (volt)’) axis([0 0,01 -1.5 1.5])
ELE2700 – ANALYSE DES SIGNAUX / TRAVAUX PRATIQUES / SÉANCE #1 TP0
- 9 -
1.6 Programmation de fonctions
Bien que chaque commande puisse être entrée directement au clavier, il est souvent utile de
grouper un ensemble de commandes à 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 xlabel(’TEMPS (SEC)’) ylabel(’AMPLITUDE’)
À chaque fois que graphe sera appelé du clavier ou d’un autre fichier, la courbe de Y en fonction
de X sera 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 vos propres fonctions MATLAB auxquelles on doit transmettre
un ou plusieurs paramètres. Exemple : on crée un fichier nommé sa.m comprenant les lignes
suivantes : function Y=sa(X) if X==0 Y=1 else Y=sin(X)/X; end
À chaque fois que l’on demandera sa(V), on obtiendra 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 commandes aient été exécutées.
ELE2700 – ANALYSE DES SIGNAUX / TRAVAUX PRATIQUES / SÉANCE #1 TP0
- 10 -
Notez 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 « function ».
Une fonction peut retourner plusieurs résultats. Par 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ées à l’aide de l’éditeur de votre choix (qui peut être celui de Matlab).
1.7 Exercices suggérés
Exercice 1
a) Générez la matrice 1 2 34 5 6 .7 8 9
A =
b) Générez la transposée de A.
c) Trouvez le déterminant de A.
d) Générez un vecteur contenant uniquement la 2e ligne de A en composant A(2,:).
Exercice 2
a) Générez les vecteurs ( )0 1 2 3 20a = et ( )0 5 10 100b = .
b) Vérifiez si la longueur du vecteur a est la même que la longueur du vecteur b en utilisant
la commande « size ».
c) Évaluez /10nans b e−= où an et bn sont les éléments de a et b.
ELE2700 – ANALYSE DES SIGNAUX / TRAVAUX PRATIQUES / SÉANCE #1 TP0
- 11 -
Exercice 3
a) Soit le vecteur a défini par
[ ]3 4 5 9 3 4 5 9 3 4 5 9 3 4 5 9= + + − − − − − − − + − +a i i i i i i i i
b) Générez le vecteur m contenant les modules des éléments du vecteur a à l’aide la
commande « abs ».
c) Générez le vecteur p contenant les phases des éléments du vecteur a à l’aide la
commande « angle ».
d) Trouvez le conjugué de a à l’aide de la commande « conj ».
Exercice 4
Modifiez la fonction sa.m décrite à la section 1.6 de façon à ce qu’elle puisse être appliquée à un
vecteur plutôt qu’à une seule valeur.
1.8 Liste des commandes utilisées le plus fréquemment
Voici une courte liste des instructions utiles pour le cours, accompagnées d'une brève
description. Pour savoir comment utiliser ces fonctions, se référer à l'aide de MATLAB, par
exemple en tapant « help (nom de la commande) ».
Commandes générales
clear Efface les variables gardées en mémoire
save Enregistre les variables pour utilisation future
who Affiche le nom des variables
whos Affiche le nom, le type et les dimensions des variables
load Permet de lire des variables préalablement enregistrées
ELE2700 – ANALYSE DES SIGNAUX / TRAVAUX PRATIQUES / SÉANCE #1 TP0
- 12 -
Fonctions mathématiques
sin Évalue le sinus
sinh Évalue le sinus hyperbolique
exp Évalue l'exponentielle
log Évalue le logarithme naturel
log10 Évalue le logarithme en base 10
sqrt Évalue la racine carrée
mod Retourne le modulo
Matrices particulières
eye Crée une matrice identité
ones Crée une matrice dont tous les éléments valent 1
zeros Crée une matrice dont tous les éléments valent 0
rand Crée une matrice dont les éléments sont générés de manière aléatoire
logspace Génère un vecteur dont les éléments suivent une progression logarithmique
Manipulations de matrices
' Effectue la transposée conjuguée
.' Effectue la transposée (non conjuguée)
det Évalue le déterminant d’une matrice carrée
inv Évalue l'inverse d’une matrice carrée
size Affiche les dimensions d’une matrice
length Donne la longueur d’un vecteur
Manipulation de nombres
lcm Détermine le plus petit commun multiple
gcd Détermine le plus grand commun diviseur
fix Arrondit en conservant uniquement la partie entière
ceil Arrondit vers le plus gros entier suivant
ELE2700 – ANALYSE DES SIGNAUX / TRAVAUX PRATIQUES / SÉANCE #1 TP0
- 13 -
Manipulations de nombres complexes
real Retourne la partie réelle d'un nombre complexe
imag Retourne la partie imaginaire d'un nombre complexe
abs Évalue le module d'un nombre complexe
angle Évalue la phase d'un nombre complexe
conj Génère le conjugué d'un nombre complexe
Transformées
fourier Évalue la transformée de Fourier
ifourier Évalue la transformée inverse de Fourier
fft Évalue la transformée discrète de Fourier
ifft Évalue la transformée discrète inverse de Fourier
laplace Évalue la transformée de Laplace
ilaplace Évalue la transformée inverse de Laplace
ztrans Évalue la transformée en z
iztrans Évalue la transformée inverse en z
fftshift Inverse les deux moitiés de courbes obtenues suite au calcul de la fft
Convolution et corrélation conv Réalise la convolution de deux signaux
conv2 Réalise la convolution en deux dimensions de deux signaux
xcorr Réalise l’inter-corrélation de deux signaux, ou l'auto-corrélation d'un seul signal
xcorr2 Réalise la corrélation en deux dimensions de deux signaux
Filtres
filter Filtre les données qui lui sont fournies selon le type de filtre qui a été décrit
freqz Retourne la réponse en fréquence complexe d'un filtre numérique
freqs Retourne la réponse en fréquence complexe d'un filtre analogique
invfreqs Retourne les coefficients du numérateur et du dénominateur de la fonction de transfert du filtre
analogique ayant la réponse en fréquence voulue
invfreqz Retourne les coefficients du numérateur et du dénominateur de la fonction de transfert du filtre
numérique ayant la réponse en fréquence voulue
ELE2700 – ANALYSE DES SIGNAUX / TRAVAUX PRATIQUES / SÉANCE #1 TP0
- 14 -
fdatool synthèse de filtres
Statistiques
std Évalue l'écart-type
var Évalue la variance
mean Évalue la valeur moyenne
median Identifie la valeur médiane
max Identifie le plus grand élément
min Identifie le plus petit élément
Polynômes
roots Trouve les racines d'un polynôme
poly Retourne les coefficients du polynôme associé aux racines spécifiées
pzmap Affichage des pôles et zéros.
tf fonction de transfert
tfdata(sys,’v’) données de la fonction de transfert
ELE2700 – ANALYSE DES SIGNAUX / TRAVAUX PRATIQUES / SÉANCE #1 TP0
- 15 -
2. INTRODUCTION À SIMULINK
2.1 Simulation à l'aide de Simulink
Simulink est un outil de MATLAB qui permet de remplacer les équations mathématiques entre
certaines variables par des blocs organisés en un schéma. Pour ouvrir Simulink, cliquez sur
l'icône présent dans la fenêtre principale de MATLAB. Une boîte de dialogue contenant la
liste des librairies (semblable à celle de la figure 1) apparaît à l’écran.
La partie gauche de la boîte de dialogue montre les librairies, tandis que la portion droite
présente les blocs disponibles dans la librairie sélectionnée. Une courte description du bloc
sélectionné est affichée dans le haut de la fenêtre. Ce sont ces blocs qui servent à la création des
diagrammes, ou schémas-blocs.
Création des schémas-blocs
Les schémas-blocs doivent être créés dans un fichier Simulink distinct, de type « .mdl ». Pour
créer un nouveau fichier de travail Simulink : faire File, New, Model ou cliquer sur l'icône
Pour ouvrir un ancien fichier : faire File, Open ou cliquer sur l'icône
Pour insérer un bloc dans un fichier, il faut cliquer sur le bloc désiré puis le faire glisser jusqu'à
l'endroit approprié dans le fichier de travail, en maintenant le bouton gauche de la souris enfoncé.
Relâchez le bouton de la souris lorsque le bloc est placé à l'endroit voulu. On peut rechercher un
bloc de la liste en tapant une partie de son nom dans la case blanche apparaissant en haut de la
librairie, puis en appuyant sur RETOUR.
ELE2700 – ANALYSE DES SIGNAUX / TRAVAUX PRATIQUES / SÉANCE #1 TP0
- 16 -
Figure 1 - Liste des librairies de Simulink
ELE2700 – ANALYSE DES SIGNAUX / TRAVAUX PRATIQUES / SÉANCE #1 TP0
- 17 -
Une fois les blocs insérés dans le fichier, il faut les relier. Pour relier des blocs entre eux, cliquez
sur le « triangle » apparaissant sur le premier bloc, maintenez le bouton gauche de la souris
enfoncé et faites glisser le curseur jusqu'au « triangle » du second bloc. Si le lien est réalisé
adéquatement, une flèche pleine devrait apparaître. Si le trait symbolisant le lien n'est pas un
trait plein ou s'il comporte une double flèche en son centre, c'est que le lien n'a pas été réalisé
correctement. Il faut donc supprimer le trait et recommencer.
Certaines versions de Simulink offrent un raccourci pour relier deux blocs, il s’agit de :
- cliquer sur le premier bloc,
- maintenir la touche CTRL enfoncée,
- cliquer sur le second bloc à raccorder.
Cette méthode crée automatiquement le trait. Le sens du lien ainsi créé dépend de l'ordre dans
lequel les blocs ont été sélectionnés.
Ajustement des paramètres des blocs
Une fois les blocs insérés dans le fichier, leurs paramètres doivent être ajustés. Ceci se fait en
double-cliquant sur un bloc. Une fenêtre de dialogue apparaît, dans laquelle on insère les valeurs
appropriées.
Il faut porter une attention particulière au bloc « Time Scope » (voir figure 2). Celui-ci permet
de visualiser les courbes résultant de la simulation et aussi d'enregistrer ces données pour qu'elles
soient récupérées dans MATLAB. Voici les ajustements à faire :
- double-cliquer sur le bloc « Time Scope ». Une fenêtre s'ouvre (voir figure 3 / c'est là que
seront affichées les courbes suite à la simulation),
- cliquer sur l'icône Parametrs:
- aller dans l'onglet Data History (voir figure 4a),
- sélectionner Save data to workspace,
- au besoin, modifier le nom de variable « ScopeData » pour le nom voulu,
- choisir le format Array.
ELE2700 – ANALYSE DES SIGNAUX / TRAVAUX PRATIQUES / SÉANCE #1 TP0
- 18 -
Figure 2 - Bloc « Time Scope » Figure 3 - Fenêtre du « Time Scope »
(a) (b)
Figure 4 - Les deux onglets permettant d'ajuster les paramètres du « Time Scope »
L'oscilloscope ( « Time Scope » ) ne conserve que les dernières données de la simulation. Il est
possible de fixer le nombre de points conservés en l'indiquant à la suite de la mention Limit data
ELE2700 – ANALYSE DES SIGNAUX / TRAVAUX PRATIQUES / SÉANCE #1 TP0
- 19 -
points to last de la fenêtre Data History (figure 4a). Par défaut, le nombre de points est fixé à
5000, ce qui s'avère généralement adéquat.
Notez qu'il est possible d'avoir plusieurs entrées dans le bloc « Time Scope ». Pour ce faire, il
s’agit de :
- double-cliquer sur ce bloc,
- cliquer sur le bouton Properties, dans le haut de la fenêtre ayant apparu,
- sous l'onglet General, changer le nombre d'axes spécifiés (voir figure 4b).
Ajustement des paramètres de la simulation
Après avoir créé le schéma à exécuter, cliquez sur Simulation du menu dans le haut de la fenêtre
où se trouve le schéma, puis sélectionnez Normal. Ensuite, toujours dans Simulation, il faut :
- cliquer sur Simulation Parameters,
- aller dans l'onglet Solver,
- définir les temps de début et de fin de simulation (par défaut, ces temps sont 0s et 10s
respectivement),
- choisir le mode de simulation: Type « Fixed-Step ».
Enfin, lorsque les paramètres sont entrés, la simulation peut être amorcée de la façon suivante: - cliquer sur l'icône
- ou aller dans l'item Simulation du menu et faire Start.
Le temps de simulation apparaît dans la case en bas du fichier.
2.2 Récupération des données
Pour récupérer les données générées par la simulation, il faut insérer dans le schéma un bloc
provenant de la librairie Simulink, Sinks. Les deux blocs les plus utilisés sont le «Time Scope» et
« To Workspace ». Ce dernier enregistre les données dans MATLAB mais ne les affiche pas,
ELE2700 – ANALYSE DES SIGNAUX / TRAVAUX PRATIQUES / SÉANCE #1 TP0
- 20 -
contrairement à l'oscilloscope. Les ajustements de l'oscilloscope ont été décrits à la section
précédente. Pour le bloc « To Workspace », il faut suivre les étapes suivantes (avant l'exécution
de la simulation):
- double-cliquer sur le bloc,
- donner le nom de variable voulu,
- fixer le nombre de points à conserver (Limit data points to last),
- enregistrer le format à Array.
Une fois la simulation exécutée, on sauve les données dans des variables en écrivant dans la
fenêtre de commande MATLAB ou encore dans le M-File les commandes suivantes:
t=ScopeData(:,1)
y=ScopeData(:,2)
Le nom ScopeData doit être remplacé par le nom de variable que l'on a choisi lorsque l'on a
ajusté les paramètres de l'oscilloscope ou du bloc « To Workspace ». Les données de la première
colonne de cette variable correspondent au temps où ont été prélevés les échantillons, tandis que
les valeurs de la deuxième colonne sont les résultats eux-mêmes.
ELE2700 – ANALYSE DES SIGNAUX / TRAVAUX PRATIQUES / SÉANCE #1 TP0
- 21 -
3. TRAVAIL À RÉALISER AU LABORATOIRE
OBJECTIF
Le but de ce travail est de se familiariser avec la technique de « drag and drop » de Simulink en évaluant la réponse impulsionnelle d’un système linéaire (filtre) et en simulant le filtrage d’un signal. INTRODUCTION
La réponse impulsionnelle ( )h t d’un système linéaire est la sortie du système si l’entrée est l’impulsion de Dirac ( )tδ . Dans ce travail vous devrez évaluer la réponse impulsionnelle d’un système linéaire et l’afficher graphiquement. La fonction de transfert d’un système de quatrième ordre vous sera précisée au laboratoire. Vous devrez également évaluer la réponse à l’échelon d’un système. Vous aurez l’occasion d’observer les différentes réponses obtenues selon la position des pôles du système. La dernière partie du travail traite du filtrage d’un signal. Le but est d’observer la sortie d’un filtre du quatrième ordre, comme par exemple un filtre Butterworth ou Chebychev, dont l’entrée est un signal tel qu’une onde carrée périodique. PREMIÈRE PARTIE : RÉPONSE IMPULSIONNELLE D’UN SYSTÈME D’ORDRE 4
1. Ouvrir Matlab. 2. Cliquer sur le symbole coloré « Simulink » ou dans la fenêtre « Command Window » de
Matlab taper : simulink. 3. Dans la fenêtre « Simulink Library Browser », cliquer sur « file-new ». 4. Dans la « Library », choisir « Continuous ». Tirer la boîte « Transfer function » et la déposer
sur le nouveau document simulink.
ELE2700 – ANALYSE DES SIGNAUX / TRAVAUX PRATIQUES / SÉANCE #1 TP0
- 22 -
5. Programmer cette boîte en double cliquant et en spécifiant les paramètres de la fonction de transfert qui vous sera précisée au laboratoire. Exemple de fonction de transfert :
( ) 4 3 21.197 1.717 1.025 0.379KH s
s s s s=
+ + + +
où K est un constant ; par exemple 1K = . 6. Choisir la source d’entrée en cliquant sur « Sources » et transportant la boîte d’échelon
(Step). 7. Vu que le but est d’évaluer la réponse impulsionnelle plutôt que la réponse à l’échelon et vu
que les transformée de Laplace de δ (t) et u(t) sont :
( ) 1tδ ←→
( ) 1u ts
←→
il faudra annuler le pôle introduit par l’échelon. Vous pouvez effectuer ceci en multipliant ( )H s par s, et ainsi annuler le pôle de ( )u t par ce zéro. Vous devrez ainsi double-cliquer sur
la boîte « Transfer function » et programmer le numérateur par la vecteur [K 0]. 8. Pour observer la réponse à l’échelon du système, il faudra relier l’échelon à l’entrée de la
fonction de transfert sans oublier de brancher une boîte « Scope » (de la librairie « Sink » de « Simulink ») à la sortie de la fonction de transfert.
9. Cliquer sur la flèche noire « Start simulation ». 10. Double-cliquer sur « Scope » pour voir la réponse du système. 11. Pour prolonger la durée de la simulation, cliquer sur « Simulation - Simulation parameters ».
Augmenter « Stop Time » à 40, par exemple. 12. Préparer les éléments du rapport à remettre :
a) les paramètres de la fonction de transfert tels qu’observés en double-cliquant sur la boîte
« Transfer Function »,
b) la sortie du Scope.
c) Imprimer un plot par Matlab de la sortie a partir des données sur Workspace, qui contient
le titre du graphique et les identifications des deux axes.
ELE2700 – ANALYSE DES SIGNAUX / TRAVAUX PRATIQUES / SÉANCE #1 TP0
- 23 -
DEUXIÈME PARTIE : RÉPONSE À L’ÉCHELON D’UN SYSTÈME
Voir le livre Sec. 5.10 page 249
Un système du deuxiem ordre est decrit en general par la fonction de transfert
( ) ( )( )2 20 0
2 20 0 1 22
H ss s s p s p
ω ωω ς ω
= =+ + − −
Ayant des pôles 1p et 2p qui peuvent être réels, complexes ou double :
20 0
20 0
1 2
0
0
1, 1
1 , 0 1,, 1, 0
jp p
j
ω ς ω ς ς
ω ς ω ς ςω ς ςω ς
− ± − >− ± − < <=
− = ± =
Voir les pôles et leurs positions selon la valeur du facteur d’amortissement ς a la Fig. 5.25 page
250 du livre. La réponse a l’échelon du système dépend sans doute du facteur d’amortissement ς
et est illustre a la Fig. 5.26 du livre. Notre but est de reproduire ici la réponse a l’échelon d’un tel
système.
Soit 0 1ω =
Évaluer la réponse à l’échelon en programmant la boîte « Transfer function » par qu’elle soit
égale a cette valeur ( )H s pour les trois cas de positions des pôles suivants. Évaluer et dessiner
les pôles dans le plan s et la réponse à l’échelon pour chacun des cas suivant :
1. Le cas 0.5ς = . 2. Le cas 1ς = .
3. Le cas 2ς = .
4. Quelle est la valeur de la réponse en régime permanent, c'est-à-dire, quand t →∞ ?
5. Préparer les éléments du rapport à remettre (pour chacun des trois cas) :
a) les paramètres de la fonction de transfert tels qu’observés en double-cliquant sur la boîte
« Transfer Function »,
b) la sortie du Scope.
ELE2700 – ANALYSE DES SIGNAUX / TRAVAUX PRATIQUES / SÉANCE #1 TP0
- 24 -
TROISIÈME PARTIE : FILTRAGE D’UN SIGNAL
1. Programmer une boîte « Transfer function » pour simuler le filtre du premier ordre :
( ) 11
H ss
=+
2. Transporter une source « Pulse Generator » de la bibliothèque de Simulink pour produire le signal qui sera appliqué à l’entrée au système.
3. Observer la sortie du système sur un « Scope ».
4. Ajuster la période T du générateur d’impulsions à 20 secondes et observer la sortie.
Remarquer le croissement relativement lent de l’onde causé par la coupure des hautes fréquences qu’introduit le filtre. Réduire T pour accélérer progressivement le peigne d’impulsions, et observer et noter l’effet sur la sortie. Imprimer la sortie pour les deux cas
20T = et 2T = sec et afficher la valeur de T sur chaque graphique Evaluer la fréquence fondamentale dans chaque cas, et la fréquence de coupure du filtre. En comparant la fréquence fondamentale dans chaque cas avec la fréquence de coupure du filtre justifier la sortie observée.
5. Remplacer le filtre du premier ordre par le filtre Butterworth :
( ) 4 3 2
12.613 3.414 2.613 1
H ss s s s
=+ + + +
(1)
6. Ajuster la période T du générateur d’impulsions pour que la sortie du système soit assez semblable à son entrée sauf pour un léger dépassement (‘overshoot’). Imprimer le résultat. Indiquer la valeur T .
7. Réduire successivement la période de l’entrée et observer l’effet sur la sortie. Ajuster la
période T pour que la sortie du système soit simplement le d-c de l’entrée, à part de quelques petites ondulations. Indiquer la valeur de T . Imprimer le résultat.
8. Effectuer une dé-normalisation pour obtenir ( )denormH s en remplaçant s par /1000s dans
( )H s . Ecrire la valeur de ( )denormH s . Afficher par pzmap de Matlab et imprimer les pôles
de ( )denormH s . Répéter les points 6 et 7. 9. Ecrire et soumettez votre rapport.