SlideShare une entreprise Scribd logo
eivd                                               Cours MATLAB




       ´cole d’ing´nieurs du canton de Vaud (eivd )
       e           e
       D´partement d’´lectricit´ et d’informatique
          e            e        e
        institut d’Automatisation industrielle (iAi)




              Introduction au logiciel
                    MATLAB




                      in s t i t u t d '
                      Automatisation
                      in d u s t r i e l l e
         Michel ETIQUE, mars 2002, Yverdon-les-Bains




version 1.2                          1         mee matlab.tex19 mars 2002
eivd                                                                       Cours MATLAB


Table des mati`res
              e
1 Introduction                                                                                          4

2 M´thode de travail
     e                                                                                                  7
  2.1 Edition et sauvegarde des fichiers MATLAB . . . . . . . . . . . .                             .    7
       2.1.1 Editeur PFE . . . . . . . . . . . . . . . . . . . . . . . .                           .    7
  2.2 Aide en ligne . . . . . . . . . . . . . . . . . . . . . . . . . . . .                        .    7
  2.3 Cr´ation de fichiers de commandes et de fonctions utilisateur . .
          e                                                                                        .    8
       2.3.1 Fichiers de commande (”script files”) . . . . . . . . . . .                            .    8
       2.3.2 Fonctions . . . . . . . . . . . . . . . . . . . . . . . . . .                         .    8
  2.4 Sauvegarde de donn´es sur disque . . . . . . . . . . . . . . . . .
                          e                                                                        .    9
       2.4.1 R´pertoires de sauvegarde : D :USERS et compte EINET
               e                                                                                   .   10

3 Les bases de MATLAB                                                                                  11
  3.1 Cr´ation et calcul de vecteurs et matrices . . .
         e                                                .   .   .    .   .   .   .   .   .   .   .   11
      3.1.1 Vecteurs . . . . . . . . . . . . . . . . .    .   .   .    .   .   .   .   .   .   .   .   11
      3.1.2 Matrices . . . . . . . . . . . . . . . . .    .   .   .    .   .   .   .   .   .   .   .   11
      3.1.3 Construction de matrices particuli`res
                                                e         .   .   .    .   .   .   .   .   .   .   .   13
      3.1.4 Nombres complexes . . . . . . . . . . .       .   .   .    .   .   .   .   .   .   .   .   14
  3.2 Op´rations sur les tableaux . . . . . . . . . .
          e                                               .   .   .    .   .   .   .   .   .   .   .   14
  3.3 Repr´sentation graphique 2D . . . . . . . . .
            e                                             .   .   .    .   .   .   .   .   .   .   .   15
      3.3.1 Exemple . . . . . . . . . . . . . . . . .     .   .   .    .   .   .   .   .   .   .   .   16

4 Analyse de syst`mes dynamiques lin´aires ` l’aide de la boˆ `
                   e                         e       a                    ıte a
  outils control systems                                                                               17
  4.1 Introduction de fonctions de transfert . . . . . . . . . . . . . . . .                           17
       4.1.1 Introduction sous forme polynˆmiale . . . . . . . . . . . .
                                              o                                                        17
       4.1.2 Introduction sous forme de z´ros, pˆles et gain (”forme
                                              e       o
              d’Evans”) . . . . . . . . . . . . . . . . . . . . . . . . . . .                          18
  4.2 Introduction de mod`les d’´tat . . . . . . . . . . . . . . . . . . . .
                            e     e                                                                    19
  4.3 Passage d’un mod`le ` l’autre . . . . . . . . . . . . . . . . . . . .
                        e a                                                                            19
  4.4 Construction de sch´mas fonctionnels . . . . . . . . . . . . . . . .
                          e                                                                            20
       4.4.1 Fonctions series, cloop . . . . . . . . . . . . . . . . . . . .                           20
       4.4.2 Fonction feedback . . . . . . . . . . . . . . . . . . . . . . .                           22
  4.5 Calcul et trac´ de r´ponses de syst`mes dynamiques lin´aires . . .
                    e     e                e                      e                                    24
       4.5.1 R´ponse temporelle . . . . . . . . . . . . . . . . . . . . . .
                e                                                                                      24
       4.5.2 R´ponse fr´quentielle . . . . . . . . . . . . . . . . . . . . .
                e       e                                                                              28
  4.6 Analyse des propri´t´s des syst`mes . . . . . . . . . . . . . . . . .
                         ee            e                                                               28
  4.7 Calcul affichage des marges de gain et de phase . . . . . . . . . .                                28
  4.8 Trac´ du lieu d’Evans . . . . . . . . . . . . . . . . . . . . . . . . .
            e                                                                                          29
  4.9 Divers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .                         29



version 1.2                             2                             mee matlab.tex19 mars 2002
eivd                                                             Cours MATLAB


5 Les structures de contrˆle du ”langage” MATLAB
                         o                                                           30

6 Simulation de syst`mes dynamiques lin´aires et non-lin´aires
                       e                           e                    e
  avec la boˆ ` outils Simulink
            ıte a                                                                    31
  6.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .       31
  6.2 Exemple introductif : simulation d’un syst`me dynamique lin´aire
                                                   e                    e            33
      6.2.1 Mod´lisation . . . . . . . . . . . . . . . . . . . . . . . . .
                  e                                                                  34
      6.2.2 Construction du sch´ma . . . . . . . . . . . . . . . . . . .
                                   e                                                 34
      6.2.3 Initialisation des param`tres . . . . . . . . . . . . . . . . .
                                       e                                             39
      6.2.4 Simulation . . . . . . . . . . . . . . . . . . . . . . . . . . .         40
      6.2.5 Sauvegarde des signaux puis traitement dans l’espace de
             travail MATLAB . . . . . . . . . . . . . . . . . . . . . . . .          43
      6.2.6 Lancement de la simulation ` partir de MATLAB . . . . .
                                            a                                        46
  6.3 La biblioth`que standard . . . . . . . . . . . . . . . . . . . . . . .
                 e                                                                   47
      6.3.1 Sources . . . . . . . . . . . . . . . . . . . . . . . . . . . .          47
      6.3.2 Sinks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .        48
      6.3.3 Discrete . . . . . . . . . . . . . . . . . . . . . . . . . . . .         50
      6.3.4 Linear . . . . . . . . . . . . . . . . . . . . . . . . . . . . .         51
      6.3.5 Nonlinear . . . . . . . . . . . . . . . . . . . . . . . . . . .          52
      6.3.6 Connections . . . . . . . . . . . . . . . . . . . . . . . . . .          54
  6.4 Les S-functions de Simulink (version provisoire) . . . . . . . . . .           55
      6.4.1 Conventions d’appel des S-functions . . . . . . . . . . . . .            55
      6.4.2 Exemple . . . . . . . . . . . . . . . . . . . . . . . . . . . .          56
      6.4.3 Autres fonctionnalit´s de Simulink . . . . . . . . . . . . . .
                                   e                                                 56




version 1.2                             3                    mee matlab.tex19 mars 2002
eivd                                                                Cours MATLAB


1      Introduction
    Le pr´sent document a pour but de fournir les bases n´cessaires ` l’utilisation
          e                                                e          a
du logiciel MATLAB, dans le cadre des cours, des exercices et du laboratoire de
r´gulation automatique, pour lequel les boˆ ` outils Control System et Simulink
  e                                        ıtes a
sont employ´es. Il ne pr´sente donc ce logiciel que sous l’angle de son utilisation
               e         e
en r´gulation automatique.
     e
    Le logiciel MATLAB (MATrix LABoratory) est sp´cialis´ dans le domaine du
                                                       e      e
calcul matriciel num´rique. Tous les objets d´finis dans MATLAB le sont donc
                      e                          e
au moyen de vecteurs et de matrices/tableaux de nombres. Un ensemble impor-
tant d’op´rateurs et de fonctions MATLAB de base facilitent leur manipulation
           e
et des op´rations comme par exemple le produit et l’inversion matricielles (inv),
           e
la transposition (’) ou encore le calcul des valeurs propres (eig) font partie de
la biblioth`que standard. D’autres fonctions servant ` la cr´ation et ` la mani-
             e                                         a       e        a
pulation de matrices et de tableaux (diag, fliplr, flipud, rot90, rand, ones, zeros,
linspace, logspace) sont ´galement disponibles en nombre.
                         e
    L’environnement MATLAB se pr´sente sous la forme d’un espace de travail
                                      e
(Workspace), o` un interpr´teur de commandes ex´cute des op´rations et fonc-
                 u           e                       e            e
tions MATLAB. Les sources de celles-ci sont disponibles, ´crites en “ langage ”
                                                             e
MATLAB, voire en C ou en Fortran. L’utilisateur peut ` sa guise les modifier,
                                                           a
mais en s’en inspirant, il peut surtout cr´er et rajouter ses propres fonctions.
                                          e




    MATLAB offre ´galement plusieurs fonctions destin´es ` la r´solution (num´rique)
                    e                                      e a      e              e
d’´quations diff´rentielles lin´aires ou non-lin´aires par la m´thode de Runge -
  e               e              e                e                 e
Kutta (ode23 et ode45), l’int´gration num´rique (trapz, quad et quad8), la re-
                                  e             e
cherche des solutions d’´quations alg´briques (roots) ou transcendantes (fzero),
                           e              e
la cr´ation et manipulation de polynˆmes (poly, polyder, polyval, conv, deconv),
     e                                    o
la transform´e de Fourier rapide (fft, fft2, ifft).
              e
    Des fonctions propres au traitement de donn´es (exp´rimentales, telles que
                                                       e        e
celles obtenues au laboratoire), comme min, max, mean, cumsum, sort, std, diff,
ainsi que celles relatives ` l’interpolation (polyfit, interp1) sont autant d’outils tr`s
                           a                                                          e
pratiques pour l’ing´nieur analysant un probl`me pratique ou th´orique.
                      e                           e                    e


version 1.2                              4                      mee matlab.tex19 mars 2002
eivd                                                                 Cours MATLAB


     L’interface graphique de MATLAB est sans conteste l’un des points forts du
logiciel et facilite le trac´ de courbes et l’obtention de graphiques 2D ou 3D de
                             e
grande qualit´ (plot, stairs, stem, hist, mesh, surf, plot3). Le module Handle Gra-
                e
phics offre la possibilit´ de contrˆler int´gralement cette interface, permettant
                           e             o         e
ainsi ` l’utilisateur de mettre en forme tous ´l´ments d’un graphique, de cr´er ses
       a                                              ee                         e
propres menus (uimenu) ainsi que des objets graphiques tels que sliders (ascen-
seurs), boutons, menu surgissants (uicontrol) avec une facilit´ d´concertante.
                                                                      e e
     Le ”langage” MATLAB contient un minimum de structures de programma-
tion (structure it´rative, structure conditionnelle, sous-routine) mais reste tr`s
                      e                                                              e
rudimentaire. L’avantage est qu’il est tr`s simple et tr`s rapide ` programmer,
                                                  e               e        a
offrant une grande tol´rance (syntaxe simple, pas de d´finition de types, etc), ce
                         e                                      e
qui permet un gain appr´ciable en temps de mise au point. L’ing´nieur peut par ce
                           e                                            e
moyen ˆtre plus efficace dans l’analyse d’un probl`me, en concentrant ses efforts
         e                                                 e
sur celui-ci et non pas sur l’outil servant ` le r´soudre. En revanche, MATLAB ne
                                                  a      e
convient pas ` la programmation d’applications d’une certaine ampleur. Dans ce
                a
dernier cas, il est possible, sous certaines conditions, de programmer l’application
en C et de l’ex´cuter ` partir l’espace de travail MATLAB.
                  e      a
     Au logiciel de base s’ajoutent, selon la configuration choisie, les fonctions
provenant d’une s´rie de boˆ ` outils (toolbox ) d´di´s ` des domaines techniques
                      e         ıtes a                     e e a
sp´cifiques, comme
   e
     – le traitement de signal (signal processing toolbox ),
     – la r´gulation automatique (control system toolbox ),
            e
     – l’identification (system identification toolbox ),
     – les r´seaux de neurones (neural networks toolbox ),
             e
     – la logique floue (fuzzy logic toolbox ),
     – le calcul symbolique (symbolic math toolbox),
et bien d’autres encore. Ces boˆ       ıtes ` outils sont simplement constitu´es d’un
                                              a                               e
ensemble de fonctions sp´cialis´es programm´es ` partir des fonctions de base de
                             e      e                  e a
MATLAB, permettant par exemple la synth`se de filtres, le calcul de FFTs, la
                                                       e
simulation d’algorithmes flous ou encore le calcul de r´ponses harmoniques.
                                                                e
     Simulink n’est rien d’autre qu’une boˆ ` outils de MATLAB permettant au
                                                   ıte a
moyen d’une interface graphique ´volu´e la construction rapide et ais´e ainsi
                                          e      e                             e
que la simulation de sch´mas fonctionnels complexes, contenant des syst`mes
                              e                                                    e
lin´aires, non lin´aires voire non-stationnaires, y compris des op´rateurs logiques,
   e                e                                                   e
des outils math´matiques d’analyse, etc.
                   e
     Dans le cadre de la r´gulation automatique, MATLAB constitue avant tout un
                           e
tr`s puissant outil d’analyse des syst`mes dynamiques lin´aires, dont on peut tr`s
  e                                         e                       e                e
facilement obtenir les propri´t´s, comme les pˆles et z´ros (tf2zp, roots) ou le gain
                                 ee                     o     e
statique (dcgain, ddcgain) et tracer les r´ponses de tous types, la r´ponse impul-
                                                 e                          e
sionnelle (impulse), indicielle (step), ` un signal quelconque (lsim), ou harmonique
                                           a
(bode, nyquist). MATLAB se prˆte aussi bien ` l’analyse des syst`mes analogiques
                                    e                  a                 e
ou num´riques (step et dstep, impulse et dimpulse, bode et dbode, lsim et dlsim),
          e
sans qu’il soit cependant possible d’´tudier des syst`mes mixtes analogiques-
                                               e                e

version 1.2                               5                      mee matlab.tex19 mars 2002
eivd                                                              Cours MATLAB


num´riques. Diff´rentes commandes permettent de construire et d’analyser des
      e           e
syst`mes lin´aires de structure complexe, form´s de multiples blocs connect´s
     e        e                                   e                               e
tantˆt en s´rie, parall`le ou ´tant contre-r´actionn´s (series, cloop, feedback, pa-
     o      e           e      e            e        e
rallel, append, connect, blkbuild).
    Pour le traitement ais´ de syst`mes non-lin´aires, de mˆme que pour la construc-
                           e        e          e           e
tion de sch´mas fonctionnels complexes, on aura ` l’´vidence int´rˆt ` utiliser la
            e                                       a e              ee a
boˆ ` outils Simulink, qui constitue alors un outil id´al.
   ıte a                                                 e
    Incontestablement, MATLAB est un formidable outil pour l’ing´nieur, y com-
                                                                      e
pris pour celui traitant des probl`mes pratiques. Avec sa boˆ ` outils Simulink,
                                    e                          ıte a
il est maintenant une r´f´rence au niveau mondial, non seulement dans les uni-
                          ee
versit´s et instituts de recherche, mais aussi dans le milieu industriel.
        e
    MATLAB est disponible pour plusieurs plateformes (Windows, Macintosh,
Unix, Linux). Les coordonn´es du fournisseur pour la Suisse ci-dessous.
                              e

       The MathWorks GmbH
       Sch¨rmattstrasse 6+8
          u
       3073 G¨mligen
              u
       T´l´phone
        ee                         (031) 954.20.16
       T´l´fax
        ee                         (031) 954.20.22
       Services Internet           http://www.mathworks.com
                                   http://www.mathworks.ch
                                   ftp.mathworks.com
                                   http://www.scientific.de
       Autres liens :              http://www.sysquake.com
                                   http://www-rocq.inria.fr/scilab/




version 1.2                             6                     mee matlab.tex19 mars 2002
eivd                                                              Cours MATLAB


2       M´thode de travail
         e
2.1     Edition et sauvegarde des fichiers MATLAB
2.1.1    Editeur PFE
    Dans un premier temps, on peut se contenter d’introduire ses commandes
une ` une au niveau de l’espace de travail o` elles sont interpr´t´es directement.
     a                                      u                   ee
Cependant, par la suite, il est beaucoup plus pratique d’´crire sa s´quence de
                                                             e          e
commandes compl`te au moyen d’un ´diteur, puis de sauver le tout dans un
                    e                  e
fichier avec l’extension .M. Cette s´quence pourra alors ˆtre ex´cut´e dans MAT-
                                   e                     e      e e
LAB par simple introduction du nom du fichier. Sur les stations du laboratoire
d’Automatique (salle C05), ”l’´diteur pour programmeur PFE” est install´ et
                                e                                             e
son utilisation est recommand´e. On l’appelle soit par son icˆne ` partir du ges-
                              e                                o a
tionnaire de programmes, soit directement ` partir de MATLAB en s´lectionnant
                                           a                          e
File-New-M-file.




   De cette fa¸on, l’utilisateur peut rajouter ses propres fonctions et se cr´er
               c                                                                e
rapidement et facilement toute une panoplie d’outils (par exemple, ”synth`se    e
automatique d’un r´gulateur PID par la m´thode de Bode”). Les sources de
                     e                         e
MATLAB ´tant disponibles pour la plupart, ce n’est pas un probl`me que de
           e                                                           e
modifier ` sa guise l’une ou l’autre des routines, par exemple dans de but d’obtenir
         a
un trac´ particulier du lieu de Bode.
       e

2.2     Aide en ligne
   En plus de l’aide de Windows, une aide en ligne est disponible pour chaque
commande de MATLAB. Il suffit d’introduire :

version 1.2                             7                     mee matlab.tex19 mars 2002
eivd                                                               Cours MATLAB




help nom de commande


2.3     Cr´ation de fichiers de commandes et de fonctions
           e
        utilisateur
2.3.1   Fichiers de commande (”script files”)
   Un fichier de commande (script file) est un fichier ASCII d’extension .M conte-
nant une suite de commandes MATLAB. Il ˆtre ex´cut´ directement en tapant
                                            e      e e
simplement son nom dans l’espace de travail MATLAB.

2.3.2   Fonctions
   De nouvelles fonctions peuvent ˆtre ajout´es ` MATLAB par l’utilisateur. Il
                                  e         e a
suffit de cr´er un fichier de nom
          e

                                nom de fonction.M

contenant les commandes ` ex´cuter et dont l’entˆte a le format :
                        a e                     e

   function [liste des arguments de sortie] = nom de fonction(liste des arguments
                                      d’entr´e)
                                             e

Exemple La fonction suivante convertit la grandeur d’entr´e x en d´bibels et
                                                         e        e
la retourne dans y.

function [ y ] = l i n 2 d b ( x )
y = 20∗ log10 ( x ) ;
   Le fichier correspondant est sauv´ sous le nom lin2db.m, dans un r´pertoire
                                      e                                e
figurant dans le chemin de recherche de MATLAB.
   Contrairement aux fichiers de commande, les variables intervenant dans les
fonctions sont locales.
   Les commentaires documentant les fonctions peuvent ˆtre ins´r´s en les faisant
                                                         e       ee
pr´c´der du symbole %.
  e e
   D´tail pratique int´ressant, les premi`res lignes d’un fichier
     e                  e                e

                                 nom de fichier.m

pr´c´d´es du symbole % sont affich´es lorsque l’on tape :
  e e e                         e

                                help nom de fichier


version 1.2                              8                     mee matlab.tex19 mars 2002
eivd                                                              Cours MATLAB


    Ceci permet de fournir une aide en ligne pour chaque fonction utilisateur
nouvellement cr´´e. Pour la fonction lin2db, on documentera par exemple comme
               ee
suit :

function [ y ] = l i n 2 d b ( x )
%f u n c t i o n [ y ] = l i n 2 d b ( x )
%c o n v e r s i o n en dB
y = 20∗ log10 ( x ) ;
       En tapant help lin2db, on obtiendra alors :




2.4       Sauvegarde de donn´es sur disque
                            e
   Les variables d´finies dans l’espace de travail MATLAB peuvent ˆtre sauve-
                  e                                              e
gard´es dans des fichiers ASCII par la commande :
    e

save cheminnom_de_fichier.dat nom_de_variable -ascii

    Un tel fichier ASCII peut ˆtre ult´rieurement relu soit par MATLAB (fonction
                              e      e
load) soit par d’autres programmes (Excel, Word, etc). Dans le premier cas, il
est cependant conseill´ de sauver directement la variable dans un fichier binaire
                      e
*.MAT de format sp´cifique ` MATLAB :
                    e        a

save cheminnom_de_fichier nom_de_variable

La fenˆtre graphique peut ˆtre soit imprim´e directement, soit sauv´e dans un
       e                    e                e                         e
fichier, lequel peut ˆtre int´gr´ dans un document (menu importation d’image)
                    e       e e
ou imprim´ ult´rieurement. Signalons, parmi les diff´rents formats de fichiers dis-
           e e                                       e
ponibles, le format PostScript qui fournit une qualit´ irr´prochable. Par exemple,
                                                     e e
le sauvetage de la fenˆtre graphique courante s’effectue par :
                      e

print chemin nom_de_fichier.eps -deps

pour le format PostScript et par


version 1.2                                  9                mee matlab.tex19 mars 2002
eivd                                                                 Cours MATLAB


print chemin nom_de_fichier.wmf -dmeta

pour le format Windows Meta File. Auparavant, il faut prendre garde ` ce que la
                                                                      a
fenˆtre graphique courante soit bien celle que l’on souhaite imprimer en tapant
   e

figure ( n u m e r o d e l a f e n e t r e a i m p r i m e r )


Attention : la commande print est tr`s rudimentaire et ne donne aucun message
                                        e
en cas d’´chec ou si le fichier existe d´j` !
         e                             ea
   La copie de la fenˆtre graphique est ´galement possible par l’interm´diaire
                       e                     e                         e
du clipboard, ce qui permet par exemple de sauver la fenˆtre dans WordPerfect,
                                                        e
Word ou PowerPoint (choisir le format WMF plutˆt que le bitmap).
                                                o

2.4.1    R´pertoires de sauvegarde : D :USERS et compte EINET
          e
    Il faut indiquer le chemin correspondant ` l’endroit o` MATLAB trouvera
                                                 a            u
le fichier de commande ou la fonction ´crite par l’utilisateur. Dans le cas de la
                                         e
version MATLAB install´e sur le r´seau du laboratoire d’Automatique de l’eivd,
                          e         e
il suffit ` l’utilisateur de sauver ses propres fonctions dans le r´pertoire :
         a                                                       e

                                        D :USERS

qui est dans le chemin de recherche de MATLAB. Le disque D : est local et
les donn´es qui s’y trouvent peuvent donc ˆtre modifi´es voire carr´ment dis-
          e                                  e          e            e
paraˆıtre d’un cours ` l’autre. A la fin de sa session de travail, on aura donc
                     a
int´rˆt ` sauvegarder ses fichiers sur disquette ou son compte EINET. Le docu-
   ee a
ment s:regulationdiversconnection_EINET.doc explique la mani`re de se
                                                                       e
connecter son disque EINET ` partir du domaine iAi.
                             a




version 1.2                                  10                  mee matlab.tex19 mars 2002
eivd                                                               Cours MATLAB


3        Les bases de MATLAB
3.1       Cr´ation et calcul de vecteurs et matrices
            e
3.1.1      Vecteurs
       Un vecteur-ligne est introduit de la fa¸on suivante :
                                              c

v =[5,2,13,4]
Le vecteur v s’affiche alors ` l’´cran :
                           a e

v=
5 2 13 4
Si l’introduction est termin´e par un point-virgule, on ´vite l’affichage du vecteur
                            e                           e
v. Un vecteur-colonne peut ˆtre introduit en rempla¸ant les virgules par des
                               e                         c
points-virgules ou des retours de chariot. L’acc`s aux composantes d’un vecteur
                                                e
s’effectue directement par des commandes du genre :

v (3)
ce qui donne ` l’´cran :
             a e

ans =
13
Si comme dans le cas pr´sent, v(3) n’est pas affect´ ` une variable, par une
                          e                            e a
commande de la forme x=v(3) , MATLAB copie d’office le r´sultat dans la variable
                                                           e
syst`me ans (answer ), alors disponible pour le calcul suivant.
    e

Remarque Dans MATLAB, les indices des vecteurs et matrices doivent ˆtre dese
entiers positifs. L’indice z´ro n’est donc pas plus admis que les indices n´gatifs.
                            e                                              e

3.1.2      Matrices
       Une matrice peut ˆtre construite de diff´rentes mani`res :
                        e                     e           e

m= [ 5 , 2 , 1 3 , 4 ; 6 , 8 , 3 , 1 0 ; 0 , 1 , 2 0 , 9 ]
et l’affichage devient :

m=
5 2 13 4
6 8 3 10

version 1.2                                            11      mee matlab.tex19 mars 2002
eivd                                                             Cours MATLAB


0 1 20 9
ou encore, ayant d´fini pr´alablement les vecteurs-ligne v1, v2 et v3 :
                  e      e

v1 = [ 5 , 2 , 1 3 , 4 ] ;
v2 = [ 6 , 8 , 3 , 1 0 ] ;
v3 = [ 0 , 1 , 2 0 , 9 ] ;
m=[ v1 ; v2 ; v3 ]
L’acc`s ` un ´l´ment de la matrice s’effectue par :
     e a     ee

m( 2 , 4 )
et l’on obtient :

ans =
10
Le remplacement de 2 par : (deux points) permet d’obtenir toute la colonne 4 :

m( : , 4 )
et l’´cran affiche le vecteur-colonne :
     e

ans =
4
10
9
De mˆme, l’affichage d’une sous-matrice s’obtient par :
    e

m( 2 : 3 , 2 : 4 )
et l’´cran affiche :
     e

ans =
8 3 10
1 20 9
L’acc`s aux colonnes 2 et 4 de la matrice m se r´alise comme suit :
     e                                          e

m( : , [ 2 , 4 ] )
ce qui produit :



version 1.2                             12                   mee matlab.tex19 mars 2002
eivd                                                              Cours MATLAB


ans =
2 4
8 10
1 9
Parmi les op´rations matricielles qui ont une certaine importance pratique, si-
             e
gnalons l’op´rateur de transposition
            e

m’
donnant dans le cas de l’exemple

ans =
5 6 0
2 8 1
13 3 20
4 10 9
et la fonction eig qui calcule les valeurs propres d’une matrice. Soit la matrice
carr´e 4 × 4 form´e de composantes al´atoires (ici utilisation de la fonction rand)
    e             e                    e

A=rand ( 4 , 4 )
A=
0.2190 0.9347         0.0346    0.0077
0.0470 0.3835         0.0535    0.3834
0.6789 0.5194         0.5297    0.0668
0.6793 0.8310         0.6711    0.4175
       Les valeurs propres (eigenvalues) sont :

eig (A)
ans =
1. 409 5
0.1082 + 0.4681 i
0.1082 − 0.4681 i
−0.0763


3.1.3      Construction de matrices particuli`res
                                             e
    Les routines ones et zeros permettent de construire des matrices dont tous les
´l´ments sont ´gaux ` 1 respectivement ` 0. Voir ´galement eye (matrice identit´),
ee            e      a                  a        e                             e
diag (matrice diagonale), linspace (vecteur dont les composantes sont espac´es e
lin´airement entre deux limites) et logspace (vecteur dont les composantes sont
   e
espac´es logarithmiquement entre deux limites).
      e

version 1.2                                13                 mee matlab.tex19 mars 2002
eivd                                                                            Cours MATLAB


3.1.4    Nombres complexes
   Les vecteurs et matrices peuvent avoir des composantes complexes. Les nombres
complexes sont introduits comme suit :

x = a + j ∗b ;
ou

x = a + i ∗b ;
    L’unit´ de l’axe imaginaire est donc indiff´remment i ou j. Des fonctions sont
          e                                       e
pr´vues pour le calcul de la partie r´elle (real(x)), de la partie imaginaire (imag(x)),
  e                                  e
du module (abs(x)), de l’argument (angle(x)) et du conjugu´ complexe (conj(x)).
                                                                   e

3.2     Op´rations sur les tableaux
          e
    On rappelle le slogan publicitaire de MATLAB, ”live is to short to spend
time with for loops”, pour mentionner qu’effectivement, la majeure partie des
op´rations peuvent s’effectuer sans boucles de type for. Par exemple, le calcul du
   e
sinus cardinal
                                            sin (ϑ)
                                 sinc (ϑ) =
                                               ϑ
de l’angle θ pour les valeurs de suivantes

t h e t a =linspace (−4∗ pi , 4∗ pi , 1 0 0 ) ;
soit 100 valeurs espac´es lin´airement entre −4π et +4π, se fait avantageusement
                      e      e
dans MATLAB par

s i n c = sin ( t h e t a ) . / t h e t a ;
o` le point pr´c´dant l’op´rateur de division indique qu’il ne s’agit pas d’une
 u             e e         e
op´ration matricielle, mais d’une op´ration ´l´ment par ´l´ment sur deux ta-
   e                                  e       ee            ee
bleaux. Il faut donc bien faire la distinction entre par exemple le produit ma-
triciel
        a11 a12           b11 b12             a11 · b11 + a12 · b21 a11 · b12 + a12 · b22
                      ·                =
        a21 a22           b21 b22             a21 · b11 + a22 · b21 a21 · b12 + a22 · b22

et le produit, ´l´ment par ´l´ment de deux tableaux :
               ee          ee

                     a11 a12           b11 b12            a11 · b11 a12 · b12
                                   ·                  =
                     a21 a22           b21 b22            a21 · b21 a22 · b22



version 1.2                                      14                       mee matlab.tex19 mars 2002
eivd                                                                 Cours MATLAB


Remarque Ici, la fonction linspace a ´t´ utilis´e, une variante ´tant d’´crire
                                     ee        e                e       e

t h e t a =−4∗pi : 8∗ pi / ( 1 0 0 − 1 ) : 4 ∗ pi ;


3.3     Repr´sentation graphique 2D
            e
   Plusieurs types de repr´sentations graphiques 2D sont disponibles :
                             e
 FONCTION                      DESCRIPTION
                               Repr´sente chaque colonne de la matrice y en fonction
                                     e
 plot(y)
                               de l’indice du rang.
                               Repr´sente les colonnes de y en fonction de celles de x.
                                     e
 plot(x,y)
                               Il faut que x ait soit une seule colonne, soit autant de
 plot(x,cos(x))
                               colonnes que y, et r´ciproquement.
                                                    e
 plot(t1,y1,t2,y2)             Repr´sente y1 en fonction de t1 et y2 en fonction de t2
                                     e
 plot(t1,y1,’ :’,t2,y2,’-.’)   (y1 et t1 doivent avoir le mˆme nombre de lignes, de
                                                                e
 plot(t1,y1,’o’,t2,y2,’x’)     mˆme que y2 et t2)
                                 e
                               Repr´sente les colonnes y1 et y2 en fonction de t
                                     e
 plot(t,[y1,y2])
                               (y1, y2 et t doivent avoir le mˆme nombre de lignes)
                                                                 e
                               Repr´sente chaque ´l´ment de y en fonction de son indice.
                                     e             ee
                               Le trac´ est en escaliers, utile pour les r´ponses de
                                       e                                     e
 stairs(y)
                               syst`mes num´riques (pas d’interpolation entre les points
                                    e         e
                               repr´sent´s)
                                    e    e
                               Repr´sente chaque ´l´ment de y en fonction de son indice.
                                     e             ee
 stem(y)                       Chaque point est repr´sent´ par symbole “ ´chantillon ”,
                                                      e     e             e
                               ce qui est utile pour les syst`mes num´riques.
                                                              e       e
                               Repr´sente A (ici en [dB]) en fonction de w, l’´chelle
                                     e                                           e
 semilogx(w,20*log10(A)) ´tant logarithmique.
                               e
                               (A et w doivent avoir le mˆme nombre d’´l´ments)
                                                           e             ee
                               Repr´sente phase en fonction de w, l’´chelle ´tant loga-
                                     e                                e       e
 semilogx(w,phase)             rithmique.
                               (phase et w doivent avoir le mˆme nombre d’´l´ments)
                                                                 e            ee
                               Repr´sente y en fonction de x, les ´chelles ´tant toutes
                                     e                              e       e
 loglog(x,y)                   deux logarithmiques.
                               (x et y doivent avoir le mˆme nombre d’´l´ments)
                                                          e             ee

    Il est de plus recommand´ de consulter la documentation MATLAB (ou l’aide
                             e
en ligne) pour les commandes axis, hold, et subplot, title, xlabel, ylabel, gtext ainsi
que figure. Cette derni`re instruction permet de sp´cifier le num´ro de la fenˆtre
                        e                           e                e             e
graphique dans laquelle le trac´ doit ˆtre effectu´. L’ex´cuter juste avant l’une
                                e      e          e         e
des instructions de tra¸age active directement la fenˆtre graphique qui apparaˆ
                        c                              e                             ıt
alors ` l’´cran.
       a e



version 1.2                                    15                mee matlab.tex19 mars 2002
eivd                                                                                                                Cours MATLAB


3.3.1         Exemple
   La suite des instructions ci-dessous calcule et trace le sinus, le sinus carr´ ainsi
                                                                                e
que le sinus cardinal de l’angle θ d´fini ` l’aide de l’instruction linspace :
                                    e    a
t h e t a =linspace (−4∗ pi , 4 ∗ pi , 1 0 0 ) ;
s i n c = sin ( t h e t a ) . / t h e t a ;
s i n u s 2 = sin ( t h e t a ) . ˆ 2 ;
figure ( 1 ) , plot ( t h e t a , sin ( t h e t a ) , t h e t a , s i n u s 2 , ’ − . ’ , t h e t a , s i n c , ’ x ’ )
m = [ sin ( t h e t a ) ’ , s i n u s 2 ’ , s i n c ’ ] ;
figure ( 2 ) , plot ( t h e t a , m)

Le r´sultat est le suivant :
    e
                          1


                        0.8


                        0.6


                        0.4


                        0.2


                          0


                       −0.2


                       −0.4


                       −0.6


                       −0.8


                        −1
                        −15              −10             −5               0               5              10               15
                          1


                        0.8


                        0.6


                        0.4


                        0.2


                          0


                       −0.2


                       −0.4


                       −0.6


                       −0.8


                        −1
                        −15              −10             −5               0               5              10               15




version 1.2                                                            16                                     mee matlab.tex19 mars 2002
eivd                                                                                                                               Cours MATLAB


4           Analyse de syst`mes dynamiques lin´aires `
                             e                     e  a
            l’aide de la boˆ ` outils control systems
                           ıte a
4.1         Introduction de fonctions de transfert
4.1.1        Introduction sous forme polynˆmiale
                                          o
   L’introduction de fonctions de transfert s’effectue en deux temps, les num´rateur
                                                                             e
et d´nominateur devant ˆtre donn´s s´par´ment. Le principe est simple : les
    e                     e         e e e
num´rateur et d´nominateur apparaissent sous forme de vecteurs-ligne, les com-
    e           e
posantes desquels ´tant les coefficients des puissances d´croissantes de s (syst`mes
                  e                                     e                     e
analogiques) ou de z (syst`mes num´riques).
                           e         e
   Soit par exemple la fonction de transfert
                                                                                  1 + s · 10
                                                   G(s) = 36 ·
                                                                              1 + s · 2 + s2 · 0.1
Son introduction dans MATLAB se fait par les commandes :

numG= 3 6 ∗ [ 1 0 , 1 ] ;
denG = [ 0 . 1 , 2 , 1 ] ;
  Le coefficient de s0 (ou z 0 pour les syst`mes num´riques), qu’il soit nul ou
                                           e          e
non, doit toujours ˆtre donn´. Ainsi, la fonction de transfert de l’int´grateur
                   e        e                                          e
                                                                                      2.71828
                                                                  G (s) =
                                                                                         s
est introduite sous la forme :

numG= 2 . 7 1 8 2 8 ∗ [ 1 ] ;
denG = [ 1 , 0 ] ;
   Les noms donn´s aux num´rateurs et d´nominateurs sont libres. On aura
                    e            e            e
toutefois int´rˆt ` ˆtre organis´ et rigoureux dans les notations employ´es ; par
             ee ae              e                                       e
exemple, en se r´f´rant au sch´ma fonctionnel universel, en r´gulation de corres-
                 ee            e                              e
pondance (v(t) = 0),

                                                                                                 v       ( t )




                                                                                             +
                         e ( t )                      u   ( t )                          +
             +
w   ( t )            5             G       ( s )                    G         ( s )                  5           G         ( s )                                            y        ( t )
                                       c                                a 1                                          a 2

                 -




                                                                                                                                               f _   0   1   _   0   3   . e p   s




version 1.2                                                                       17                                        mee matlab.tex19 mars 2002
eivd                                                                Cours MATLAB


on ne saura que trop recommander l’emploi d’une notation semblable ` la sui-
                                                                   a
vante,

numGc= 2 ∗ [ 1 , 2 0 ] ;
denGc = [ 1 , 0 ] ;
numGa1=1e − 3 ∗ [ 1 , 1 0 ] ;
denGa1 = [ 1 , 2 , 0 . 1 1 ] ;
numGa2 = 3 6 ∗ [ 1 , 0 . 1 ] ;
denGa2 = [ 1 , 2 0 , 1 0 ] ;
pour les fonctions de transfert
                                            s + 20
                             Gc (s) = 2 ·
                                               s
                                                s + 10
                            Ga1 (s) = 0.01 ·
                                               s2
                                              + 2 · s + 0.11
                                             (s + 0.1)
                            Ga2 (s) = 36 · 2
                                          s + 20 · s + 10
Notons qu’` partir de la version 5.0 de MATLAB, il existe des objets fonction de
            a
transfert, que l’on peut introduire comme suit (cas de l’exemple ci-dessus) :

numGc= 2 ∗ [ 1 , 2 0 ] ;
denGc = [ 1 , 0 ] ;
Gc=t f ( numGc, denGc )
numGa1=1e − 3 ∗ [ 1 , 1 0 ] ;
denGa1 = [ 1 , 2 , 0 . 1 1 ] ;
Ga2=t f ( numGa1, denGa2 )
numGa2 = 3 6 ∗ [ 1 , 0 . 1 ] ;
denGa2 = [ 1 , 2 0 , 1 0 ] ;
Ga2=t f ( numGa2, denGa2 )
On peut alors calculer sans autre :

Go=Gc∗Ga1∗Ga2 ;
Gw=Go/(1+Go) ;
Gv=Ga2/(1+Gc∗Ga1∗Ga2 ) ;


4.1.2    Introduction sous forme de z´ros, pˆles et gain (”forme d’Evans”)
                                     e      o
    Il est ´galement possible d’introduire une fonction de transfert par le biais de
           e
ses z´ros, pˆles et de son facteur d’Evans k. Les z´ros et pˆles doivent apparaˆ
     e       o                                     e        o                    ıtre
sous forme de vecteurs-colonne. Soit par exemple la fonction de transfert :


version 1.2                                  18                 mee matlab.tex19 mars 2002
eivd                                                                 Cours MATLAB




                     5.32         (s + 3)2 + 72
             G (s) =      ·
                       s    (s + 11) · (s + 5)2 + 32
                     5.32          (s − (−3 + 7j)) · (s − (−3 − 7j))
                   =      ·
                       s    (s − (−11)) · (s − (−5 + 3j)) · (s − (−5 − 3j))

       La suite de commandes n´cessaires est simplement :
                              e

zG=[−3+j ∗7,−3− j ∗ 7 ] ’ ;
sG=[0,−10,−5+ j ∗3,−5− j ∗ 3 ] ’ ;
kG=5.32;
    Il va sans dire que l’on privil´giera cette forme lorsque les num´rateur et
                                   e                                 e
d´nominateur de la fonction de transfert du syst`me G(s) ou G(z) ne sont pas
 e                                                e
directement disponibles sous forme de polynˆmes.
                                             o

4.2       Introduction de mod`les d’´tat
                             e      e
       Si un syst`me est connu sous la forme de ses ´quations d’´tat (lin´aires),
                 e                                  e           e        e


                                   dx
                                      =A·x+B·u
                                   dt
                                    y =C ·x+D·u

il suffit d’indiquer ` MATLAB les quatre matrices A, B, C, et D, par exemple :
                   a

A= [ − 3 , 0 ; 0 , 7 ] ;
B= [ 1 0 , 0 , 1 ] ’ ;
C= [ 1 , 2 ; 3 , 4 ] ;
D= [ 0 ] ;


4.3       Passage d’un mod`le ` l’autre
                          e a
    Les pˆles et z´ros des fonctions de transfert sont obtenus ` l’aide de la fonction
         o        e                                            a
tf2zp (transfer function to zero pole) :

[ zG, sG , kG]= t f 2 z p (numG, denG ) ;
   MATLAB place alors les z´ros et les pˆles dans les vecteurs-colonne zG et sG,
                              e           o
respectivement, et le facteur d’Evans dans la variable kG. Les noms zG, sG et kG
sont arbitraires. On acc`de ` ces valeurs par exemple en tapant leur nom :
                        e a


version 1.2                                 19                   mee matlab.tex19 mars 2002
eivd                                                                                                                           Cours MATLAB




sG
            MATLAB affiche :

sG=
−19.4868
−0.5132
    Remarque : un polynˆme est introduit sous la forme d’un vecteur-ligne v
                           o
dont les composantes repr´sentent les coefficients des puissances d´croissantes ;
                            e                                     e
ses racines sont obtenues par la fonction roots(v)
    Toute une cat´gorie de routines permettent de passer d’un mod`le ` l’autre :
                   e                                             e a
 forme polynˆmiale → forme tf2zp [zG,sG,kG]=tf2zp(numG,denG) ;
               o
 en z´ros, pˆles et gain
      e      o
 forme     polynˆmiale
                  o         → tf2ss     [AG,BG,CG,DG]=tf2ss(numG,denG) ;
 mod`le d’´tat
       e    e
 forme en z´ros, pˆles et gain zp2tf [numG,denG]=zp2tf(zG,sG,kG) ;
            e       o
 → forme polynˆmiale
                  o
 forme en z´ros, pˆles et gain zp2ss [AG,BG,CG,DG]=zp2ss(zG,sG,kG) ;
            e       o
 → mod`le d’´tat
         e      e
 mod`le d’´tat → forme po- ss2tf
       e    e                           [numG,denG]=ss2tf(AG,BG,CG,DG) ;
 lynˆmiale
     o
 mod`le d’´tat → forme en ss2zp [zG,sG,kG]=ss2zp(AG,BG,CG,DG) ;
       e    e
 z´ros, pˆles et gain
  e      o
 mod`le d’´tat → autre ss2ss [AG2,BG2,CG2,DG2]=ss2ss(AG,BG,CG,DG,T) ;
       e      e
 mod`le d’´tat, avec matrice
       e    e
 de transformation T


4.4           Construction de sch´mas fonctionnels
                                 e
4.4.1          Fonctions series, cloop
    Prenons pour exemple le sch´ma fonctionnel universel, dont on souhaite obte-
                                 e
nir les fonctions de transfert en boucle ouverte Go (s) et en boucle ferm´e Gw (s).
                                                                         e
Pour ce faire, faut proc´der par ´tapes, comme l’indique la figure ci-apr`s :
                         e        e                                       e

                                                                                             v       ( t )




                                                                                         +
                            e ( t )                   u   ( t )                      +
                +
w   ( t )               5             G       ( s )               G         ( s )                5           G         ( s )                                            y        ( t )
                                          c                           a 1                                        a 2

                    -




                                                                                                                                           f _   0   1   _   0   3   . e p   s




version 1.2                                                                     20                                      mee matlab.tex19 mars 2002
eivd                                                                                 Cours MATLAB


   1. Calcul de Ga (s) par la mise en s´rie de Ga1 et Ga2 .
                                       e
      On fait usage de la fonction series :
      [ numGa, denGa]= s e r i e s ( numGa1, denGa1 , numGa2, denGa2 ) ;
   2. Calcul de Go (s) par la mise en s´rie de Gc et Ga . On proc`de de mˆme :
                                        e                        e       e
      [ numGo, denGo]= s e r i e s ( numGc, denGc , numGa, denGa ) ;
   3. Calcul de Gw (s) par fermeture de la boucle (retour unitaire). On fait usage
      de la fonction cloop comme suit :
      [ numGw, denGw]= c l o o p ( numGo, denGo ) ;
   4. La r´ponse indicielle en boucle ferm´e peut alors ˆtre calcul´e et trac´e par :
           e                              e             e          e         e
      s te p (numGw, denGw)

                                                      Step Response

                              1.5




                               1
                  Amplitude




                              0.5




                               0
                                    0   5   10   15          20       25   30   35      40
                                                       Time (sec.)




       On peut au passage calculer le gain statique (gain DC) de Gw (s).
       dcgain (numGw, denGw)
   5. La r´ponse harmonique en boucle ouverte peut par exemple aussi ˆtre cal-
           e                                                         e
      cul´e :
         e
      bode ( numGo, denGo )




version 1.2                                      21                             mee matlab.tex19 mars 2002
eivd                                                                                                                                                Cours MATLAB


                                                                                                  Bode Diagrams




                                                          50



                                                           0

                     Phase (deg); Magnitude (dB)

                                                         −50



                                                     −100



                                                     −100

                                                     −120

                                                     −140

                                                     −160

                                                     −180

                                                     −200

                                                     −220
                                                          −3                   −2                 −1                     0               1                2
                                                        10                    10              10                    10             10                10

                                                                                             Frequency (rad/sec)




   6. Finalement, on peut afficher la configuration pˆle-z´ro de Gw (s) :
                                                  o e
      pzmap (numGw, denGw)

                                                                                                  Pole zero map
                                                    1


                                                   0.8


                                                   0.6


                                                   0.4


                                                   0.2
                 Imag Axis




                                                    0


                                       −0.2


                                       −0.4


                                       −0.6


                                       −0.8


                                                   −1
                                                    −1          −0.8   −0.6         −0.4   −0.2           0        0.2       0.4   0.6        0.8     1
                                                                                                       Real Axis




4.4.2   Fonction feedback
   La fonction feedback est utile pour calculer la fonction de transfert ´quivalente
                                                                         e
de syst`mes ayant pour sch´ma fonctionnel la figure ci-dessous, soit :
       e                    e

                                                                               Y (s)        Ga (s)
                                                               Gv (s) =              =
                                                                               V (s)   1 + Ga (s) · Ga (s)

version 1.2                                                                                 22                                               mee matlab.tex19 mars 2002
eivd                                                                                                  Cours MATLAB




[ numGv, denGv]= f e ed ba c k ( numGa, denGa , numGc, denGc , s i g n e ) ;


                                                                       1
        v   ( t )                              5               G                ( s )                                         y               ( t )
                                                                           aI


                                           -



                                                                       1
                                                                   G       cI
                                                                                ( s )
                                                                                                        f _   0   1   _   0       6   . e p    s




    Si le param`tre signe n’est pas sp´cifi´ ou vaut −1, la fonction de transfert
                 e                       e e
Gc (s) est en contre-r´action, alors qu’elle est r´actionn´e pour une valeur de signe
                      e                           e       e
´gale ` 1.
e     a
    L’exemple ci-dessous calcule le fonction de transfert en r´gulation de maintien
                                                               e
du syst`me asservi pr´c´demment trait´.
        e               e e                e

[ numG1, denG1 ] = s e r i e s ( numGc, denGc , numGa1, denGa1 ) ;
[ numGv, denGv ] = fe e d b a c k ( numGa2, denGa2 , numG1, denG1 ) ;

                                                            Step Response




                                 1.5




                                  1
                    Amplitude




                                 0.5




                                  0




                                −0.5




                                       0           5   10              15               20   25               30
                                                             Time (sec.)




version 1.2                                                   23                                  mee matlab.tex19 mars 2002
eivd                                                                                                 Cours MATLAB


4.5         Calcul et trac´ de r´ponses de syst`mes dynamiques
                          e     e              e
            lin´aires
               e
4.5.1        R´ponse temporelle
              e
    Lorsque qu’aucun argument de sortie n’est sp´cifi´ (lhs, left handside argu-
                                                     e e
ment), le calcul et le trac´ des r´ponses sont simultan´s.
                           e      e                       e
    Les fonctions impulse, step, lsim, et pour les syst`mes num´riques, dimpulse,
                                                        e         e
dstep, dlsim sont disponibles. Leur signification sont donn´es sur les tables 4.5.1 page
                                                            e
suivante et 4.5.1 page 26.




    Le trac´ correspondant est directement obtenu en tapant les commandes telles
            e
que donn´es dans les tableaux ci-dessus.
          e
    Les param`tres t, n, et w sont des optionnels et MATLAB les d´termine lui-
                e                                                   e
mˆme par d´faut. Si l’on souhaite les fixer, on peut par exemple le faire selon les
  e           e
indications du tableau 4.5.1 page 26.



Lors du calcul de la r´ponse harmonique de syst`mes num´riques, il convient de
                        e                             e        e
sp´cifier la p´riode d’´chantillonnage h.
  e           e         e
    Il est souvent utile d’effectuer ces calculs de r´ponse sans tracer celle-ci imm´diatement.
                                                    e                              e
Dans ce cas, on proc`de comme ci-dessus en sp´cifiant toutefois des arguments
                        e                             e
de sortie dans lesquels MATLAB sauvera les r´sultats de ses calculs :
                                                  e


 SYSTEMES ANALOGIQUES                                                SYSTEMES NUMERIQUES
 [y,x,t]=impulse(numG,denG,t) ;                                      [y,x]=dimpulse(numH,denH,n) ;
 [y,x,t]=step(numG,denG,t) ;                                         [y,x]=dstep(numH,denH,n) ;
 [y,x]=lsim(numG,denG,u,t) ;                                         [y,x]=dlsim(numH,denH,u) ;

y est un vecteur-colonne contenant la r´ponse cherch´e et t un vecteur-ligne
                                          e               e
contenant les instants auxquels elle a ´t´ calcul´e. x est une matrice contenant
                                       ee         e
l’´volution du vecteur d’´tat syst`me dynamique. La figure suivante montre le
  e                      e        e
calcul pr´alable des r´ponses imoulsionnelle et indicielle avant leur trac´ ` l’aide
          e           e                                                   ea
de la fonction plot.
[ ys , x , t ] = s t e p (numGw, denGw ) ;
[ y i ] = i m p u l s e (numGw, denGw, t ) ;
figure
plot ( t , [ y i , ys ] )
t i t l e ( ’ R´ ponses i m p u l s i o n n e l l e
               e                                      et   indicielle   en b o u c l e ferm´ e ’ )
                                                                                           e
xlabel ( ’ t [ s ] ’ )



version 1.2                                                     24                             mee matlab.tex19 mars 2002
eivd                                                                                                       Cours MATLAB



 SYSTEMES ANALO-         REPONSE              EXEMPLE
 GIQUES
                                                          25




                                                          20




                                                          15




                                              Amplitude
                                                          10




                                                           5




                                                           0
                                                            0            0.5            1         1.5                2            2.5         3
 impulse(numG,denG,t)    r´ponse impul-
                          e                                                                    Time (secs)


                         sionnelle
                                                               1



                                                           0.8



                                                           0.6
                                              Amplitude




                                                           0.4



                                                           0.2



                                                               0



                                                          −0.2
                                                              0              5          10         15                20           25          30
 step(numG,denG,t)       r´ponse
                          e           indi-                                                    Time (secs)


                         cielle
                                                           0.25

                                                            0.2

                                                           0.15

                                                            0.1

                                                           0.05
                                              Amplitude




                                                                   0

                                                          −0.05

                                                           −0.1

                                                          −0.15

                                                           −0.2

                                                          −0.25
                                                               0       0.2       0.4   0.6   0.8       1       1.2        1.4   1.6     1.8   2
 lsim(numG,denG,u,t)     r´ponse ` une
                          e         a                                                              Time (secs)


                         entr´e u quel-
                              e
                         conque d´finiee
                         par l’utilisateur
 initial(A,B,C,D,x0,t)   r´ponse
                          e              du
                         syst`me lorsque
                              e
                         ses     conditions
                         initiales sont x0
                                   Tab. 1 –

version 1.2                            25                                                          mee matlab.tex19 mars 2002
eivd                                                                 Cours MATLAB




 SYSTEMES NUMERIQUES                         REPONSE
 dimpulse(numH,denH,n)                       r´ponse impulsionnelle
                                              e
 dstep(numH,denH,n)                          r´ponse indicielle
                                              e
 dlsim(numH,denH,u)                          r´ponse ` une entr´e u quelconque
                                              e        a            e
                                             d´finie par l’utilisateur
                                               e
 dinitial(A,B,C,D,x0,n)                      r´ponse du syst`me lorsque ses condi-
                                              e                e
                                             tions initiales sont x0

                                    Tab. 2 –




 PARAMETRE           SIGNIFICATION                     EXEMPLE
 t                   (facultatif)                      t=[0 :0.01 :0.2] ;
                     vecteur-ligne      de  temps,     ou
                     sp´cifiant les instants o` la
                        e                      u       t=linspace(0,0.2,201) ;
                     r´ponse doit ˆtre calcul´e
                      e             e        e         (cr´e un vecteur temps variant entre
                                                          e
                     (ce param`tre est obligatoire
                                 e                     0[s] et 0.2[s] par pas de 0.01[s])
                     si l’on utilise lsim)
 n                   (facultatif)                      n=10 ;
                     nombre d’´chantillons d´sir´s
                                 e           e e       (seuls les 10 premiers ´chantillons de
                                                                               e
                                                       la r´ponse seront affich´s)
                                                           e                     e
 w                   (facultatif)                      w=logspace(2,5,100) ;
                     vecteur-ligne de pulsation,       (cr´e un vecteur pulsation de 100
                                                          e
                     sp´cifiant les pulsations o` la
                        e                        u     points espac´s logarithmiquement et
                                                                     e
                     r´ponse doit ˆtre calcul´e
                      e             e          e       variant entre 102 [rad/s] et 105 [rad/s])
 u                   vecteur-colonne de l’entr´e   e   u=1.5*sin(2*pi*10*t)’ ;
                     simul´e du syst`me
                           e            e              (cr´e un vecteur u repr´sentant une
                                                          e                       e
                     (ce param`tre est obligatoire
                                 e                     entr´e sinuso¨
                                                            e         ıdale d’amplitude 1.5 et
                     si l’on utilise lsim ou dlsim)    de fr´quence 10[Hz]. u est calcul´
                                                              e                                e
                                                       pour chaque instant d´fini dans le
                                                                                  e
                                                       vecteur t, par exemple celui donn´ ci-
                                                                                            e
                                                       dessus)

                                    Tab. 3 –




version 1.2                             26                       mee matlab.tex19 mars 2002
eivd                                                                                                          Cours MATLAB


                                         Réponses impulsionnelle et indicielle en boucle fermée
                         1.6


                         1.4


                         1.2


                          1


                         0.8


                         0.6


                         0.4


                         0.2


                          0


                        −0.2
                               0   5     10           15          20          25           30     35     40
                                                                 t [s]




   De mˆme, l’exemple suivant montre le trac´ de la r´ponse d’un syst`me asservi
        e                                   e        e               e
a
` une rampe de consigne, en faisant notamment usage de la fonction lsim.
wr = t ’ ;
yr = l s i m (numGw, denGw, wr , t ) ;
figure
subplot ( 2 1 1 ) , plot ( t , yr )
t i t l e ( ’ Consigne et grandeur r ´ g l ´ e ’ )
                                       e e
subplot ( 2 1 2 ) , plot ( t , wr−yr )
t i t l e ( ’ Erreur ’ )
xlabel ( ’ t [ s ] ’ )
subplot ( 1 1 1 )



                                                     Consigne et grandeur réglée
                         40


                         30


                         20


                         10


                          0
                               0   5     10           15          20          25           30     35     40


                                                                Erreur
                         2.5

                          2

                         1.5

                          1

                         0.5

                          0
                               0   5     10           15          20          25           30     35     40
                                                                 t [s]




version 1.2                                                   27                                       mee matlab.tex19 mars 2002
eivd                                                                Cours MATLAB


4.5.2   R´ponse fr´quentielle
         e        e
   Les fonctions bode, nyquist, nychols, et pour les syst`mes num´riques, dbode,
                                                         e         e
dnyquist, dnychols sont disponibles. Leur signification est la suivante :


 SYSTEMES ANALOGIQUES                         SYSTEMES NUMERIQUES
 bode(numG,denG,w)                            dbode(numH,denH,h,w)

Si les r´sultats des calculs doivent ˆtre sauvegard´s en vue d’un traitement ult´rieur,
        e                            e             e                            e
on indique ´galement des arguments de sortie :
             e


 SYSTEMES ANALOGIQUES                         SYSTEMES NUMERIQUES
 [A,phi,w]=bode(numG,denG,w)                  [A,phi,w]=dbode(numH,denH,h,w)

A et phi sont des vecteurs-colonne contenant respectivement le gain et la phase
et w un vecteur-ligne contenant les pulsations correspondantes.

4.6     Analyse des propri´t´s des syst`mes
                          e e          e


 dcgain(num,den)                              Gain statique d’un syst`me analogique.
                                                                     e
 ddcgain(num,den)                             Gain statique d’un syst`me num´rique.
                                                                     e       e
 damp(den)                                    Taux d’amortissement ζ, pulsation
                                              propre non-amortie ωn et pˆles d’un
                                                                           o
                                              syst`me analogique ayant den pour
                                                  e
                                              d´nominateur
                                               e
 ddamp(den)                                   Taux d’amortissement ζ, pulsation
                                              propre non-amortie ωn et pˆles d’un
                                                                          o
                                              syst`me discret ayant den pour
                                                  e
                                              d´nominateur.
                                               e

4.7     Calcul affichage des marges de gain et de phase


 [Am,phi m]=margin(numGo,denGo)           Marges de phase        Si les arguments de
                                          et de gain d’un        sortie ne sont pas
                                          syst`me
                                              e     analo-       sp´cifi´s, trace le
                                                                    e e
                                          gique.                 lieu de Bode et
                                                                 montre graphique-
                                                                 ment la valeur des
                                                                 marges


version 1.2                              28                     mee matlab.tex19 mars 2002
eivd                                                              Cours MATLAB


4.8      Trac´ du lieu d’Evans
             e

 rlocus(num,den,k)       Trace le lieu d’Evans de      k est une option ; c’est
                         la fonction de transfert.     un vecteur-ligne conte-
                                                       nant les diff´rentes va-
                                                                     e
                                                       leurs du facteur d’Evans
                                                       pour lesquelles le lieu
                                                       doit ˆtre trac´.
                                                            e        e
 sgrid                  Affiche les courbes ´qui-
                                              e        A                ex´cuter
                                                                          e
 zgrid                  amortissement des plan         imm´diatement
                                                            e              apr`s
                                                                              e
                        de s et de z respective-       rlocus
                        ment.
 pzmap(num,den)         Graphe la configuration
                        pˆles -z´ros de la fonction
                         o      e
                        de transfert.
 [k,p]=rlocfind(num,den) Trac´ interactif du lieu
                             e                         A ex´cuter directement
                                                             e
                        d’Evans.                       apr`s rlocus et sgrid ; une
                                                          e
                                                       croix est alors affich´e,  e
                                                       que l’on peut d´placer
                                                                          e
                                                       avec la souris sur un
                                                       point particulier du lieu.
                                                       En cliquant , on obtient
                                                       alors dans k le facteur
                                                       d’Evans correspondant et
                                                       dans p l’expression du
                                                       pˆle.
                                                        o

4.9      Divers

 minreal(num,den)        Force la compensation
                         pˆle-z´ro.
                           o e
 printsys(num,den,’s’)   Affiche les fonctions de
 printsys(num,den,’z’)   transfert comme frac-
                         tions ratrionnelles en s ou
                         en z




version 1.2                           29                      mee matlab.tex19 mars 2002
eivd                                                               Cours MATLAB


5      Les structures de contrˆle du ”langage” MAT-
                              o
       LAB
    Les structures de contrˆle usuelles sont disponibles :
                           o
 INSTRUCTION                          EXEMPLE
                                      delta t=0.01 ;
 for variable=expression              for i=1 :1 :21 ;
 statements                           %le pas vaut par defaut 1
 end                                  y(i)=sin(2*pi*10*(i-1)*delta t) ;
                                      end
                                      plot(y)
                                      delta t=0.01 ;
 while expression                     i=0 ;
 statements                           while i<21
 end                                  i=i+1 ;
                                      y(i)=sin(2*pi*10*(i-1)*delta t) ;
                                      end
 if expression                        delta t=0.01 ;
 statements                           i=0 ;
 elseif expression                    if i<21,
 statements                           i=i+1 ;
 else                                 y(i)=sin(2*pi*10*(i-1)*delta t) ;
 statements                           end
 end




version 1.2                             30                     mee matlab.tex19 mars 2002
eivd                                                                Cours MATLAB


6      Simulation de syst`mes dynamiques lin´aires
                          e                    e
       et non-lin´aires avec la boˆ ` outils Simulink
                 e                ıte a
6.1     Introduction
  La boˆ ` outils Simulink est un compl´ment extrˆmement puissant ` MAT-
        ıte a                             e         e             a
LAB. Les contributions de Simulink sont principalement :
    1. La construction conviviale de sch´mas fonctionnels, faite ` la souris ;
                                        e                        a
    2. La simulation de syst`mes lin´aires et surtout non-lin´aires, ainsi que de
                            e       e                        e
       syst`mes non-stationnaires ;
           e
    3. La simulation de syst`mes mixtes analogiques et num´riques.
                            e                             e




                     Fig. 1 – Librairie standard de Simulink.


    Pour la construction de sch´mas, le gain de temps se situe au-del` de 10 ` 100,
                                  e                                   a       a
car il ´vite l’utilisation extrˆmement fastidieuse des fonctions MATLAB blkbuild
       e                        e
et connect.
    Si certains reprochent ` MATLAB un certain caract`re r´barbatif, Simulink,
                              a                            e    e
en plus d’offrir de nouveaux outils tr`s puissants, y rem´die compl`tement en
                                         e                   e          e
offrant une interface utilisateur extrˆmement conviviale. Les deux logiciels res-
                                       e
tent toutefois compl`tement li´s l’un ` l’autre, Simulink n’´tant du point de vue
                       e          e     a                    e
hi´rarchique qu’une boˆ ` outils de MATLAB.
  e                       ıte a
    L’interface utilisateur de Simulink est l’outil permettant d’introduire directe-
ment les sch´mas fonctionnels de syst`mes dynamiques. Bien que th´oriquement
              e                         e                              e
son usage ne soit pas indispensable, on peut dire qu’il est utilis´ dans 90% des
                                                                    e

version 1.2                              31                     mee matlab.tex19 mars 2002
eivd                                                                  Cours MATLAB


cas de probl`mes ` r´soudre. On y acc`de ` partir l’espace de travail MATLAB
            e    a e                 e a
par la commande :

simulink
ou en appuyant sur le bouton correspondant de la barre d’outils de la fenˆtre dee
MATLAB.
    Une nouvelle fenˆtre, appel´e simulink apparaˆ Elle n’est en fait qu’une bi-
                       e           e                   ıt.
blioth`que de blocs fonctionnels standards, r´unis ici en sept groupes, fournis
        e                                         e
avec le logiciel. La figure 1 page pr´c´dente montre ces groupes.
                                        e e
    On remarque notamment les biblioth`ques Linear et Nonlinear contenant
                                                e
chacune une collection de blocs lin´aires et non-lin´aires respectivement.
                                        e                e
    Fid`le ` la philosophie de MATLAB, Simulink est ouvert et l’utilisateur peut
         e a
rajouter ses propres blocs, qu’il peut organiser en une ou plusieurs biblioth`quese
([2, et p.4.11 et p.3-19 et ss). Dans ce sens, les possibilit´s sont quasi illimit´es.
                                                              e                    e
    Bien que cela ne paraisse pas imp´ratif au premier abord, il se r´v`le assez
                                            e                              e e
tˆt indispensable de bien connaˆ MATLAB pour utiliser Simulink de mani`re
 o                                   ıtre                                            e
coh´rente et organis´e, i.e. professionnellement. Dans tous les cas, on a int´rˆt
    e                  e                                                            ee
a
` utiliser Simulink en forte connection avec MATLAB ; il faut savoir que tous
les blocs Simulink peuvent ˆtre param´tr´s de mani`re symbolique. Ceci permet
                               e            e e            e
de d´finir les param`tres dans l’espace de travail MATLAB, soit manuellement,
      e                e
soit en ex´cutant un fichier de type script. Dans ce cas, plusieurs fichiers de pa-
            e
ram´trisation peuvent ˆtre cr´´s et lanc´s dans MATLAB avant le d´but de la si-
     e                    e      ee           e                          e
mulation. La documentation desdits fichiers permet de rationaliser et d’organiser
le grand nombre de simulations que l’on peut faire. C’est dans ce genre de situa-
tion que les comp´tences en programmation (organisation, d´composition et ana-
                    e                                            e
lyse du probl`me, structuration) de l’utilisateur peuvent s’av´rer d´terminantes.
                e                                                  e     e
    Des boˆ ` outils compl´mentaires (Real Time Workshop, Matlab C Com-
             ıtes a              e
piler ) permettent de g´n´rer le code C du sch´ma de simulation, ainsi que le
                           e e                       e
code objet pour des processeurs de signaux (par exemple Texas TMS320C30,
syst`me produit par la firme DSPACE). Simulink peut ˆtre programm´ relative-
     e                                                       e              e
ment simplement en C. Dans ce cas, les performances en terme de temps de calcul
seront nettement meilleures. Notons que le laboratoire d’Automatique de l’eivd
dispose d’une licence du compilateur C/C++ de Watcom version 10.6 support´             e
par MATLAB/Simulink. Le compilateur Borland C/C++, dont l’´cole a la licence
                                                                     e
de site, n’est support´ que par MATLAB et n’apporte aucune contribution quant
                        e
a
` la vitesse de calcul. Il faut penser ` cette variante de programmation (en C)
                                           a
lorsque le temps de calcul doit ˆtre r´duit et lorsque l’on souhaite int´grer ` la
                                    e      e                                e       a
simulation du code C existant. D’autre part, on peut de cette fa¸on profiter de
                                                                       c
toutes les fonctionnalit´s Windows et personnaliser son application. Enfin, il faut
                          e
reconnaˆ que le fait de pouvoir tester son code source C avec MATLAB/Simulink
          ıtre
avant de le livrer et l’ex´cuter sur l’application r´elle permet d’acc´l´rer et facilite
                           e                        e                  ee
consid´rablement le d´veloppement. Il s’agit incontestablement d’un des points
        e                e

version 1.2                               32                      mee matlab.tex19 mars 2002
eivd                                                                                                                                                Cours MATLAB


forts de MATLAB/Simulink.
    La combinaison de Simulink et d’un syst`me d’acquisition en temps r´el est
                                               e                             e
possible mais tr`s d´licate et limit´e en rapidit´, notamment ` cause de la lenteur
                e e                  e           e            a
et de la complexit´ de Windows. Un travail allant dans cette direction a ´t´
                    e                                                           ee
effectu´ dans le cadre de l’institut d’Automatisation industrielle de l’eivd.
       e
    La programmation graphique, i.e. l’introduction directe de sch´mas fonction-
                                                                     e
nels, est un outil fanstastique offert par Simulink. Cependant, les limites de ce
genre de programmation sont rapidement atteintes lorsque le syst`me est relati-
                                                                     e
vement complexe, auquel cas il sera plus facile de programmer Simulink ”en texte”
de mani`re classique, i.e. en cr´ant des fonctions S (S-function), plutˆt que d’in-
         e                       e                                     o
terconnecter les blocs par de nombreuses lignes cr´´es ` la souris. Les fonctions
                                                      ee a
S ont un format un peu particulier, propre ` Simulink, mais s’´crivent presque
                                                a                  e
aussi simplement que les fonctions MATLAB ; elles consistent ` programmer les
                                                                 a
´quations diff´rentielles du syst`me ` simuler.
e             e                    e   a

6.2    Exemple introductif : simulation d’un syst`me dyna-
                                                 e
       mique lin´aire
                e
   On se propose d’illustrer l’utilisation de Simulink par l’exemple classique d’un
moteur ` courant continu ` excitation s´par´e constante exploit´ en boucle ou-
        a                  a               e e                     e
verte (figure 2).

                        R   a
                                        L   a
                                                    K
                                                                                 a l i e r s




                                                            T


                                                    K       E
                                                                                                                                                                    M       ( t )
                                                                                 p




        u   a
                ( t )                           M


                                                                C           o      e f f i c i e n                    t

                                                                                                                              J
                                i
                                                        d           e           f r o        t t e m            e n       t
                                                                        v        i s q        u       e u   x
                                    a                                                                                             f _   0   1   _   0   4   . e p       s
                                                                                         R        f




Fig. 2 – Sch´ma technologique d’un entraˆ
               e                           ınement DC ` excitation s´par´e
                                                         a             e e
constante. Le frottement est purement visqueux, proportionnel ` la vitesse, de
                                                              a
coefficient Rf .


   On admettra que le syst`me est parfaitement lin´aire, en faisant les hypoth`ses
                              e                     e                         e
simplificatrices suivantes, ceci pour simplifier l’exemple et se concentrer sur l’es-
sentiel de cette ´tude, i.e. le logiciel MATLAB/Simulink :
                 e
   – on ne prend pas en compte l’effet des perturbations ;
   – le frottement sur l’arbre moteur est purement visqueux ;
   – le moteur ` courant continu ´tant compens´, l’effet de r´action d’induit est
                 a                    e           e            e
      n´gligeable.
        e

version 1.2                                         33                                                                            mee matlab.tex19 mars 2002
eivd                                                                                                                                                                         Cours MATLAB


    Plusieurs d´marches sont possibles pour la construction et l’organisation du
               e
sch´ma, de mˆme que pour la simulation. On propose ici une fa¸on de faire re-
    e         e                                                   c
lativement laborieuse par rapport ` la simplicit´ de l’exemple, calqu´e sur des
                                   a              e                   e
probl`mes concrets d’une certaine envergure, pour lesquels la m´thodologie em-
        e                                                        e
ploy´e est d´terminante. Comme on le verra, le lien avec MATLAB est sous-jacent.
      e     e

6.2.1          Mod´lisation
                  e
   Les mod`les en t et en s du syst`me sont (les conditions initiales ´tant sup-
            e                      e                                  e
pos´es identiquement nulles) :
   e

                                                                         
  ua = Ra · ia + La · dia + KE · ω   Ua = Ra · Ia + La · s · Ia + KE · Ω 
                       dt
   Tem = KT · ia                     L Tem = KT · Ia
       dω
   J · dt = Tem − Rf · ω                J · s · Ω = Tem − Rf · Ω
                                                                         

       Apr`s mise en ´quations, le sch´ma fonctionnel d´taill´ est celui de la figure 3.
          e          e                e                e     e

                                                                    i   a
                                                                            ( t )                    T   e m
                                                                                                               ( t )
                                            1                                                                                          1

                                        R                                                                                      R

           u        ( t )   S                                                        K                                                                                                           w         ( t )
                                                                                                                                               f t
                                                a


                a                                       L                                                                                                J
                                                                                             T                             +               ×
                                                                                                                                                             t
                                    +       s ×
                                                            a
                                1                                                                                      1           s
                                                    R                                                                                                R           f t
                                                                a




                                                                                         K       E
                                                                                                                                                                           f _   0   1   _   0       5   . e p   s




Fig. 3 – Sch´ma fontionnel correspondant au sch´ma technologique de la fi-
             e                                 e
gure 2 page pr´c´dente.
              e e



6.2.2          Construction du sch´ma
                                  e
   Pour introduire le sch´ma fonctionnel de la figure 3 dans Simulink, il faut
                         e
commencer par appeler Simulink ` partir l’espace de travail de MATLAB, comme
                               a
d´j` fait pr´c´demment.
 ea         e e




version 1.2                                                                         34                                                                                 mee matlab.tex19 mars 2002
eivd                                                                Cours MATLAB




                                     Fig. 4 –


    Pour d´finir la fenˆtre de travail, s´lectionner New dans le menu File. Une
            e           e                 e
nouvelle fenˆtre est alors activ´e, nomm´e automatiquement Untitled. C’est dans
              e                 e         e
cette mˆme fenˆtre que le sch´ma sera construit ` partir des blocs contenus dans
        e       e              e                    a
les biblioth`ques Simulink, voire d’autres blocs cr´´s par l’utilisateurs et r´unis
             e                                        ee                        e
dans d’autres biblioth`ques. Revenant ` la fenˆtre Simulink et double-cliquant
                        e                 a         e
sur le groupe Linear, apparaissent alors certains blocs utiles ` la construction
                                                                    a
(figure 4) :
    – le sommateur (Sum) ;
    – le gain (Gain)
    – la fonction de transfert (Transfer Fcn).
    S´lectionnant le premier de ces blocs ` l’aide de la souris dont le bouton gauche
     e                                    a
est maintenu press´, on am`ne le bloc dans la fenˆtre de travail en d´pla¸ant la
                    e        e                        e                    e c

version 1.2                              35                     mee matlab.tex19 mars 2002
 cours de Matlab
 cours de Matlab
 cours de Matlab
 cours de Matlab
 cours de Matlab
 cours de Matlab
 cours de Matlab
 cours de Matlab
 cours de Matlab
 cours de Matlab
 cours de Matlab
 cours de Matlab
 cours de Matlab
 cours de Matlab
 cours de Matlab
 cours de Matlab
 cours de Matlab
 cours de Matlab
 cours de Matlab
 cours de Matlab
 cours de Matlab

Contenu connexe

Tendances

Cours 1 bases de matlab 2eme annees
Cours 1   bases de matlab 2eme anneesCours 1   bases de matlab 2eme annees
Cours 1 bases de matlab 2eme annees
Tarik Taleb Bendiab
 
Modélisation & analyse des systèmes
Modélisation & analyse des systèmesModélisation & analyse des systèmes
Modélisation & analyse des systèmes
sarah Benmerzouk
 

Tendances (20)

Td2 decrypted
Td2 decryptedTd2 decrypted
Td2 decrypted
 
Matlab formation Sound and image Processing
Matlab formation Sound and image ProcessingMatlab formation Sound and image Processing
Matlab formation Sound and image Processing
 
Support matlab st
Support matlab stSupport matlab st
Support matlab st
 
Dijkstra kshortest
Dijkstra kshortestDijkstra kshortest
Dijkstra kshortest
 
Tp2 matlab
Tp2 matlab Tp2 matlab
Tp2 matlab
 
Tp 1 introduction à matlab
Tp 1 introduction à matlabTp 1 introduction à matlab
Tp 1 introduction à matlab
 
Cours 1 bases de matlab 2eme annees
Cours 1   bases de matlab 2eme anneesCours 1   bases de matlab 2eme annees
Cours 1 bases de matlab 2eme annees
 
Tp matlab dc machines partie 1
Tp matlab dc machines partie 1Tp matlab dc machines partie 1
Tp matlab dc machines partie 1
 
Support tutoriel : Créer votre jeu en HTML5
Support tutoriel : Créer votre jeu en HTML5Support tutoriel : Créer votre jeu en HTML5
Support tutoriel : Créer votre jeu en HTML5
 
Chapitre3 tableauxcpp
Chapitre3 tableauxcppChapitre3 tableauxcpp
Chapitre3 tableauxcpp
 
Chapitre3TableauxEnCppV2019
Chapitre3TableauxEnCppV2019Chapitre3TableauxEnCppV2019
Chapitre3TableauxEnCppV2019
 
Tp1 matlab
Tp1 matlab Tp1 matlab
Tp1 matlab
 
Tp4 matlab
Tp4 matlabTp4 matlab
Tp4 matlab
 
Algebre
AlgebreAlgebre
Algebre
 
Matlab for engineer
Matlab for engineer Matlab for engineer
Matlab for engineer
 
Formation traitement d_images
Formation traitement d_imagesFormation traitement d_images
Formation traitement d_images
 
Ch06
Ch06Ch06
Ch06
 
Adc
AdcAdc
Adc
 
Modélisation & analyse des systèmes
Modélisation & analyse des systèmesModélisation & analyse des systèmes
Modélisation & analyse des systèmes
 
Ch03
Ch03Ch03
Ch03
 

En vedette

charpante metalique 3 2-pannes
charpante metalique 3 2-pannescharpante metalique 3 2-pannes
charpante metalique 3 2-pannes
massinissachilla
 
charpante metalique 3 4-potelets
charpante metalique 3 4-poteletscharpante metalique 3 4-potelets
charpante metalique 3 4-potelets
massinissachilla
 
charpante metalique 3 3-lisses de bardages
charpante metalique 3 3-lisses de bardagescharpante metalique 3 3-lisses de bardages
charpante metalique 3 3-lisses de bardages
massinissachilla
 
Apostila de matlab
Apostila de matlabApostila de matlab
Apostila de matlab
Denis Marcos
 
Debutermatlab
DebutermatlabDebutermatlab
Debutermatlab
nejmzad
 
Computação científica com numpy e scipy
Computação científica com numpy e scipyComputação científica com numpy e scipy
Computação científica com numpy e scipy
Silas Santiago
 

En vedette (19)

Traitement d'image sous Matlab
Traitement d'image sous Matlab  Traitement d'image sous Matlab
Traitement d'image sous Matlab
 
Tp 2 vecteur et matrice
Tp 2 vecteur et matriceTp 2 vecteur et matrice
Tp 2 vecteur et matrice
 
charpante metalique 3 2-pannes
charpante metalique 3 2-pannescharpante metalique 3 2-pannes
charpante metalique 3 2-pannes
 
charpante metalique 3 4-potelets
charpante metalique 3 4-poteletscharpante metalique 3 4-potelets
charpante metalique 3 4-potelets
 
Computação Científica com Python 2013
Computação Científica com Python 2013Computação Científica com Python 2013
Computação Científica com Python 2013
 
TCC_Gabriel Estêvão de Morais Rodrigues - Temporário
TCC_Gabriel Estêvão de Morais Rodrigues - TemporárioTCC_Gabriel Estêvão de Morais Rodrigues - Temporário
TCC_Gabriel Estêvão de Morais Rodrigues - Temporário
 
Apostila curso matlab
Apostila curso matlabApostila curso matlab
Apostila curso matlab
 
charpante metalique 3 3-lisses de bardages
charpante metalique 3 3-lisses de bardagescharpante metalique 3 3-lisses de bardages
charpante metalique 3 3-lisses de bardages
 
Curso matlab
Curso matlabCurso matlab
Curso matlab
 
CONCEPÇÃO DE ESTRUTURA DE QUADRICICLO A PEDAL DESENVOLVIDO E ANALISADO NO CAT...
CONCEPÇÃO DE ESTRUTURA DE QUADRICICLO A PEDAL DESENVOLVIDO E ANALISADO NO CAT...CONCEPÇÃO DE ESTRUTURA DE QUADRICICLO A PEDAL DESENVOLVIDO E ANALISADO NO CAT...
CONCEPÇÃO DE ESTRUTURA DE QUADRICICLO A PEDAL DESENVOLVIDO E ANALISADO NO CAT...
 
Apostila de matlab
Apostila de matlabApostila de matlab
Apostila de matlab
 
CONCEPÇÃO DE ESTRUTURA DE QUADRICICLO A PEDAL DESENVOLVIDO E ANALISADO NO CAT...
CONCEPÇÃO DE ESTRUTURA DE QUADRICICLO A PEDAL DESENVOLVIDO E ANALISADO NO CAT...CONCEPÇÃO DE ESTRUTURA DE QUADRICICLO A PEDAL DESENVOLVIDO E ANALISADO NO CAT...
CONCEPÇÃO DE ESTRUTURA DE QUADRICICLO A PEDAL DESENVOLVIDO E ANALISADO NO CAT...
 
Debutermatlab
DebutermatlabDebutermatlab
Debutermatlab
 
Structure metalique
Structure metaliqueStructure metalique
Structure metalique
 
Análise de Viga através de NX Nastran e Matlab (Galerkin)
Análise de Viga através de NX Nastran e Matlab (Galerkin)Análise de Viga através de NX Nastran e Matlab (Galerkin)
Análise de Viga através de NX Nastran e Matlab (Galerkin)
 
Curso de simulink_2.0
Curso de simulink_2.0Curso de simulink_2.0
Curso de simulink_2.0
 
TP1 Traitement d'images Génie Logiciel avec Matlab
TP1 Traitement d'images Génie Logiciel avec MatlabTP1 Traitement d'images Génie Logiciel avec Matlab
TP1 Traitement d'images Génie Logiciel avec Matlab
 
CV Diego Reis
CV Diego ReisCV Diego Reis
CV Diego Reis
 
Computação científica com numpy e scipy
Computação científica com numpy e scipyComputação científica com numpy e scipy
Computação científica com numpy e scipy
 

Similaire à cours de Matlab

Assemblage par vues de composants
Assemblage par vues de composantsAssemblage par vues de composants
Assemblage par vues de composants
karousn
 
Assemblage par vues de composants
Assemblage par vues de composantsAssemblage par vues de composants
Assemblage par vues de composants
karousn
 
Cours achirecture des ordi 1
Cours achirecture des ordi 1Cours achirecture des ordi 1
Cours achirecture des ordi 1
fofanaabou
 
Sout3
Sout3Sout3
Sout3
3on
 

Similaire à cours de Matlab (20)

Cours matlab
Cours matlabCours matlab
Cours matlab
 
Nagios
NagiosNagios
Nagios
 
PMP Report
PMP ReportPMP Report
PMP Report
 
Report MyProof
Report MyProofReport MyProof
Report MyProof
 
defour phd
defour phddefour phd
defour phd
 
Analyse2 00
Analyse2 00Analyse2 00
Analyse2 00
 
Assemblage par vues de composants
Assemblage par vues de composantsAssemblage par vues de composants
Assemblage par vues de composants
 
Assemblage par vues de composants
Assemblage par vues de composantsAssemblage par vues de composants
Assemblage par vues de composants
 
Algo
AlgoAlgo
Algo
 
Rapport
RapportRapport
Rapport
 
courspython3.pdf
courspython3.pdfcourspython3.pdf
courspython3.pdf
 
Cours achirecture des ordi 1
Cours achirecture des ordi 1Cours achirecture des ordi 1
Cours achirecture des ordi 1
 
notes-de-cours-de-fouille-de-donnees.pdf
notes-de-cours-de-fouille-de-donnees.pdfnotes-de-cours-de-fouille-de-donnees.pdf
notes-de-cours-de-fouille-de-donnees.pdf
 
Sout3
Sout3Sout3
Sout3
 
Guide de sécurité_réseau
Guide de sécurité_réseauGuide de sécurité_réseau
Guide de sécurité_réseau
 
Gestion des actifs applicatifs
Gestion des actifs applicatifsGestion des actifs applicatifs
Gestion des actifs applicatifs
 
C66
C66C66
C66
 
Analyse s1
Analyse s1Analyse s1
Analyse s1
 
Maths
MathsMaths
Maths
 
Polycope java enseignant
Polycope java enseignantPolycope java enseignant
Polycope java enseignant
 

Plus de Fly like butterfly - Sting like a bee!!! (8)

MagnetoSTatique complet
MagnetoSTatique completMagnetoSTatique complet
MagnetoSTatique complet
 
Cours d'electromagnetisme
Cours d'electromagnetismeCours d'electromagnetisme
Cours d'electromagnetisme
 
L'astronomie
L'astronomieL'astronomie
L'astronomie
 
Cours d'optique géométrique
Cours d'optique géométriqueCours d'optique géométrique
Cours d'optique géométrique
 
Cours d'optique géométrique
Cours d'optique géométriqueCours d'optique géométrique
Cours d'optique géométrique
 
Chimie materiaux inorganique
Chimie materiaux inorganiqueChimie materiaux inorganique
Chimie materiaux inorganique
 
Coursdethermodynamique
CoursdethermodynamiqueCoursdethermodynamique
Coursdethermodynamique
 
Cours doptique géométrique
Cours doptique géométriqueCours doptique géométrique
Cours doptique géométrique
 

cours de Matlab

  • 1. eivd Cours MATLAB ´cole d’ing´nieurs du canton de Vaud (eivd ) e e D´partement d’´lectricit´ et d’informatique e e e institut d’Automatisation industrielle (iAi) Introduction au logiciel MATLAB in s t i t u t d ' Automatisation in d u s t r i e l l e Michel ETIQUE, mars 2002, Yverdon-les-Bains version 1.2 1 mee matlab.tex19 mars 2002
  • 2. eivd Cours MATLAB Table des mati`res e 1 Introduction 4 2 M´thode de travail e 7 2.1 Edition et sauvegarde des fichiers MATLAB . . . . . . . . . . . . . 7 2.1.1 Editeur PFE . . . . . . . . . . . . . . . . . . . . . . . . . 7 2.2 Aide en ligne . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 2.3 Cr´ation de fichiers de commandes et de fonctions utilisateur . . e . 8 2.3.1 Fichiers de commande (”script files”) . . . . . . . . . . . . 8 2.3.2 Fonctions . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 2.4 Sauvegarde de donn´es sur disque . . . . . . . . . . . . . . . . . e . 9 2.4.1 R´pertoires de sauvegarde : D :USERS et compte EINET e . 10 3 Les bases de MATLAB 11 3.1 Cr´ation et calcul de vecteurs et matrices . . . e . . . . . . . . . . . 11 3.1.1 Vecteurs . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 3.1.2 Matrices . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 3.1.3 Construction de matrices particuli`res e . . . . . . . . . . . 13 3.1.4 Nombres complexes . . . . . . . . . . . . . . . . . . . . . . 14 3.2 Op´rations sur les tableaux . . . . . . . . . . e . . . . . . . . . . . 14 3.3 Repr´sentation graphique 2D . . . . . . . . . e . . . . . . . . . . . 15 3.3.1 Exemple . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 4 Analyse de syst`mes dynamiques lin´aires ` l’aide de la boˆ ` e e a ıte a outils control systems 17 4.1 Introduction de fonctions de transfert . . . . . . . . . . . . . . . . 17 4.1.1 Introduction sous forme polynˆmiale . . . . . . . . . . . . o 17 4.1.2 Introduction sous forme de z´ros, pˆles et gain (”forme e o d’Evans”) . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 4.2 Introduction de mod`les d’´tat . . . . . . . . . . . . . . . . . . . . e e 19 4.3 Passage d’un mod`le ` l’autre . . . . . . . . . . . . . . . . . . . . e a 19 4.4 Construction de sch´mas fonctionnels . . . . . . . . . . . . . . . . e 20 4.4.1 Fonctions series, cloop . . . . . . . . . . . . . . . . . . . . 20 4.4.2 Fonction feedback . . . . . . . . . . . . . . . . . . . . . . . 22 4.5 Calcul et trac´ de r´ponses de syst`mes dynamiques lin´aires . . . e e e e 24 4.5.1 R´ponse temporelle . . . . . . . . . . . . . . . . . . . . . . e 24 4.5.2 R´ponse fr´quentielle . . . . . . . . . . . . . . . . . . . . . e e 28 4.6 Analyse des propri´t´s des syst`mes . . . . . . . . . . . . . . . . . ee e 28 4.7 Calcul affichage des marges de gain et de phase . . . . . . . . . . 28 4.8 Trac´ du lieu d’Evans . . . . . . . . . . . . . . . . . . . . . . . . . e 29 4.9 Divers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 version 1.2 2 mee matlab.tex19 mars 2002
  • 3. eivd Cours MATLAB 5 Les structures de contrˆle du ”langage” MATLAB o 30 6 Simulation de syst`mes dynamiques lin´aires et non-lin´aires e e e avec la boˆ ` outils Simulink ıte a 31 6.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 6.2 Exemple introductif : simulation d’un syst`me dynamique lin´aire e e 33 6.2.1 Mod´lisation . . . . . . . . . . . . . . . . . . . . . . . . . e 34 6.2.2 Construction du sch´ma . . . . . . . . . . . . . . . . . . . e 34 6.2.3 Initialisation des param`tres . . . . . . . . . . . . . . . . . e 39 6.2.4 Simulation . . . . . . . . . . . . . . . . . . . . . . . . . . . 40 6.2.5 Sauvegarde des signaux puis traitement dans l’espace de travail MATLAB . . . . . . . . . . . . . . . . . . . . . . . . 43 6.2.6 Lancement de la simulation ` partir de MATLAB . . . . . a 46 6.3 La biblioth`que standard . . . . . . . . . . . . . . . . . . . . . . . e 47 6.3.1 Sources . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 6.3.2 Sinks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48 6.3.3 Discrete . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50 6.3.4 Linear . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51 6.3.5 Nonlinear . . . . . . . . . . . . . . . . . . . . . . . . . . . 52 6.3.6 Connections . . . . . . . . . . . . . . . . . . . . . . . . . . 54 6.4 Les S-functions de Simulink (version provisoire) . . . . . . . . . . 55 6.4.1 Conventions d’appel des S-functions . . . . . . . . . . . . . 55 6.4.2 Exemple . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56 6.4.3 Autres fonctionnalit´s de Simulink . . . . . . . . . . . . . . e 56 version 1.2 3 mee matlab.tex19 mars 2002
  • 4. eivd Cours MATLAB 1 Introduction Le pr´sent document a pour but de fournir les bases n´cessaires ` l’utilisation e e a du logiciel MATLAB, dans le cadre des cours, des exercices et du laboratoire de r´gulation automatique, pour lequel les boˆ ` outils Control System et Simulink e ıtes a sont employ´es. Il ne pr´sente donc ce logiciel que sous l’angle de son utilisation e e en r´gulation automatique. e Le logiciel MATLAB (MATrix LABoratory) est sp´cialis´ dans le domaine du e e calcul matriciel num´rique. Tous les objets d´finis dans MATLAB le sont donc e e au moyen de vecteurs et de matrices/tableaux de nombres. Un ensemble impor- tant d’op´rateurs et de fonctions MATLAB de base facilitent leur manipulation e et des op´rations comme par exemple le produit et l’inversion matricielles (inv), e la transposition (’) ou encore le calcul des valeurs propres (eig) font partie de la biblioth`que standard. D’autres fonctions servant ` la cr´ation et ` la mani- e a e a pulation de matrices et de tableaux (diag, fliplr, flipud, rot90, rand, ones, zeros, linspace, logspace) sont ´galement disponibles en nombre. e L’environnement MATLAB se pr´sente sous la forme d’un espace de travail e (Workspace), o` un interpr´teur de commandes ex´cute des op´rations et fonc- u e e e tions MATLAB. Les sources de celles-ci sont disponibles, ´crites en “ langage ” e MATLAB, voire en C ou en Fortran. L’utilisateur peut ` sa guise les modifier, a mais en s’en inspirant, il peut surtout cr´er et rajouter ses propres fonctions. e MATLAB offre ´galement plusieurs fonctions destin´es ` la r´solution (num´rique) e e a e e d’´quations diff´rentielles lin´aires ou non-lin´aires par la m´thode de Runge - e e e e e Kutta (ode23 et ode45), l’int´gration num´rique (trapz, quad et quad8), la re- e e cherche des solutions d’´quations alg´briques (roots) ou transcendantes (fzero), e e la cr´ation et manipulation de polynˆmes (poly, polyder, polyval, conv, deconv), e o la transform´e de Fourier rapide (fft, fft2, ifft). e Des fonctions propres au traitement de donn´es (exp´rimentales, telles que e e celles obtenues au laboratoire), comme min, max, mean, cumsum, sort, std, diff, ainsi que celles relatives ` l’interpolation (polyfit, interp1) sont autant d’outils tr`s a e pratiques pour l’ing´nieur analysant un probl`me pratique ou th´orique. e e e version 1.2 4 mee matlab.tex19 mars 2002
  • 5. eivd Cours MATLAB L’interface graphique de MATLAB est sans conteste l’un des points forts du logiciel et facilite le trac´ de courbes et l’obtention de graphiques 2D ou 3D de e grande qualit´ (plot, stairs, stem, hist, mesh, surf, plot3). Le module Handle Gra- e phics offre la possibilit´ de contrˆler int´gralement cette interface, permettant e o e ainsi ` l’utilisateur de mettre en forme tous ´l´ments d’un graphique, de cr´er ses a ee e propres menus (uimenu) ainsi que des objets graphiques tels que sliders (ascen- seurs), boutons, menu surgissants (uicontrol) avec une facilit´ d´concertante. e e Le ”langage” MATLAB contient un minimum de structures de programma- tion (structure it´rative, structure conditionnelle, sous-routine) mais reste tr`s e e rudimentaire. L’avantage est qu’il est tr`s simple et tr`s rapide ` programmer, e e a offrant une grande tol´rance (syntaxe simple, pas de d´finition de types, etc), ce e e qui permet un gain appr´ciable en temps de mise au point. L’ing´nieur peut par ce e e moyen ˆtre plus efficace dans l’analyse d’un probl`me, en concentrant ses efforts e e sur celui-ci et non pas sur l’outil servant ` le r´soudre. En revanche, MATLAB ne a e convient pas ` la programmation d’applications d’une certaine ampleur. Dans ce a dernier cas, il est possible, sous certaines conditions, de programmer l’application en C et de l’ex´cuter ` partir l’espace de travail MATLAB. e a Au logiciel de base s’ajoutent, selon la configuration choisie, les fonctions provenant d’une s´rie de boˆ ` outils (toolbox ) d´di´s ` des domaines techniques e ıtes a e e a sp´cifiques, comme e – le traitement de signal (signal processing toolbox ), – la r´gulation automatique (control system toolbox ), e – l’identification (system identification toolbox ), – les r´seaux de neurones (neural networks toolbox ), e – la logique floue (fuzzy logic toolbox ), – le calcul symbolique (symbolic math toolbox), et bien d’autres encore. Ces boˆ ıtes ` outils sont simplement constitu´es d’un a e ensemble de fonctions sp´cialis´es programm´es ` partir des fonctions de base de e e e a MATLAB, permettant par exemple la synth`se de filtres, le calcul de FFTs, la e simulation d’algorithmes flous ou encore le calcul de r´ponses harmoniques. e Simulink n’est rien d’autre qu’une boˆ ` outils de MATLAB permettant au ıte a moyen d’une interface graphique ´volu´e la construction rapide et ais´e ainsi e e e que la simulation de sch´mas fonctionnels complexes, contenant des syst`mes e e lin´aires, non lin´aires voire non-stationnaires, y compris des op´rateurs logiques, e e e des outils math´matiques d’analyse, etc. e Dans le cadre de la r´gulation automatique, MATLAB constitue avant tout un e tr`s puissant outil d’analyse des syst`mes dynamiques lin´aires, dont on peut tr`s e e e e facilement obtenir les propri´t´s, comme les pˆles et z´ros (tf2zp, roots) ou le gain ee o e statique (dcgain, ddcgain) et tracer les r´ponses de tous types, la r´ponse impul- e e sionnelle (impulse), indicielle (step), ` un signal quelconque (lsim), ou harmonique a (bode, nyquist). MATLAB se prˆte aussi bien ` l’analyse des syst`mes analogiques e a e ou num´riques (step et dstep, impulse et dimpulse, bode et dbode, lsim et dlsim), e sans qu’il soit cependant possible d’´tudier des syst`mes mixtes analogiques- e e version 1.2 5 mee matlab.tex19 mars 2002
  • 6. eivd Cours MATLAB num´riques. Diff´rentes commandes permettent de construire et d’analyser des e e syst`mes lin´aires de structure complexe, form´s de multiples blocs connect´s e e e e tantˆt en s´rie, parall`le ou ´tant contre-r´actionn´s (series, cloop, feedback, pa- o e e e e e rallel, append, connect, blkbuild). Pour le traitement ais´ de syst`mes non-lin´aires, de mˆme que pour la construc- e e e e tion de sch´mas fonctionnels complexes, on aura ` l’´vidence int´rˆt ` utiliser la e a e ee a boˆ ` outils Simulink, qui constitue alors un outil id´al. ıte a e Incontestablement, MATLAB est un formidable outil pour l’ing´nieur, y com- e pris pour celui traitant des probl`mes pratiques. Avec sa boˆ ` outils Simulink, e ıte a il est maintenant une r´f´rence au niveau mondial, non seulement dans les uni- ee versit´s et instituts de recherche, mais aussi dans le milieu industriel. e MATLAB est disponible pour plusieurs plateformes (Windows, Macintosh, Unix, Linux). Les coordonn´es du fournisseur pour la Suisse ci-dessous. e The MathWorks GmbH Sch¨rmattstrasse 6+8 u 3073 G¨mligen u T´l´phone ee (031) 954.20.16 T´l´fax ee (031) 954.20.22 Services Internet http://www.mathworks.com http://www.mathworks.ch ftp.mathworks.com http://www.scientific.de Autres liens : http://www.sysquake.com http://www-rocq.inria.fr/scilab/ version 1.2 6 mee matlab.tex19 mars 2002
  • 7. eivd Cours MATLAB 2 M´thode de travail e 2.1 Edition et sauvegarde des fichiers MATLAB 2.1.1 Editeur PFE Dans un premier temps, on peut se contenter d’introduire ses commandes une ` une au niveau de l’espace de travail o` elles sont interpr´t´es directement. a u ee Cependant, par la suite, il est beaucoup plus pratique d’´crire sa s´quence de e e commandes compl`te au moyen d’un ´diteur, puis de sauver le tout dans un e e fichier avec l’extension .M. Cette s´quence pourra alors ˆtre ex´cut´e dans MAT- e e e e LAB par simple introduction du nom du fichier. Sur les stations du laboratoire d’Automatique (salle C05), ”l’´diteur pour programmeur PFE” est install´ et e e son utilisation est recommand´e. On l’appelle soit par son icˆne ` partir du ges- e o a tionnaire de programmes, soit directement ` partir de MATLAB en s´lectionnant a e File-New-M-file. De cette fa¸on, l’utilisateur peut rajouter ses propres fonctions et se cr´er c e rapidement et facilement toute une panoplie d’outils (par exemple, ”synth`se e automatique d’un r´gulateur PID par la m´thode de Bode”). Les sources de e e MATLAB ´tant disponibles pour la plupart, ce n’est pas un probl`me que de e e modifier ` sa guise l’une ou l’autre des routines, par exemple dans de but d’obtenir a un trac´ particulier du lieu de Bode. e 2.2 Aide en ligne En plus de l’aide de Windows, une aide en ligne est disponible pour chaque commande de MATLAB. Il suffit d’introduire : version 1.2 7 mee matlab.tex19 mars 2002
  • 8. eivd Cours MATLAB help nom de commande 2.3 Cr´ation de fichiers de commandes et de fonctions e utilisateur 2.3.1 Fichiers de commande (”script files”) Un fichier de commande (script file) est un fichier ASCII d’extension .M conte- nant une suite de commandes MATLAB. Il ˆtre ex´cut´ directement en tapant e e e simplement son nom dans l’espace de travail MATLAB. 2.3.2 Fonctions De nouvelles fonctions peuvent ˆtre ajout´es ` MATLAB par l’utilisateur. Il e e a suffit de cr´er un fichier de nom e nom de fonction.M contenant les commandes ` ex´cuter et dont l’entˆte a le format : a e e function [liste des arguments de sortie] = nom de fonction(liste des arguments d’entr´e) e Exemple La fonction suivante convertit la grandeur d’entr´e x en d´bibels et e e la retourne dans y. function [ y ] = l i n 2 d b ( x ) y = 20∗ log10 ( x ) ; Le fichier correspondant est sauv´ sous le nom lin2db.m, dans un r´pertoire e e figurant dans le chemin de recherche de MATLAB. Contrairement aux fichiers de commande, les variables intervenant dans les fonctions sont locales. Les commentaires documentant les fonctions peuvent ˆtre ins´r´s en les faisant e ee pr´c´der du symbole %. e e D´tail pratique int´ressant, les premi`res lignes d’un fichier e e e nom de fichier.m pr´c´d´es du symbole % sont affich´es lorsque l’on tape : e e e e help nom de fichier version 1.2 8 mee matlab.tex19 mars 2002
  • 9. eivd Cours MATLAB Ceci permet de fournir une aide en ligne pour chaque fonction utilisateur nouvellement cr´´e. Pour la fonction lin2db, on documentera par exemple comme ee suit : function [ y ] = l i n 2 d b ( x ) %f u n c t i o n [ y ] = l i n 2 d b ( x ) %c o n v e r s i o n en dB y = 20∗ log10 ( x ) ; En tapant help lin2db, on obtiendra alors : 2.4 Sauvegarde de donn´es sur disque e Les variables d´finies dans l’espace de travail MATLAB peuvent ˆtre sauve- e e gard´es dans des fichiers ASCII par la commande : e save cheminnom_de_fichier.dat nom_de_variable -ascii Un tel fichier ASCII peut ˆtre ult´rieurement relu soit par MATLAB (fonction e e load) soit par d’autres programmes (Excel, Word, etc). Dans le premier cas, il est cependant conseill´ de sauver directement la variable dans un fichier binaire e *.MAT de format sp´cifique ` MATLAB : e a save cheminnom_de_fichier nom_de_variable La fenˆtre graphique peut ˆtre soit imprim´e directement, soit sauv´e dans un e e e e fichier, lequel peut ˆtre int´gr´ dans un document (menu importation d’image) e e e ou imprim´ ult´rieurement. Signalons, parmi les diff´rents formats de fichiers dis- e e e ponibles, le format PostScript qui fournit une qualit´ irr´prochable. Par exemple, e e le sauvetage de la fenˆtre graphique courante s’effectue par : e print chemin nom_de_fichier.eps -deps pour le format PostScript et par version 1.2 9 mee matlab.tex19 mars 2002
  • 10. eivd Cours MATLAB print chemin nom_de_fichier.wmf -dmeta pour le format Windows Meta File. Auparavant, il faut prendre garde ` ce que la a fenˆtre graphique courante soit bien celle que l’on souhaite imprimer en tapant e figure ( n u m e r o d e l a f e n e t r e a i m p r i m e r ) Attention : la commande print est tr`s rudimentaire et ne donne aucun message e en cas d’´chec ou si le fichier existe d´j` ! e ea La copie de la fenˆtre graphique est ´galement possible par l’interm´diaire e e e du clipboard, ce qui permet par exemple de sauver la fenˆtre dans WordPerfect, e Word ou PowerPoint (choisir le format WMF plutˆt que le bitmap). o 2.4.1 R´pertoires de sauvegarde : D :USERS et compte EINET e Il faut indiquer le chemin correspondant ` l’endroit o` MATLAB trouvera a u le fichier de commande ou la fonction ´crite par l’utilisateur. Dans le cas de la e version MATLAB install´e sur le r´seau du laboratoire d’Automatique de l’eivd, e e il suffit ` l’utilisateur de sauver ses propres fonctions dans le r´pertoire : a e D :USERS qui est dans le chemin de recherche de MATLAB. Le disque D : est local et les donn´es qui s’y trouvent peuvent donc ˆtre modifi´es voire carr´ment dis- e e e e paraˆıtre d’un cours ` l’autre. A la fin de sa session de travail, on aura donc a int´rˆt ` sauvegarder ses fichiers sur disquette ou son compte EINET. Le docu- ee a ment s:regulationdiversconnection_EINET.doc explique la mani`re de se e connecter son disque EINET ` partir du domaine iAi. a version 1.2 10 mee matlab.tex19 mars 2002
  • 11. eivd Cours MATLAB 3 Les bases de MATLAB 3.1 Cr´ation et calcul de vecteurs et matrices e 3.1.1 Vecteurs Un vecteur-ligne est introduit de la fa¸on suivante : c v =[5,2,13,4] Le vecteur v s’affiche alors ` l’´cran : a e v= 5 2 13 4 Si l’introduction est termin´e par un point-virgule, on ´vite l’affichage du vecteur e e v. Un vecteur-colonne peut ˆtre introduit en rempla¸ant les virgules par des e c points-virgules ou des retours de chariot. L’acc`s aux composantes d’un vecteur e s’effectue directement par des commandes du genre : v (3) ce qui donne ` l’´cran : a e ans = 13 Si comme dans le cas pr´sent, v(3) n’est pas affect´ ` une variable, par une e e a commande de la forme x=v(3) , MATLAB copie d’office le r´sultat dans la variable e syst`me ans (answer ), alors disponible pour le calcul suivant. e Remarque Dans MATLAB, les indices des vecteurs et matrices doivent ˆtre dese entiers positifs. L’indice z´ro n’est donc pas plus admis que les indices n´gatifs. e e 3.1.2 Matrices Une matrice peut ˆtre construite de diff´rentes mani`res : e e e m= [ 5 , 2 , 1 3 , 4 ; 6 , 8 , 3 , 1 0 ; 0 , 1 , 2 0 , 9 ] et l’affichage devient : m= 5 2 13 4 6 8 3 10 version 1.2 11 mee matlab.tex19 mars 2002
  • 12. eivd Cours MATLAB 0 1 20 9 ou encore, ayant d´fini pr´alablement les vecteurs-ligne v1, v2 et v3 : e e v1 = [ 5 , 2 , 1 3 , 4 ] ; v2 = [ 6 , 8 , 3 , 1 0 ] ; v3 = [ 0 , 1 , 2 0 , 9 ] ; m=[ v1 ; v2 ; v3 ] L’acc`s ` un ´l´ment de la matrice s’effectue par : e a ee m( 2 , 4 ) et l’on obtient : ans = 10 Le remplacement de 2 par : (deux points) permet d’obtenir toute la colonne 4 : m( : , 4 ) et l’´cran affiche le vecteur-colonne : e ans = 4 10 9 De mˆme, l’affichage d’une sous-matrice s’obtient par : e m( 2 : 3 , 2 : 4 ) et l’´cran affiche : e ans = 8 3 10 1 20 9 L’acc`s aux colonnes 2 et 4 de la matrice m se r´alise comme suit : e e m( : , [ 2 , 4 ] ) ce qui produit : version 1.2 12 mee matlab.tex19 mars 2002
  • 13. eivd Cours MATLAB ans = 2 4 8 10 1 9 Parmi les op´rations matricielles qui ont une certaine importance pratique, si- e gnalons l’op´rateur de transposition e m’ donnant dans le cas de l’exemple ans = 5 6 0 2 8 1 13 3 20 4 10 9 et la fonction eig qui calcule les valeurs propres d’une matrice. Soit la matrice carr´e 4 × 4 form´e de composantes al´atoires (ici utilisation de la fonction rand) e e e A=rand ( 4 , 4 ) A= 0.2190 0.9347 0.0346 0.0077 0.0470 0.3835 0.0535 0.3834 0.6789 0.5194 0.5297 0.0668 0.6793 0.8310 0.6711 0.4175 Les valeurs propres (eigenvalues) sont : eig (A) ans = 1. 409 5 0.1082 + 0.4681 i 0.1082 − 0.4681 i −0.0763 3.1.3 Construction de matrices particuli`res e Les routines ones et zeros permettent de construire des matrices dont tous les ´l´ments sont ´gaux ` 1 respectivement ` 0. Voir ´galement eye (matrice identit´), ee e a a e e diag (matrice diagonale), linspace (vecteur dont les composantes sont espac´es e lin´airement entre deux limites) et logspace (vecteur dont les composantes sont e espac´es logarithmiquement entre deux limites). e version 1.2 13 mee matlab.tex19 mars 2002
  • 14. eivd Cours MATLAB 3.1.4 Nombres complexes Les vecteurs et matrices peuvent avoir des composantes complexes. Les nombres complexes sont introduits comme suit : x = a + j ∗b ; ou x = a + i ∗b ; L’unit´ de l’axe imaginaire est donc indiff´remment i ou j. Des fonctions sont e e pr´vues pour le calcul de la partie r´elle (real(x)), de la partie imaginaire (imag(x)), e e du module (abs(x)), de l’argument (angle(x)) et du conjugu´ complexe (conj(x)). e 3.2 Op´rations sur les tableaux e On rappelle le slogan publicitaire de MATLAB, ”live is to short to spend time with for loops”, pour mentionner qu’effectivement, la majeure partie des op´rations peuvent s’effectuer sans boucles de type for. Par exemple, le calcul du e sinus cardinal sin (ϑ) sinc (ϑ) = ϑ de l’angle θ pour les valeurs de suivantes t h e t a =linspace (−4∗ pi , 4∗ pi , 1 0 0 ) ; soit 100 valeurs espac´es lin´airement entre −4π et +4π, se fait avantageusement e e dans MATLAB par s i n c = sin ( t h e t a ) . / t h e t a ; o` le point pr´c´dant l’op´rateur de division indique qu’il ne s’agit pas d’une u e e e op´ration matricielle, mais d’une op´ration ´l´ment par ´l´ment sur deux ta- e e ee ee bleaux. Il faut donc bien faire la distinction entre par exemple le produit ma- triciel a11 a12 b11 b12 a11 · b11 + a12 · b21 a11 · b12 + a12 · b22 · = a21 a22 b21 b22 a21 · b11 + a22 · b21 a21 · b12 + a22 · b22 et le produit, ´l´ment par ´l´ment de deux tableaux : ee ee a11 a12 b11 b12 a11 · b11 a12 · b12 · = a21 a22 b21 b22 a21 · b21 a22 · b22 version 1.2 14 mee matlab.tex19 mars 2002
  • 15. eivd Cours MATLAB Remarque Ici, la fonction linspace a ´t´ utilis´e, une variante ´tant d’´crire ee e e e t h e t a =−4∗pi : 8∗ pi / ( 1 0 0 − 1 ) : 4 ∗ pi ; 3.3 Repr´sentation graphique 2D e Plusieurs types de repr´sentations graphiques 2D sont disponibles : e FONCTION DESCRIPTION Repr´sente chaque colonne de la matrice y en fonction e plot(y) de l’indice du rang. Repr´sente les colonnes de y en fonction de celles de x. e plot(x,y) Il faut que x ait soit une seule colonne, soit autant de plot(x,cos(x)) colonnes que y, et r´ciproquement. e plot(t1,y1,t2,y2) Repr´sente y1 en fonction de t1 et y2 en fonction de t2 e plot(t1,y1,’ :’,t2,y2,’-.’) (y1 et t1 doivent avoir le mˆme nombre de lignes, de e plot(t1,y1,’o’,t2,y2,’x’) mˆme que y2 et t2) e Repr´sente les colonnes y1 et y2 en fonction de t e plot(t,[y1,y2]) (y1, y2 et t doivent avoir le mˆme nombre de lignes) e Repr´sente chaque ´l´ment de y en fonction de son indice. e ee Le trac´ est en escaliers, utile pour les r´ponses de e e stairs(y) syst`mes num´riques (pas d’interpolation entre les points e e repr´sent´s) e e Repr´sente chaque ´l´ment de y en fonction de son indice. e ee stem(y) Chaque point est repr´sent´ par symbole “ ´chantillon ”, e e e ce qui est utile pour les syst`mes num´riques. e e Repr´sente A (ici en [dB]) en fonction de w, l’´chelle e e semilogx(w,20*log10(A)) ´tant logarithmique. e (A et w doivent avoir le mˆme nombre d’´l´ments) e ee Repr´sente phase en fonction de w, l’´chelle ´tant loga- e e e semilogx(w,phase) rithmique. (phase et w doivent avoir le mˆme nombre d’´l´ments) e ee Repr´sente y en fonction de x, les ´chelles ´tant toutes e e e loglog(x,y) deux logarithmiques. (x et y doivent avoir le mˆme nombre d’´l´ments) e ee Il est de plus recommand´ de consulter la documentation MATLAB (ou l’aide e en ligne) pour les commandes axis, hold, et subplot, title, xlabel, ylabel, gtext ainsi que figure. Cette derni`re instruction permet de sp´cifier le num´ro de la fenˆtre e e e e graphique dans laquelle le trac´ doit ˆtre effectu´. L’ex´cuter juste avant l’une e e e e des instructions de tra¸age active directement la fenˆtre graphique qui apparaˆ c e ıt alors ` l’´cran. a e version 1.2 15 mee matlab.tex19 mars 2002
  • 16. eivd Cours MATLAB 3.3.1 Exemple La suite des instructions ci-dessous calcule et trace le sinus, le sinus carr´ ainsi e que le sinus cardinal de l’angle θ d´fini ` l’aide de l’instruction linspace : e a t h e t a =linspace (−4∗ pi , 4 ∗ pi , 1 0 0 ) ; s i n c = sin ( t h e t a ) . / t h e t a ; s i n u s 2 = sin ( t h e t a ) . ˆ 2 ; figure ( 1 ) , plot ( t h e t a , sin ( t h e t a ) , t h e t a , s i n u s 2 , ’ − . ’ , t h e t a , s i n c , ’ x ’ ) m = [ sin ( t h e t a ) ’ , s i n u s 2 ’ , s i n c ’ ] ; figure ( 2 ) , plot ( t h e t a , m) Le r´sultat est le suivant : e 1 0.8 0.6 0.4 0.2 0 −0.2 −0.4 −0.6 −0.8 −1 −15 −10 −5 0 5 10 15 1 0.8 0.6 0.4 0.2 0 −0.2 −0.4 −0.6 −0.8 −1 −15 −10 −5 0 5 10 15 version 1.2 16 mee matlab.tex19 mars 2002
  • 17. eivd Cours MATLAB 4 Analyse de syst`mes dynamiques lin´aires ` e e a l’aide de la boˆ ` outils control systems ıte a 4.1 Introduction de fonctions de transfert 4.1.1 Introduction sous forme polynˆmiale o L’introduction de fonctions de transfert s’effectue en deux temps, les num´rateur e et d´nominateur devant ˆtre donn´s s´par´ment. Le principe est simple : les e e e e e num´rateur et d´nominateur apparaissent sous forme de vecteurs-ligne, les com- e e posantes desquels ´tant les coefficients des puissances d´croissantes de s (syst`mes e e e analogiques) ou de z (syst`mes num´riques). e e Soit par exemple la fonction de transfert 1 + s · 10 G(s) = 36 · 1 + s · 2 + s2 · 0.1 Son introduction dans MATLAB se fait par les commandes : numG= 3 6 ∗ [ 1 0 , 1 ] ; denG = [ 0 . 1 , 2 , 1 ] ; Le coefficient de s0 (ou z 0 pour les syst`mes num´riques), qu’il soit nul ou e e non, doit toujours ˆtre donn´. Ainsi, la fonction de transfert de l’int´grateur e e e 2.71828 G (s) = s est introduite sous la forme : numG= 2 . 7 1 8 2 8 ∗ [ 1 ] ; denG = [ 1 , 0 ] ; Les noms donn´s aux num´rateurs et d´nominateurs sont libres. On aura e e e toutefois int´rˆt ` ˆtre organis´ et rigoureux dans les notations employ´es ; par ee ae e e exemple, en se r´f´rant au sch´ma fonctionnel universel, en r´gulation de corres- ee e e pondance (v(t) = 0), v ( t ) + e ( t ) u ( t ) + + w ( t ) 5 G ( s ) G ( s ) 5 G ( s ) y ( t ) c a 1 a 2 - f _ 0 1 _ 0 3 . e p s version 1.2 17 mee matlab.tex19 mars 2002
  • 18. eivd Cours MATLAB on ne saura que trop recommander l’emploi d’une notation semblable ` la sui- a vante, numGc= 2 ∗ [ 1 , 2 0 ] ; denGc = [ 1 , 0 ] ; numGa1=1e − 3 ∗ [ 1 , 1 0 ] ; denGa1 = [ 1 , 2 , 0 . 1 1 ] ; numGa2 = 3 6 ∗ [ 1 , 0 . 1 ] ; denGa2 = [ 1 , 2 0 , 1 0 ] ; pour les fonctions de transfert s + 20 Gc (s) = 2 · s s + 10 Ga1 (s) = 0.01 · s2 + 2 · s + 0.11 (s + 0.1) Ga2 (s) = 36 · 2 s + 20 · s + 10 Notons qu’` partir de la version 5.0 de MATLAB, il existe des objets fonction de a transfert, que l’on peut introduire comme suit (cas de l’exemple ci-dessus) : numGc= 2 ∗ [ 1 , 2 0 ] ; denGc = [ 1 , 0 ] ; Gc=t f ( numGc, denGc ) numGa1=1e − 3 ∗ [ 1 , 1 0 ] ; denGa1 = [ 1 , 2 , 0 . 1 1 ] ; Ga2=t f ( numGa1, denGa2 ) numGa2 = 3 6 ∗ [ 1 , 0 . 1 ] ; denGa2 = [ 1 , 2 0 , 1 0 ] ; Ga2=t f ( numGa2, denGa2 ) On peut alors calculer sans autre : Go=Gc∗Ga1∗Ga2 ; Gw=Go/(1+Go) ; Gv=Ga2/(1+Gc∗Ga1∗Ga2 ) ; 4.1.2 Introduction sous forme de z´ros, pˆles et gain (”forme d’Evans”) e o Il est ´galement possible d’introduire une fonction de transfert par le biais de e ses z´ros, pˆles et de son facteur d’Evans k. Les z´ros et pˆles doivent apparaˆ e o e o ıtre sous forme de vecteurs-colonne. Soit par exemple la fonction de transfert : version 1.2 18 mee matlab.tex19 mars 2002
  • 19. eivd Cours MATLAB 5.32 (s + 3)2 + 72 G (s) = · s (s + 11) · (s + 5)2 + 32 5.32 (s − (−3 + 7j)) · (s − (−3 − 7j)) = · s (s − (−11)) · (s − (−5 + 3j)) · (s − (−5 − 3j)) La suite de commandes n´cessaires est simplement : e zG=[−3+j ∗7,−3− j ∗ 7 ] ’ ; sG=[0,−10,−5+ j ∗3,−5− j ∗ 3 ] ’ ; kG=5.32; Il va sans dire que l’on privil´giera cette forme lorsque les num´rateur et e e d´nominateur de la fonction de transfert du syst`me G(s) ou G(z) ne sont pas e e directement disponibles sous forme de polynˆmes. o 4.2 Introduction de mod`les d’´tat e e Si un syst`me est connu sous la forme de ses ´quations d’´tat (lin´aires), e e e e dx =A·x+B·u dt y =C ·x+D·u il suffit d’indiquer ` MATLAB les quatre matrices A, B, C, et D, par exemple : a A= [ − 3 , 0 ; 0 , 7 ] ; B= [ 1 0 , 0 , 1 ] ’ ; C= [ 1 , 2 ; 3 , 4 ] ; D= [ 0 ] ; 4.3 Passage d’un mod`le ` l’autre e a Les pˆles et z´ros des fonctions de transfert sont obtenus ` l’aide de la fonction o e a tf2zp (transfer function to zero pole) : [ zG, sG , kG]= t f 2 z p (numG, denG ) ; MATLAB place alors les z´ros et les pˆles dans les vecteurs-colonne zG et sG, e o respectivement, et le facteur d’Evans dans la variable kG. Les noms zG, sG et kG sont arbitraires. On acc`de ` ces valeurs par exemple en tapant leur nom : e a version 1.2 19 mee matlab.tex19 mars 2002
  • 20. eivd Cours MATLAB sG MATLAB affiche : sG= −19.4868 −0.5132 Remarque : un polynˆme est introduit sous la forme d’un vecteur-ligne v o dont les composantes repr´sentent les coefficients des puissances d´croissantes ; e e ses racines sont obtenues par la fonction roots(v) Toute une cat´gorie de routines permettent de passer d’un mod`le ` l’autre : e e a forme polynˆmiale → forme tf2zp [zG,sG,kG]=tf2zp(numG,denG) ; o en z´ros, pˆles et gain e o forme polynˆmiale o → tf2ss [AG,BG,CG,DG]=tf2ss(numG,denG) ; mod`le d’´tat e e forme en z´ros, pˆles et gain zp2tf [numG,denG]=zp2tf(zG,sG,kG) ; e o → forme polynˆmiale o forme en z´ros, pˆles et gain zp2ss [AG,BG,CG,DG]=zp2ss(zG,sG,kG) ; e o → mod`le d’´tat e e mod`le d’´tat → forme po- ss2tf e e [numG,denG]=ss2tf(AG,BG,CG,DG) ; lynˆmiale o mod`le d’´tat → forme en ss2zp [zG,sG,kG]=ss2zp(AG,BG,CG,DG) ; e e z´ros, pˆles et gain e o mod`le d’´tat → autre ss2ss [AG2,BG2,CG2,DG2]=ss2ss(AG,BG,CG,DG,T) ; e e mod`le d’´tat, avec matrice e e de transformation T 4.4 Construction de sch´mas fonctionnels e 4.4.1 Fonctions series, cloop Prenons pour exemple le sch´ma fonctionnel universel, dont on souhaite obte- e nir les fonctions de transfert en boucle ouverte Go (s) et en boucle ferm´e Gw (s). e Pour ce faire, faut proc´der par ´tapes, comme l’indique la figure ci-apr`s : e e e v ( t ) + e ( t ) u ( t ) + + w ( t ) 5 G ( s ) G ( s ) 5 G ( s ) y ( t ) c a 1 a 2 - f _ 0 1 _ 0 3 . e p s version 1.2 20 mee matlab.tex19 mars 2002
  • 21. eivd Cours MATLAB 1. Calcul de Ga (s) par la mise en s´rie de Ga1 et Ga2 . e On fait usage de la fonction series : [ numGa, denGa]= s e r i e s ( numGa1, denGa1 , numGa2, denGa2 ) ; 2. Calcul de Go (s) par la mise en s´rie de Gc et Ga . On proc`de de mˆme : e e e [ numGo, denGo]= s e r i e s ( numGc, denGc , numGa, denGa ) ; 3. Calcul de Gw (s) par fermeture de la boucle (retour unitaire). On fait usage de la fonction cloop comme suit : [ numGw, denGw]= c l o o p ( numGo, denGo ) ; 4. La r´ponse indicielle en boucle ferm´e peut alors ˆtre calcul´e et trac´e par : e e e e e s te p (numGw, denGw) Step Response 1.5 1 Amplitude 0.5 0 0 5 10 15 20 25 30 35 40 Time (sec.) On peut au passage calculer le gain statique (gain DC) de Gw (s). dcgain (numGw, denGw) 5. La r´ponse harmonique en boucle ouverte peut par exemple aussi ˆtre cal- e e cul´e : e bode ( numGo, denGo ) version 1.2 21 mee matlab.tex19 mars 2002
  • 22. eivd Cours MATLAB Bode Diagrams 50 0 Phase (deg); Magnitude (dB) −50 −100 −100 −120 −140 −160 −180 −200 −220 −3 −2 −1 0 1 2 10 10 10 10 10 10 Frequency (rad/sec) 6. Finalement, on peut afficher la configuration pˆle-z´ro de Gw (s) : o e pzmap (numGw, denGw) Pole zero map 1 0.8 0.6 0.4 0.2 Imag Axis 0 −0.2 −0.4 −0.6 −0.8 −1 −1 −0.8 −0.6 −0.4 −0.2 0 0.2 0.4 0.6 0.8 1 Real Axis 4.4.2 Fonction feedback La fonction feedback est utile pour calculer la fonction de transfert ´quivalente e de syst`mes ayant pour sch´ma fonctionnel la figure ci-dessous, soit : e e Y (s) Ga (s) Gv (s) = = V (s) 1 + Ga (s) · Ga (s) version 1.2 22 mee matlab.tex19 mars 2002
  • 23. eivd Cours MATLAB [ numGv, denGv]= f e ed ba c k ( numGa, denGa , numGc, denGc , s i g n e ) ; 1 v ( t ) 5 G ( s ) y ( t ) aI - 1 G cI ( s ) f _ 0 1 _ 0 6 . e p s Si le param`tre signe n’est pas sp´cifi´ ou vaut −1, la fonction de transfert e e e Gc (s) est en contre-r´action, alors qu’elle est r´actionn´e pour une valeur de signe e e e ´gale ` 1. e a L’exemple ci-dessous calcule le fonction de transfert en r´gulation de maintien e du syst`me asservi pr´c´demment trait´. e e e e [ numG1, denG1 ] = s e r i e s ( numGc, denGc , numGa1, denGa1 ) ; [ numGv, denGv ] = fe e d b a c k ( numGa2, denGa2 , numG1, denG1 ) ; Step Response 1.5 1 Amplitude 0.5 0 −0.5 0 5 10 15 20 25 30 Time (sec.) version 1.2 23 mee matlab.tex19 mars 2002
  • 24. eivd Cours MATLAB 4.5 Calcul et trac´ de r´ponses de syst`mes dynamiques e e e lin´aires e 4.5.1 R´ponse temporelle e Lorsque qu’aucun argument de sortie n’est sp´cifi´ (lhs, left handside argu- e e ment), le calcul et le trac´ des r´ponses sont simultan´s. e e e Les fonctions impulse, step, lsim, et pour les syst`mes num´riques, dimpulse, e e dstep, dlsim sont disponibles. Leur signification sont donn´es sur les tables 4.5.1 page e suivante et 4.5.1 page 26. Le trac´ correspondant est directement obtenu en tapant les commandes telles e que donn´es dans les tableaux ci-dessus. e Les param`tres t, n, et w sont des optionnels et MATLAB les d´termine lui- e e mˆme par d´faut. Si l’on souhaite les fixer, on peut par exemple le faire selon les e e indications du tableau 4.5.1 page 26. Lors du calcul de la r´ponse harmonique de syst`mes num´riques, il convient de e e e sp´cifier la p´riode d’´chantillonnage h. e e e Il est souvent utile d’effectuer ces calculs de r´ponse sans tracer celle-ci imm´diatement. e e Dans ce cas, on proc`de comme ci-dessus en sp´cifiant toutefois des arguments e e de sortie dans lesquels MATLAB sauvera les r´sultats de ses calculs : e SYSTEMES ANALOGIQUES SYSTEMES NUMERIQUES [y,x,t]=impulse(numG,denG,t) ; [y,x]=dimpulse(numH,denH,n) ; [y,x,t]=step(numG,denG,t) ; [y,x]=dstep(numH,denH,n) ; [y,x]=lsim(numG,denG,u,t) ; [y,x]=dlsim(numH,denH,u) ; y est un vecteur-colonne contenant la r´ponse cherch´e et t un vecteur-ligne e e contenant les instants auxquels elle a ´t´ calcul´e. x est une matrice contenant ee e l’´volution du vecteur d’´tat syst`me dynamique. La figure suivante montre le e e e calcul pr´alable des r´ponses imoulsionnelle et indicielle avant leur trac´ ` l’aide e e ea de la fonction plot. [ ys , x , t ] = s t e p (numGw, denGw ) ; [ y i ] = i m p u l s e (numGw, denGw, t ) ; figure plot ( t , [ y i , ys ] ) t i t l e ( ’ R´ ponses i m p u l s i o n n e l l e e et indicielle en b o u c l e ferm´ e ’ ) e xlabel ( ’ t [ s ] ’ ) version 1.2 24 mee matlab.tex19 mars 2002
  • 25. eivd Cours MATLAB SYSTEMES ANALO- REPONSE EXEMPLE GIQUES 25 20 15 Amplitude 10 5 0 0 0.5 1 1.5 2 2.5 3 impulse(numG,denG,t) r´ponse impul- e Time (secs) sionnelle 1 0.8 0.6 Amplitude 0.4 0.2 0 −0.2 0 5 10 15 20 25 30 step(numG,denG,t) r´ponse e indi- Time (secs) cielle 0.25 0.2 0.15 0.1 0.05 Amplitude 0 −0.05 −0.1 −0.15 −0.2 −0.25 0 0.2 0.4 0.6 0.8 1 1.2 1.4 1.6 1.8 2 lsim(numG,denG,u,t) r´ponse ` une e a Time (secs) entr´e u quel- e conque d´finiee par l’utilisateur initial(A,B,C,D,x0,t) r´ponse e du syst`me lorsque e ses conditions initiales sont x0 Tab. 1 – version 1.2 25 mee matlab.tex19 mars 2002
  • 26. eivd Cours MATLAB SYSTEMES NUMERIQUES REPONSE dimpulse(numH,denH,n) r´ponse impulsionnelle e dstep(numH,denH,n) r´ponse indicielle e dlsim(numH,denH,u) r´ponse ` une entr´e u quelconque e a e d´finie par l’utilisateur e dinitial(A,B,C,D,x0,n) r´ponse du syst`me lorsque ses condi- e e tions initiales sont x0 Tab. 2 – PARAMETRE SIGNIFICATION EXEMPLE t (facultatif) t=[0 :0.01 :0.2] ; vecteur-ligne de temps, ou sp´cifiant les instants o` la e u t=linspace(0,0.2,201) ; r´ponse doit ˆtre calcul´e e e e (cr´e un vecteur temps variant entre e (ce param`tre est obligatoire e 0[s] et 0.2[s] par pas de 0.01[s]) si l’on utilise lsim) n (facultatif) n=10 ; nombre d’´chantillons d´sir´s e e e (seuls les 10 premiers ´chantillons de e la r´ponse seront affich´s) e e w (facultatif) w=logspace(2,5,100) ; vecteur-ligne de pulsation, (cr´e un vecteur pulsation de 100 e sp´cifiant les pulsations o` la e u points espac´s logarithmiquement et e r´ponse doit ˆtre calcul´e e e e variant entre 102 [rad/s] et 105 [rad/s]) u vecteur-colonne de l’entr´e e u=1.5*sin(2*pi*10*t)’ ; simul´e du syst`me e e (cr´e un vecteur u repr´sentant une e e (ce param`tre est obligatoire e entr´e sinuso¨ e ıdale d’amplitude 1.5 et si l’on utilise lsim ou dlsim) de fr´quence 10[Hz]. u est calcul´ e e pour chaque instant d´fini dans le e vecteur t, par exemple celui donn´ ci- e dessus) Tab. 3 – version 1.2 26 mee matlab.tex19 mars 2002
  • 27. eivd Cours MATLAB Réponses impulsionnelle et indicielle en boucle fermée 1.6 1.4 1.2 1 0.8 0.6 0.4 0.2 0 −0.2 0 5 10 15 20 25 30 35 40 t [s] De mˆme, l’exemple suivant montre le trac´ de la r´ponse d’un syst`me asservi e e e e a ` une rampe de consigne, en faisant notamment usage de la fonction lsim. wr = t ’ ; yr = l s i m (numGw, denGw, wr , t ) ; figure subplot ( 2 1 1 ) , plot ( t , yr ) t i t l e ( ’ Consigne et grandeur r ´ g l ´ e ’ ) e e subplot ( 2 1 2 ) , plot ( t , wr−yr ) t i t l e ( ’ Erreur ’ ) xlabel ( ’ t [ s ] ’ ) subplot ( 1 1 1 ) Consigne et grandeur réglée 40 30 20 10 0 0 5 10 15 20 25 30 35 40 Erreur 2.5 2 1.5 1 0.5 0 0 5 10 15 20 25 30 35 40 t [s] version 1.2 27 mee matlab.tex19 mars 2002
  • 28. eivd Cours MATLAB 4.5.2 R´ponse fr´quentielle e e Les fonctions bode, nyquist, nychols, et pour les syst`mes num´riques, dbode, e e dnyquist, dnychols sont disponibles. Leur signification est la suivante : SYSTEMES ANALOGIQUES SYSTEMES NUMERIQUES bode(numG,denG,w) dbode(numH,denH,h,w) Si les r´sultats des calculs doivent ˆtre sauvegard´s en vue d’un traitement ult´rieur, e e e e on indique ´galement des arguments de sortie : e SYSTEMES ANALOGIQUES SYSTEMES NUMERIQUES [A,phi,w]=bode(numG,denG,w) [A,phi,w]=dbode(numH,denH,h,w) A et phi sont des vecteurs-colonne contenant respectivement le gain et la phase et w un vecteur-ligne contenant les pulsations correspondantes. 4.6 Analyse des propri´t´s des syst`mes e e e dcgain(num,den) Gain statique d’un syst`me analogique. e ddcgain(num,den) Gain statique d’un syst`me num´rique. e e damp(den) Taux d’amortissement ζ, pulsation propre non-amortie ωn et pˆles d’un o syst`me analogique ayant den pour e d´nominateur e ddamp(den) Taux d’amortissement ζ, pulsation propre non-amortie ωn et pˆles d’un o syst`me discret ayant den pour e d´nominateur. e 4.7 Calcul affichage des marges de gain et de phase [Am,phi m]=margin(numGo,denGo) Marges de phase Si les arguments de et de gain d’un sortie ne sont pas syst`me e analo- sp´cifi´s, trace le e e gique. lieu de Bode et montre graphique- ment la valeur des marges version 1.2 28 mee matlab.tex19 mars 2002
  • 29. eivd Cours MATLAB 4.8 Trac´ du lieu d’Evans e rlocus(num,den,k) Trace le lieu d’Evans de k est une option ; c’est la fonction de transfert. un vecteur-ligne conte- nant les diff´rentes va- e leurs du facteur d’Evans pour lesquelles le lieu doit ˆtre trac´. e e sgrid Affiche les courbes ´qui- e A ex´cuter e zgrid amortissement des plan imm´diatement e apr`s e de s et de z respective- rlocus ment. pzmap(num,den) Graphe la configuration pˆles -z´ros de la fonction o e de transfert. [k,p]=rlocfind(num,den) Trac´ interactif du lieu e A ex´cuter directement e d’Evans. apr`s rlocus et sgrid ; une e croix est alors affich´e, e que l’on peut d´placer e avec la souris sur un point particulier du lieu. En cliquant , on obtient alors dans k le facteur d’Evans correspondant et dans p l’expression du pˆle. o 4.9 Divers minreal(num,den) Force la compensation pˆle-z´ro. o e printsys(num,den,’s’) Affiche les fonctions de printsys(num,den,’z’) transfert comme frac- tions ratrionnelles en s ou en z version 1.2 29 mee matlab.tex19 mars 2002
  • 30. eivd Cours MATLAB 5 Les structures de contrˆle du ”langage” MAT- o LAB Les structures de contrˆle usuelles sont disponibles : o INSTRUCTION EXEMPLE delta t=0.01 ; for variable=expression for i=1 :1 :21 ; statements %le pas vaut par defaut 1 end y(i)=sin(2*pi*10*(i-1)*delta t) ; end plot(y) delta t=0.01 ; while expression i=0 ; statements while i<21 end i=i+1 ; y(i)=sin(2*pi*10*(i-1)*delta t) ; end if expression delta t=0.01 ; statements i=0 ; elseif expression if i<21, statements i=i+1 ; else y(i)=sin(2*pi*10*(i-1)*delta t) ; statements end end version 1.2 30 mee matlab.tex19 mars 2002
  • 31. eivd Cours MATLAB 6 Simulation de syst`mes dynamiques lin´aires e e et non-lin´aires avec la boˆ ` outils Simulink e ıte a 6.1 Introduction La boˆ ` outils Simulink est un compl´ment extrˆmement puissant ` MAT- ıte a e e a LAB. Les contributions de Simulink sont principalement : 1. La construction conviviale de sch´mas fonctionnels, faite ` la souris ; e a 2. La simulation de syst`mes lin´aires et surtout non-lin´aires, ainsi que de e e e syst`mes non-stationnaires ; e 3. La simulation de syst`mes mixtes analogiques et num´riques. e e Fig. 1 – Librairie standard de Simulink. Pour la construction de sch´mas, le gain de temps se situe au-del` de 10 ` 100, e a a car il ´vite l’utilisation extrˆmement fastidieuse des fonctions MATLAB blkbuild e e et connect. Si certains reprochent ` MATLAB un certain caract`re r´barbatif, Simulink, a e e en plus d’offrir de nouveaux outils tr`s puissants, y rem´die compl`tement en e e e offrant une interface utilisateur extrˆmement conviviale. Les deux logiciels res- e tent toutefois compl`tement li´s l’un ` l’autre, Simulink n’´tant du point de vue e e a e hi´rarchique qu’une boˆ ` outils de MATLAB. e ıte a L’interface utilisateur de Simulink est l’outil permettant d’introduire directe- ment les sch´mas fonctionnels de syst`mes dynamiques. Bien que th´oriquement e e e son usage ne soit pas indispensable, on peut dire qu’il est utilis´ dans 90% des e version 1.2 31 mee matlab.tex19 mars 2002
  • 32. eivd Cours MATLAB cas de probl`mes ` r´soudre. On y acc`de ` partir l’espace de travail MATLAB e a e e a par la commande : simulink ou en appuyant sur le bouton correspondant de la barre d’outils de la fenˆtre dee MATLAB. Une nouvelle fenˆtre, appel´e simulink apparaˆ Elle n’est en fait qu’une bi- e e ıt. blioth`que de blocs fonctionnels standards, r´unis ici en sept groupes, fournis e e avec le logiciel. La figure 1 page pr´c´dente montre ces groupes. e e On remarque notamment les biblioth`ques Linear et Nonlinear contenant e chacune une collection de blocs lin´aires et non-lin´aires respectivement. e e Fid`le ` la philosophie de MATLAB, Simulink est ouvert et l’utilisateur peut e a rajouter ses propres blocs, qu’il peut organiser en une ou plusieurs biblioth`quese ([2, et p.4.11 et p.3-19 et ss). Dans ce sens, les possibilit´s sont quasi illimit´es. e e Bien que cela ne paraisse pas imp´ratif au premier abord, il se r´v`le assez e e e tˆt indispensable de bien connaˆ MATLAB pour utiliser Simulink de mani`re o ıtre e coh´rente et organis´e, i.e. professionnellement. Dans tous les cas, on a int´rˆt e e ee a ` utiliser Simulink en forte connection avec MATLAB ; il faut savoir que tous les blocs Simulink peuvent ˆtre param´tr´s de mani`re symbolique. Ceci permet e e e e de d´finir les param`tres dans l’espace de travail MATLAB, soit manuellement, e e soit en ex´cutant un fichier de type script. Dans ce cas, plusieurs fichiers de pa- e ram´trisation peuvent ˆtre cr´´s et lanc´s dans MATLAB avant le d´but de la si- e e ee e e mulation. La documentation desdits fichiers permet de rationaliser et d’organiser le grand nombre de simulations que l’on peut faire. C’est dans ce genre de situa- tion que les comp´tences en programmation (organisation, d´composition et ana- e e lyse du probl`me, structuration) de l’utilisateur peuvent s’av´rer d´terminantes. e e e Des boˆ ` outils compl´mentaires (Real Time Workshop, Matlab C Com- ıtes a e piler ) permettent de g´n´rer le code C du sch´ma de simulation, ainsi que le e e e code objet pour des processeurs de signaux (par exemple Texas TMS320C30, syst`me produit par la firme DSPACE). Simulink peut ˆtre programm´ relative- e e e ment simplement en C. Dans ce cas, les performances en terme de temps de calcul seront nettement meilleures. Notons que le laboratoire d’Automatique de l’eivd dispose d’une licence du compilateur C/C++ de Watcom version 10.6 support´ e par MATLAB/Simulink. Le compilateur Borland C/C++, dont l’´cole a la licence e de site, n’est support´ que par MATLAB et n’apporte aucune contribution quant e a ` la vitesse de calcul. Il faut penser ` cette variante de programmation (en C) a lorsque le temps de calcul doit ˆtre r´duit et lorsque l’on souhaite int´grer ` la e e e a simulation du code C existant. D’autre part, on peut de cette fa¸on profiter de c toutes les fonctionnalit´s Windows et personnaliser son application. Enfin, il faut e reconnaˆ que le fait de pouvoir tester son code source C avec MATLAB/Simulink ıtre avant de le livrer et l’ex´cuter sur l’application r´elle permet d’acc´l´rer et facilite e e ee consid´rablement le d´veloppement. Il s’agit incontestablement d’un des points e e version 1.2 32 mee matlab.tex19 mars 2002
  • 33. eivd Cours MATLAB forts de MATLAB/Simulink. La combinaison de Simulink et d’un syst`me d’acquisition en temps r´el est e e possible mais tr`s d´licate et limit´e en rapidit´, notamment ` cause de la lenteur e e e e a et de la complexit´ de Windows. Un travail allant dans cette direction a ´t´ e ee effectu´ dans le cadre de l’institut d’Automatisation industrielle de l’eivd. e La programmation graphique, i.e. l’introduction directe de sch´mas fonction- e nels, est un outil fanstastique offert par Simulink. Cependant, les limites de ce genre de programmation sont rapidement atteintes lorsque le syst`me est relati- e vement complexe, auquel cas il sera plus facile de programmer Simulink ”en texte” de mani`re classique, i.e. en cr´ant des fonctions S (S-function), plutˆt que d’in- e e o terconnecter les blocs par de nombreuses lignes cr´´es ` la souris. Les fonctions ee a S ont un format un peu particulier, propre ` Simulink, mais s’´crivent presque a e aussi simplement que les fonctions MATLAB ; elles consistent ` programmer les a ´quations diff´rentielles du syst`me ` simuler. e e e a 6.2 Exemple introductif : simulation d’un syst`me dyna- e mique lin´aire e On se propose d’illustrer l’utilisation de Simulink par l’exemple classique d’un moteur ` courant continu ` excitation s´par´e constante exploit´ en boucle ou- a a e e e verte (figure 2). R a L a K a l i e r s T K E M ( t ) p u a ( t ) M C o e f f i c i e n t J i d e f r o t t e m e n t v i s q u e u x a f _ 0 1 _ 0 4 . e p s R f Fig. 2 – Sch´ma technologique d’un entraˆ e ınement DC ` excitation s´par´e a e e constante. Le frottement est purement visqueux, proportionnel ` la vitesse, de a coefficient Rf . On admettra que le syst`me est parfaitement lin´aire, en faisant les hypoth`ses e e e simplificatrices suivantes, ceci pour simplifier l’exemple et se concentrer sur l’es- sentiel de cette ´tude, i.e. le logiciel MATLAB/Simulink : e – on ne prend pas en compte l’effet des perturbations ; – le frottement sur l’arbre moteur est purement visqueux ; – le moteur ` courant continu ´tant compens´, l’effet de r´action d’induit est a e e e n´gligeable. e version 1.2 33 mee matlab.tex19 mars 2002
  • 34. eivd Cours MATLAB Plusieurs d´marches sont possibles pour la construction et l’organisation du e sch´ma, de mˆme que pour la simulation. On propose ici une fa¸on de faire re- e e c lativement laborieuse par rapport ` la simplicit´ de l’exemple, calqu´e sur des a e e probl`mes concrets d’une certaine envergure, pour lesquels la m´thodologie em- e e ploy´e est d´terminante. Comme on le verra, le lien avec MATLAB est sous-jacent. e e 6.2.1 Mod´lisation e Les mod`les en t et en s du syst`me sont (les conditions initiales ´tant sup- e e e pos´es identiquement nulles) : e      ua = Ra · ia + La · dia + KE · ω   Ua = Ra · Ia + La · s · Ia + KE · Ω  dt Tem = KT · ia L Tem = KT · Ia dω J · dt = Tem − Rf · ω J · s · Ω = Tem − Rf · Ω     Apr`s mise en ´quations, le sch´ma fonctionnel d´taill´ est celui de la figure 3. e e e e e i a ( t ) T e m ( t ) 1 1 R R u ( t ) S K w ( t ) f t a a L J T + × t + s × a 1 1 s R R f t a K E f _ 0 1 _ 0 5 . e p s Fig. 3 – Sch´ma fontionnel correspondant au sch´ma technologique de la fi- e e gure 2 page pr´c´dente. e e 6.2.2 Construction du sch´ma e Pour introduire le sch´ma fonctionnel de la figure 3 dans Simulink, il faut e commencer par appeler Simulink ` partir l’espace de travail de MATLAB, comme a d´j` fait pr´c´demment. ea e e version 1.2 34 mee matlab.tex19 mars 2002
  • 35. eivd Cours MATLAB Fig. 4 – Pour d´finir la fenˆtre de travail, s´lectionner New dans le menu File. Une e e e nouvelle fenˆtre est alors activ´e, nomm´e automatiquement Untitled. C’est dans e e e cette mˆme fenˆtre que le sch´ma sera construit ` partir des blocs contenus dans e e e a les biblioth`ques Simulink, voire d’autres blocs cr´´s par l’utilisateurs et r´unis e ee e dans d’autres biblioth`ques. Revenant ` la fenˆtre Simulink et double-cliquant e a e sur le groupe Linear, apparaissent alors certains blocs utiles ` la construction a (figure 4) : – le sommateur (Sum) ; – le gain (Gain) – la fonction de transfert (Transfer Fcn). S´lectionnant le premier de ces blocs ` l’aide de la souris dont le bouton gauche e a est maintenu press´, on am`ne le bloc dans la fenˆtre de travail en d´pla¸ant la e e e e c version 1.2 35 mee matlab.tex19 mars 2002