You are on page 1of 10

ESSI, AUTOMATIQUE ET TRAITEMENT DU SIGNAL : SIGNAUX ET SYSTMES DE LAUTOMATIQUE, JPS, 2000 -1-

Dfinition des Signaux et Simulation des Systmes avec Matlab et Simulink


MATLAB (MATrix LABoratory) est un environnement ddi lAutomatique et au Traitement du Signal. Il inclut un interprteur comme Maple, mais nest pas un langage formel. Dans la fentre MATLAB, linterprteur excute les instructions une par une aprs <Enter>, le prompt est >>. Les instructions peuvent tre groupes en scripts dans les fichiers M-files dextension .m. LEditor/Debugger permet dditer et dexcuter les scripts MATLAB: >> edit script1.m % lance Editor/Debugger >> script1 % excutera le script cr dans script1.m. MATLAB contient des structures de contrles, telles if, while, case, for, ... des types de donnes qui lui sont propres, en plus dun ensemble de fonctions spcialises. On reprendra ltude plus en dtail, en particulier pour gnrer des interfaces graphiques utilisateurs.Il propose des ToolBoxes selon les besoins de lutilisateur : on utilise ici Control Toolbox ainsi que Simulink. Pour linstant, on introduit un jeu dinstructions de base pour la dfinition et le trac des vecteurs et matrices afin de dfinir et visualiser des signaux et systmes. Tout dabord, il faut spcifier un vecteur temps, liste dinstants auxquels les signaux seront dfinis ...

1 Commandes de linterprteur MATLAB


Commandes gnrales
>> help plot >> who, ou >> whos >> x = 2 x= 2 >> x = 3 ; >> x x= 3 >> sqrt(-1) ans = 0 + 1.000i >> clear x, % voir clear ou clear x,y >> x ??? Undefined function or variable 'x'. >> edit, ou edit toto.m ou edit (toto.m) >> demo >> intro >> tour >> path % >> pwd, ls, dir, cd >> ! commande DOS

Matrices et vecteurs
% Dfinition de la matrice A (3x3) >> A = [123 456 7 8 9] ;

ESSI, AUTOMATIQUE ET TRAITEMENT DU SIGNAL : SIGNAUX ET SYSTMES DE LAUTOMATIQUE, JPS, 2000 -2% ou bien avec , ou , sparateur de ligne et ; de colonne >> A=[1,2,3 ; 4 5 6 ; 7, 8 9] ; % accolade utilise >> A % transposition de A >> B = eye(3,3) % matrice identit >> C = zeros(size(A)) % matrice 3x3 nulle >> D = ones(4,1) % matrice de 1 >> t= 0:.1:10;% dfinit un vecteur dinstants >> t2= [1 3 5 7 8 9 10] ; % galement >> s1= 5*sin(3*pi*t); % signal s1 : vecteur de mme dimension que t >> s2=exp(-2*t); %idem >> s3 = exp(-2*t) .* sin(2*pi*t) ;% produit composante par composante de s1 et s2 >> s = [s1 s2 s3] ; % concatnation de s1, s2 et s3 en un seul signal >> s = [s1 ; s2 ; s3] ; % trois lignes trois signaux >> A( :,1) % premire colonne de A, on utilise la parenthse >> A(1 :2,2 :3) ; % sous matrice >> A(3 :-1 :1,3 :-1 :1) ; % fait quoi ? % fichiers de donnes (extension .mat) save(fich,t,s1) % t, s1 -> fich.mat load(fich)

Tracs des signaux (commande plot et drivs)


>> help plot >> clf ou cla ou clc >> plot(s1) >> plot(t,s1) >> plot(t,s2,r) >> plot(t,s1,y+,t,s2,r*) >> figure(2) >> close(1 :3) >> title(ceci est mon titre \bullet) >> xlabel( \omega en abscisse) >> ylabel( texte \xi en ordonne) % grille, et superposition >> grid % voir grid on et grid off >> hold % voir hold on et hold off % addition dun texte >> text(0.5, 2.2,texte ajouter) >> gtext(\leftarrow texte plac la souris) % pour lire la position de la souris et le bouton enfonc >> [xsouris, ysouris, bouton] = ginput (2) % zoom aprs un trac >> axis ( [0, 10, -1, 1] ) % et pour afficher un texte >> disp([afficher x dans la fentre, num2str(x)]) >> K = input(entrer la valeur de K) >> pause(10) % 10 seconde, >> pause % arrangements de tracs subplot(2,2,1) plot(t,s1)

ESSI, AUTOMATIQUE ET TRAITEMENT DU SIGNAL : SIGNAUX ET SYSTMES DE LAUTOMATIQUE, JPS, 2000 -3subplot(2,2,2) plot(t,s2) title(courbe 2) subplot(2,2,3) gtext(pas de courbe) subplot(2,2,4) plot(t,t,g)

2 Reprsentation temporelle des Signaux


Signal = fonction du temps continue (souvent tension, ou courant) ou chantillonne, mesure, traite, mise par un ordinateur une suite dinstants priodiques.
Un signal ne transporte pas de puissance mais vhicule une information: amplitude, signe, frquence, dure, rapport cyclique, valeur moyenne, etc

RAPPEL : par dfinition, signal causal = signal nul pour t < 0

Signaux continus dans le temps ou en temps continu


Dfinition : signal continu == dfini t .
Suivent des signaux tests (gnralement les entres des processus) et des signaux rsultats (que lon peut trouver en sortie) : on leur associe les instructions MATLAB qui ont permis de les dfinir et de les visualiser. On verra plus loin les moyens de dfinition des systmes avec MATLAB :

a - rampe : r (t ) = at ,t > 0 , ( a =1 , rampe unit)


s(t) >> plot ( 0 : 0.01 : 1, 0 : 0.01 : 1) a.t a = 1, rampe unit t

b - chelon u( t ) = a pour t > 0 ( a = 1 , chelon unit)


u(t )
% instructions Matlab >> t=0 : 0.1 : 10 ; >> plot(t, ones( size(t))) % plot(t,t) pour la rampe

u(t)= a pour t 0 u(t) = 0 pour t <0 0

ESSI, AUTOMATIQUE ET TRAITEMENT DU SIGNAL : SIGNAUX ET SYSTMES DE LAUTOMATIQUE, JPS, 2000 -4-

c - distribution (impulsion) de Dirac :


(t ) = 0, t 0 avec ( t )dt = 1
+

a ( t T )
0 temps t T

Pas programmable avec Matlab

d - Impulsion (signal Porte, fentre temporelle)


Soit par exemple la fonction ( t ) = a entre 2*T et 3*T, ( t ) = 0 sinon T=10 seconde

(t )

a t 0 2*T 3*T

>> PI =[zeros(1,10),a*ones(1,5),zeros(1,10)]

e Sinus causal s (t ) = a sin(t ) pour t 0


1 0 . 8 0 . 6 0 . 4 0

Matlab : >> plot( 0:0.1:10, sin(0:0.1:10))

. 20 0 . 2 0 . 4 0 . 6 0

0s

. 81 0

10 Priode s
4

f - exponentielle dcroissante
exp(-t) sur 3 secondes 1 0.9 0.8 0.7 0.6 exp(-t) 0.5 0.4 0.3 0.2 0.1 0 0 0.5 1 1.5 temps (sec.) 2 2.5 3

Instructions Matlab (ou script expo.m) t = 0.03*[0:100]; plot(t,exp(-t),'r--'); grid xlabel('temps (sec.)') ylabel('exp(-t)') title('exp(-t) sur 3 secondes')

ESSI, AUTOMATIQUE ET TRAITEMENT DU SIGNAL : SIGNAUX ET SYSTMES DE LAUTOMATIQUE, JPS, 2000 -5-

g - Sinusoide amortie
0 . 8

0 . 6 e p - . s ( * i* 0 t) x ( t) * in 2 p 1 *

0 . 4

Instructions Matlab
t = 0:.01:5; plot(t,exp(-t).*sin(2*pi*t)); grid xlabel('temps seconde') ylabel('exp(-t).*sin(2*pi*t)')

0 . 2

-. 0 2

-. 0 4

-. 0 6

2 t ms o e ep e n s cd

h - rampe asymptotique
0 rampe rampe amortie 0

0 t, t-0 +exp(-t)

t = 0:0.05:6; plot(t,t,'b', ... t,t-ones(size(t))+exp(-t), ... 'r--'); legend('rampe','rampe amortie') grid xlabel('t') ylabel('t, t-1+exp(-t)') % title('rampe, rampe amortie')

0 0

0 t

1.2 Signaux en temps discrets ou chantillonns ( s(t ) devient dfini seulement aux instants nT dchantillonnage)
A - rampe discrte / chantillonne
0 . 0 0 . 0 0 . 0 signal chantillonn 0 . 0 0 . 0 0 . 0 0 -0 .0 -0 .0 0 xp t( T= 0 e cn e (-t)*sin *t),0 . se o d S n l D re o E a tillo n ig a isc t u ch n n

s n = s(nT )

Gnration avec Matlab : clc echo on t=0:.2:5; stem(t,exp(-t).*sin(2*t),'fill'); xlabel('temps en seconde') ylabel('signal chantillonn') title('Signal Discret ou Echantillonn') gtext('exp(-t)*sint(2*t),T=.2 seconde') grid
0 . 0 0 0 . 0 0

0 . 0

0 . 0

0 0 . 0 0 te p e s c n e ms n e o d

ESSI, AUTOMATIQUE ET TRAITEMENT DU SIGNAL : SIGNAUX ET SYSTMES DE LAUTOMATIQUE, JPS, 2000 -6-

B - signal bloqu Signal Discret ou Echantillonn


0.6 0.5 0.4

Signal Bloqu

0.3 0.2 0.1 0 -0.1 -0.2

0.5

1.5

2.5

3.5

4.5

t=0:.2:5 (temps en seconde)

Texte lextrieur du plot (1,2.5)

t=0:.2:5; stairs(t,exp(-t).*sin(2*t)); xlabel('t=0:.2:5 (temps en seconde)','FontSize',14) ylabel('Signal Bloqu','FontSize',14) title('Signal Bloqu,'FontSize',18) text(1,2.5,'e^{-\alpha*t}*sint\beta*t, T = .2 seconde') grid

Bloqueur dordre zro (BOZ) : maintient la valeur s(nT) entre nT et (n+1)T, on dit Zero Order Hold (ZOH) en anglais

C - signal numrique ( analogique)


Les amplitudes sont quantifies numrique = non linaire. Le signal prcdent est ainsi quantifi cidessous (pour linstruction fix, laide de Matlab donne rounds towards zero)

Signal Analogique, Signal Numrique


0.6 0.5 0.4 0.3 0.2 0.1 0 -0.1 -0.2 0 0.5 1 1.5 2 2.5 3 3.5 4 4.5 5

Quantification d'amplitude: 0.1

temps (en seconde)

ESSI, AUTOMATIQUE ET TRAITEMENT DU SIGNAL : SIGNAUX ET SYSTMES DE LAUTOMATIQUE, JPS, 2000 -7-

t=0:.2:5; f= exp(-t).*sin(2*t); hold on stem(t,0.1*fix(f/.1),'fill'); stairs(t,f); xlabel('temps (en seconde)','FontSize',14) title('Signal Analogique, Signal Numrique', 'FontSize',18) text(1.5,.4,'Quantification d''amplitude: 0.1', 'FontSize',16) grid

3 Simulation des systmes avec Matlab et Simulink


Dans Matlab, les processus et systmes sont reprsents par une fonction de transfert, ou par des quations dtat (quation diffrentielle matricielle). Il est galement possible dditer et de simuler des schmas blocs avec la bote outils Simulink de Matlab (linaires, non linaires, en temps continu et en temps discret).

ESSI, AUTOMATIQUE ET TRAITEMENT DU SIGNAL : SIGNAUX ET SYSTMES DE LAUTOMATIQUE, JPS, 2000 -8-

Exemple du processus COBAYE avec Matlab


Aprs avoir lanc Matlab, on dfinira aisment la fonction de transfert de COBAYE dont lquation diffrentielle est 0.1

d 2 s ds + = 5e(t ) en prcisant les coefficients des polynmes en s dt 2 dt

(variable de Laplace par dfaut pour Matlab) du numrateur et du dnominateur de la fonction de transfert, coefficients lis ceux des deux membres de lquation diffrentielle. Application :

5 0.1s 2 + s Aprs quoi, un chelon sur lentre e(t ) donne la rponse indicielle s (t )
>> cobaye = tf([5, [0.1, 1, 0]) donne cobaye = >> step (cobaye) ou la rponse harmonique >> bode (cobaye) Si on souhaite passer une reprsentation interne de COBAYE, cest >> interne = ss(cobaye) ou tudier un systme boucl retour unitaire autour de COBAYE >> reguler= feedback (cobaye, 1), etc

Utilisation de lditeur de schmas blocs Simulink,


Depuis linterprteur MATLAB, la commande : >> simulink ouvre la fentre Library de Simulink et une fentre vide pour dessiner le schma-bloc du systme simuler. Parmi les bibliothques: Linear (contient lintgrateur et le sommateur) Non linear (lhystrsis, appel relay galement) Sinks avec la fentre Scope pour visualiser les sorties de la simulation Sources (avec lchelon, la sinusode, etc ...) pour les entres Discrete (bloqueur ...), Connections (select, mux, demux, ...), ...

Lillustration ci-dessous comporte 5 blocs et 5 arcs orients.


On a plac les blocs dans le schma laide de la souris qui va les chercher dans les librairies adquates. Par exemple lintgrateur 1/s provient de Linear, le relais ou hystrsis de Nonlinear, Les arcs sont tracs en reliant entres et sorties des blocs en dplaant la souris bouton gauche enfonc. On peut les dessiner en plusieurs traits. Une drivation sur un arc existant s'obtient avec le bouton droit. Blocs et arcs peuvent tre slectionns individuellement ou par paquets puis copis, dplacs, effacs (par copi coll). On sait associer des noms (ou names) aux blocs et aux arcs, les cacher, ou non, les mettre au dessus ou au dessous, crire un texte sur le fond de la fentre afin de documenter le schma bloc, choisir la couleur du fond et du trait. Paramtres des blocs : pour fixer les valeurs des paramtres dun bloc, tir dune librairie, (caractristique du relais par exemple), il suffit de double-cliquer sur le bloc dans la fentre ddition, et on modifie volont les champs de donnes qui apparaissent.

La simulation se lance et sarrte avec le raccourci Ctrl T


ou start/stop dans le menu simulation. Un ensemble de paramtres de simulation sont disponibles, tels la dure de simulation, voir le menu Simulation/Parameters.

ESSI, AUTOMATIQUE ET TRAITEMENT DU SIGNAL : SIGNAUX ET SYSTMES DE LAUTOMATIQUE, JPS, 2000 -9-

Mtablocs, blocs subsystem


Lutilisateur peut compacter des parties de schma-bloc et leur associer des paramtres personnaliss: on utilisera pour cela le bloc subsystem .Il est possible de masquer la composition dun bloc, la structure en devient invisible, et dditer ensuite les paramtres dsirs (commandes Mask, Look under Mask, Edit Mask , etc ). Cliquer sur le bloc provoquera laffichage des paramtres.

Mmorisation, excution
Tout schma-bloc ainsi cr est mmoris par MATLAB avec lextension .mdl. On lexcute ou on le modifie par la suite en citant ce nom, comme pour un script MATLAB (extension .m). Pour la simulation des quations diffrentielles, noter lexistence du bloc dee (commande : >> dee) qui permet de spcifier un processus dans un bloc SIMULINK partir de son quation diffrentielle.

Liaison avec linterprteur Matlab


Les variables de lespace de travail de MATLAB (workspace) sont accessibles SIMULINK, et peuvent tre rfrences dans les paramtres des blocs au lieu de valeurs numriques. Inversement, il existe des blocs dont la fonction est de transfrer les variables de la simulation lespace de travail et vis versa (blocs To Workspace et From Workspace). Egalement, on peut excuter des scripts MATLAB depuis SIMULINK, ou stopper la simulation en rponse un vnement (bloc Stop). Laide en ligne sur les blocs de SIMULINK utilise lhypertexte et html. On y accde par les paramtres et les proprits des blocs (bouton droit de la souris) ; choisir le bouton Help ouvre une fentre daide permettant daboutir aux informations sur tous les blocs prdfinis.

ESSI, AUTOMATIQUE ET TRAITEMENT DU SIGNAL : SIGNAUX ET SYSTMES DE LAUTOMATIQUE, JPS, 2000 - 10 -

On pourra analyser les nombreux exemples SIMULINK fournis dans la bibliothque Demo, et les faire excuter. Cependant, pour pouvoir les modifier, prendre la prcaution de crer une copie de travail dans un rpertoire local de lutilisateur afin de ne pas modifier le rpertoire de MATLAB.

You might also like