eivd                                               Cours MATLAB       ´cole d’ing´nieurs du canton de Vaud (eivd )       e...
eivd                                                                       Cours MATLABTable des mati`res              e1 ...
eivd                                                             Cours MATLAB5 Les structures de contrˆle du ”langage” MAT...
eivd                                                                Cours MATLAB1      Introduction    Le pr´sent document...
eivd                                                                 Cours MATLAB     L’interface graphique de MATLAB est ...
eivd                                                              Cours MATLABnum´riques. Diff´rentes commandes permettent ...
eivd                                                              Cours MATLAB2       M´thode de travail         e2.1     ...
eivd                                                               Cours MATLABhelp nom de commande2.3     Cr´ation de fich...
eivd                                                              Cours MATLAB    Ceci permet de fournir une aide en ligne...
eivd                                                                 Cours MATLABprint chemin nom_de_fichier.wmf -dmetapou...
eivd                                                               Cours MATLAB3        Les bases de MATLAB3.1       Cr´at...
eivd                                                             Cours MATLAB0 1 20 9ou encore, ayant d´fini pr´alablement ...
eivd                                                              Cours MATLABans =2 48 101 9Parmi les op´rations matricie...
eivd                                                                            Cours MATLAB3.1.4    Nombres complexes   L...
eivd                                                                 Cours MATLABRemarque Ici, la fonction linspace a ´t´ ...
eivd                                                                                                                Cours ...
eivd                                                                                                                      ...
eivd                                                                Cours MATLABon ne saura que trop recommander l’emploi ...
eivd                                                                 Cours MATLAB                     5.32         (s + 3)...
eivd                                                                                                                      ...
eivd                                                                                 Cours MATLAB   1. Calcul de Ga (s) pa...
eivd                                                                                                                      ...
eivd                                                                                                  Cours MATLAB[ numGv,...
eivd                                                                                                 Cours MATLAB4.5      ...
eivd                                                                                                       Cours MATLAB SY...
eivd                                                                 Cours MATLAB SYSTEMES NUMERIQUES                     ...
eivd                                                                                                          Cours MATLAB...
eivd                                                                Cours MATLAB4.5.2   R´ponse fr´quentielle         e   ...
eivd                                                              Cours MATLAB4.8      Trac´ du lieu d’Evans             e...
eivd                                                               Cours MATLAB5      Les structures de contrˆle du ”langa...
eivd                                                                Cours MATLAB6      Simulation de syst`mes dynamiques l...
eivd                                                                  Cours MATLABcas de probl`mes ` r´soudre. On y acc`de...
eivd                                                                                                                      ...
 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
 cours de Matlab
 cours de Matlab
Prochain SlideShare
Chargement dans…5
×

cours de Matlab

5 180 vues

Publié le

0 commentaire
4 j’aime
Statistiques
Remarques
  • Soyez le premier à commenter

Aucun téléchargement
Vues
Nombre de vues
5 180
Sur SlideShare
0
Issues des intégrations
0
Intégrations
6
Actions
Partages
0
Téléchargements
235
Commentaires
0
J’aime
4
Intégrations 0
Aucune incorporation

Aucune remarque pour cette diapositive

cours de Matlab

  1. 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-Bainsversion 1.2 1 mee matlab.tex19 mars 2002
  2. 2. eivd Cours MATLABTable des mati`res e1 Introduction 42 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 . 103 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 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164 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 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29version 1.2 2 mee matlab.tex19 mars 2002
  3. 3. eivd Cours MATLAB5 Les structures de contrˆle du ”langage” MATLAB o 306 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 56version 1.2 3 mee matlab.tex19 mars 2002
  4. 4. eivd Cours MATLAB1 Introduction Le pr´sent document a pour but de fournir les bases n´cessaires ` l’utilisation e e adu logiciel MATLAB, dans le cadre des cours, des exercices et du laboratoire der´gulation automatique, pour lequel les boˆ ` outils Control System et Simulink e ıtes asont employ´es. Il ne pr´sente donc ce logiciel que sous l’angle de son utilisation e een r´gulation automatique. e Le logiciel MATLAB (MATrix LABoratory) est sp´cialis´ dans le domaine du e ecalcul matriciel num´rique. Tous les objets d´finis dans MATLAB le sont donc e eau 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 eet des op´rations comme par exemple le produit et l’inversion matricielles (inv), ela transposition (’) ou encore le calcul des valeurs propres (eig) font partie dela biblioth`que standard. D’autres fonctions servant ` la cr´ation et ` la mani- e a e apulation 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 etions MATLAB. Les sources de celles-ci sont disponibles, ´crites en “ langage ” eMATLAB, voire en C ou en Fortran. L’utilisateur peut ` sa guise les modifier, amais 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 ed’´quations diff´rentielles lin´aires ou non-lin´aires par la m´thode de Runge - e e e e eKutta (ode23 et ode45), l’int´gration num´rique (trapz, quad et quad8), la re- e echerche des solutions d’´quations alg´briques (roots) ou transcendantes (fzero), e ela cr´ation et manipulation de polynˆmes (poly, polyder, polyval, conv, deconv), e ola transform´e de Fourier rapide (fft, fft2, ifft). e Des fonctions propres au traitement de donn´es (exp´rimentales, telles que e ecelles 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 epratiques pour l’ing´nieur analysant un probl`me pratique ou th´orique. e e eversion 1.2 4 mee matlab.tex19 mars 2002
  5. 5. eivd Cours MATLAB L’interface graphique de MATLAB est sans conteste l’un des points forts dulogiciel et facilite le trac´ de courbes et l’obtention de graphiques 2D ou 3D de egrande qualit´ (plot, stairs, stem, hist, mesh, surf, plot3). Le module Handle Gra- ephics offre la possibilit´ de contrˆler int´gralement cette interface, permettant e o eainsi ` l’utilisateur de mettre en forme tous ´l´ments d’un graphique, de cr´er ses a ee epropres 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 erudimentaire. L’avantage est qu’il est tr`s simple et tr`s rapide ` programmer, e e aoffrant une grande tol´rance (syntaxe simple, pas de d´finition de types, etc), ce e equi permet un gain appr´ciable en temps de mise au point. L’ing´nieur peut par ce e emoyen ˆtre plus efficace dans l’analyse d’un probl`me, en concentrant ses efforts e esur celui-ci et non pas sur l’outil servant ` le r´soudre. En revanche, MATLAB ne a econvient pas ` la programmation d’applications d’une certaine ampleur. Dans ce adernier cas, il est possible, sous certaines conditions, de programmer l’applicationen 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 fonctionsprovenant d’une s´rie de boˆ ` outils (toolbox ) d´di´s ` des domaines techniques e ıtes a e e asp´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 eensemble de fonctions sp´cialis´es programm´es ` partir des fonctions de base de e e e aMATLAB, permettant par exemple la synth`se de filtres, le calcul de FFTs, la esimulation 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 amoyen d’une interface graphique ´volu´e la construction rapide et ais´e ainsi e e eque la simulation de sch´mas fonctionnels complexes, contenant des syst`mes e elin´aires, non lin´aires voire non-stationnaires, y compris des op´rateurs logiques, e e edes outils math´matiques d’analyse, etc. e Dans le cadre de la r´gulation automatique, MATLAB constitue avant tout un etr`s puissant outil d’analyse des syst`mes dynamiques lin´aires, dont on peut tr`s e e e efacilement obtenir les propri´t´s, comme les pˆles et z´ros (tf2zp, roots) ou le gain ee o estatique (dcgain, ddcgain) et tracer les r´ponses de tous types, la r´ponse impul- e esionnelle (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 eou num´riques (step et dstep, impulse et dimpulse, bode et dbode, lsim et dlsim), esans qu’il soit cependant possible d’´tudier des syst`mes mixtes analogiques- e eversion 1.2 5 mee matlab.tex19 mars 2002
  6. 6. eivd Cours MATLABnum´riques. Diff´rentes commandes permettent de construire et d’analyser des e esyst`mes lin´aires de structure complexe, form´s de multiples blocs connect´s e e e etantˆt en s´rie, parall`le ou ´tant contre-r´actionn´s (series, cloop, feedback, pa- o e e e e erallel, append, connect, blkbuild). Pour le traitement ais´ de syst`mes non-lin´aires, de mˆme que pour la construc- e e e etion de sch´mas fonctionnels complexes, on aura ` l’´vidence int´rˆt ` utiliser la e a e ee aboˆ ` outils Simulink, qui constitue alors un outil id´al. ıte a e Incontestablement, MATLAB est un formidable outil pour l’ing´nieur, y com- epris pour celui traitant des probl`mes pratiques. Avec sa boˆ ` outils Simulink, e ıte ail est maintenant une r´f´rence au niveau mondial, non seulement dans les uni- eeversit´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. 7. eivd Cours MATLAB2 M´thode de travail e2.1 Edition et sauvegarde des fichiers MATLAB2.1.1 Editeur PFE Dans un premier temps, on peut se contenter d’introduire ses commandesune ` une au niveau de l’espace de travail o` elles sont interpr´t´es directement. a u eeCependant, par la suite, il est beaucoup plus pratique d’´crire sa s´quence de e ecommandes compl`te au moyen d’un ´diteur, puis de sauver le tout dans un e efichier avec l’extension .M. Cette s´quence pourra alors ˆtre ex´cut´e dans MAT- e e e eLAB par simple introduction du nom du fichier. Sur les stations du laboratoired’Automatique (salle C05), ”l’´diteur pour programmeur PFE” est install´ et e eson utilisation est recommand´e. On l’appelle soit par son icˆne ` partir du ges- e o ationnaire de programmes, soit directement ` partir de MATLAB en s´lectionnant a eFile-New-M-file. De cette fa¸on, l’utilisateur peut rajouter ses propres fonctions et se cr´er c erapidement et facilement toute une panoplie d’outils (par exemple, ”synth`se eautomatique d’un r´gulateur PID par la m´thode de Bode”). Les sources de e eMATLAB ´tant disponibles pour la plupart, ce n’est pas un probl`me que de e emodifier ` sa guise l’une ou l’autre des routines, par exemple dans de but d’obtenir aun trac´ particulier du lieu de Bode. e2.2 Aide en ligne En plus de l’aide de Windows, une aide en ligne est disponible pour chaquecommande de MATLAB. Il suffit d’introduire :version 1.2 7 mee matlab.tex19 mars 2002
  8. 8. eivd Cours MATLABhelp nom de commande2.3 Cr´ation de fichiers de commandes et de fonctions e utilisateur2.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 esimplement 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 asuffit de cr´er un fichier de nom e nom de fonction.Mcontenant 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) eExemple La fonction suivante convertit la grandeur d’entr´e x en d´bibels et e ela 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 efigurant dans le chemin de recherche de MATLAB. Contrairement aux fichiers de commande, les variables intervenant dans lesfonctions sont locales. Les commentaires documentant les fonctions peuvent ˆtre ins´r´s en les faisant e eepr´c´der du symbole %. e e D´tail pratique int´ressant, les premi`res lignes d’un fichier e e e nom de fichier.mpr´c´d´es du symbole % sont affich´es lorsque l’on tape : e e e e help nom de fichierversion 1.2 8 mee matlab.tex19 mars 2002
  9. 9. eivd Cours MATLAB Ceci permet de fournir une aide en ligne pour chaque fonction utilisateurnouvellement cr´´e. Pour la fonction lin2db, on documentera par exemple comme eesuit :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 dBy = 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 egard´es dans des fichiers ASCII par la commande : esave cheminnom_de_fichier.dat nom_de_variable -ascii Un tel fichier ASCII peut ˆtre ult´rieurement relu soit par MATLAB (fonction e eload) soit par d’autres programmes (Excel, Word, etc). Dans le premier cas, ilest cependant conseill´ de sauver directement la variable dans un fichier binaire e*.MAT de format sp´cifique ` MATLAB : e asave cheminnom_de_fichier nom_de_variableLa fenˆtre graphique peut ˆtre soit imprim´e directement, soit sauv´e dans un e e e efichier, lequel peut ˆtre int´gr´ dans un document (menu importation d’image) e e eou imprim´ ult´rieurement. Signalons, parmi les diff´rents formats de fichiers dis- e e eponibles, le format PostScript qui fournit une qualit´ irr´prochable. Par exemple, e ele sauvetage de la fenˆtre graphique courante s’effectue par : eprint chemin nom_de_fichier.eps -depspour le format PostScript et parversion 1.2 9 mee matlab.tex19 mars 2002
  10. 10. eivd Cours MATLABprint chemin nom_de_fichier.wmf -dmetapour le format Windows Meta File. Auparavant, il faut prendre garde ` ce que la afenˆtre graphique courante soit bien celle que l’on souhaite imprimer en tapant efigure ( 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 een 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 edu clipboard, ce qui permet par exemple de sauver la fenˆtre dans WordPerfect, eWord ou PowerPoint (choisir le format WMF plutˆt que le bitmap). o2.4.1 R´pertoires de sauvegarde : D :USERS et compte EINET e Il faut indiquer le chemin correspondant ` l’endroit o` MATLAB trouvera a ule fichier de commande ou la fonction ´crite par l’utilisateur. Dans le cas de la eversion MATLAB install´e sur le r´seau du laboratoire d’Automatique de l’eivd, e eil suffit ` l’utilisateur de sauver ses propres fonctions dans le r´pertoire : a e D :USERSqui est dans le chemin de recherche de MATLAB. Le disque D : est local etles donn´es qui s’y trouvent peuvent donc ˆtre modifi´es voire carr´ment dis- e e e eparaˆıtre d’un cours ` l’autre. A la fin de sa session de travail, on aura donc aint´rˆt ` sauvegarder ses fichiers sur disquette ou son compte EINET. Le docu- ee ament s:regulationdiversconnection_EINET.doc explique la mani`re de se econnecter son disque EINET ` partir du domaine iAi. aversion 1.2 10 mee matlab.tex19 mars 2002
  11. 11. eivd Cours MATLAB3 Les bases de MATLAB3.1 Cr´ation et calcul de vecteurs et matrices e3.1.1 Vecteurs Un vecteur-ligne est introduit de la fa¸on suivante : cv =[5,2,13,4]Le vecteur v s’affiche alors ` l’´cran : a ev=5 2 13 4Si l’introduction est termin´e par un point-virgule, on ´vite l’affichage du vecteur e ev. Un vecteur-colonne peut ˆtre introduit en rempla¸ant les virgules par des e cpoints-virgules ou des retours de chariot. L’acc`s aux composantes d’un vecteur es’effectue directement par des commandes du genre :v (3)ce qui donne ` l’´cran : a eans =13Si comme dans le cas pr´sent, v(3) n’est pas affect´ ` une variable, par une e e acommande de la forme x=v(3) , MATLAB copie d’office le r´sultat dans la variable esyst`me ans (answer ), alors disponible pour le calcul suivant. eRemarque Dans MATLAB, les indices des vecteurs et matrices doivent ˆtre deseentiers positifs. L’indice z´ro n’est donc pas plus admis que les indices n´gatifs. e e3.1.2 Matrices Une matrice peut ˆtre construite de diff´rentes mani`res : e e em= [ 5 , 2 , 1 3 , 4 ; 6 , 8 , 3 , 1 0 ; 0 , 1 , 2 0 , 9 ]et l’affichage devient :m=5 2 13 46 8 3 10version 1.2 11 mee matlab.tex19 mars 2002
  12. 12. eivd Cours MATLAB0 1 20 9ou encore, ayant d´fini pr´alablement les vecteurs-ligne v1, v2 et v3 : e ev1 = [ 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 eem( 2 , 4 )et l’on obtient :ans =10Le remplacement de 2 par : (deux points) permet d’obtenir toute la colonne 4 :m( : , 4 )et l’´cran affiche le vecteur-colonne : eans =4109De mˆme, l’affichage d’une sous-matrice s’obtient par : em( 2 : 3 , 2 : 4 )et l’´cran affiche : eans =8 3 101 20 9L’acc`s aux colonnes 2 et 4 de la matrice m se r´alise comme suit : e em( : , [ 2 , 4 ] )ce qui produit :version 1.2 12 mee matlab.tex19 mars 2002
  13. 13. eivd Cours MATLABans =2 48 101 9Parmi les op´rations matricielles qui ont une certaine importance pratique, si- egnalons l’op´rateur de transposition em’donnant dans le cas de l’exempleans =5 6 02 8 113 3 204 10 9et la fonction eig qui calcule les valeurs propres d’une matrice. Soit la matricecarr´e 4 × 4 form´e de composantes al´atoires (ici utilisation de la fonction rand) e e eA=rand ( 4 , 4 )A=0.2190 0.9347 0.0346 0.00770.0470 0.3835 0.0535 0.38340.6789 0.5194 0.5297 0.06680.6793 0.8310 0.6711 0.4175 Les valeurs propres (eigenvalues) sont :eig (A)ans =1. 409 50.1082 + 0.4681 i0.1082 − 0.4681 i−0.07633.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 ediag (matrice diagonale), linspace (vecteur dont les composantes sont espac´es elin´airement entre deux limites) et logspace (vecteur dont les composantes sont eespac´es logarithmiquement entre deux limites). eversion 1.2 13 mee matlab.tex19 mars 2002
  14. 14. eivd Cours MATLAB3.1.4 Nombres complexes Les vecteurs et matrices peuvent avoir des composantes complexes. Les nombrescomplexes sont introduits comme suit :x = a + j ∗b ;oux = a + i ∗b ; L’unit´ de l’axe imaginaire est donc indiff´remment i ou j. Des fonctions sont e epr´vues pour le calcul de la partie r´elle (real(x)), de la partie imaginaire (imag(x)), e edu module (abs(x)), de l’argument (angle(x)) et du conjugu´ complexe (conj(x)). e3.2 Op´rations sur les tableaux e On rappelle le slogan publicitaire de MATLAB, ”live is to short to spendtime with for loops”, pour mentionner qu’effectivement, la majeure partie desop´rations peuvent s’effectuer sans boucles de type for. Par exemple, le calcul du esinus cardinal sin (ϑ) sinc (ϑ) = ϑde l’angle θ pour les valeurs de suivantest 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 edans MATLAB pars 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 eop´ration matricielle, mais d’une op´ration ´l´ment par ´l´ment sur deux ta- e e ee eebleaux. 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 · b22et 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 · b22version 1.2 14 mee matlab.tex19 mars 2002
  15. 15. eivd Cours MATLABRemarque Ici, la fonction linspace a ´t´ utilis´e, une variante ´tant d’´crire ee e e et 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 een ligne) pour les commandes axis, hold, et subplot, title, xlabel, ylabel, gtext ainsique figure. Cette derni`re instruction permet de sp´cifier le num´ro de la fenˆtre e e e egraphique dans laquelle le trac´ doit ˆtre effectu´. L’ex´cuter juste avant l’une e e e edes instructions de tra¸age active directement la fenˆtre graphique qui apparaˆ c e ıtalors ` l’´cran. a eversion 1.2 15 mee matlab.tex19 mars 2002
  16. 16. eivd Cours MATLAB3.3.1 Exemple La suite des instructions ci-dessous calcule et trace le sinus, le sinus carr´ ainsi eque le sinus cardinal de l’angle θ d´fini ` l’aide de l’instruction linspace : e at 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 15version 1.2 16 mee matlab.tex19 mars 2002
  17. 17. eivd Cours MATLAB4 Analyse de syst`mes dynamiques lin´aires ` e e a l’aide de la boˆ ` outils control systems ıte a4.1 Introduction de fonctions de transfert4.1.1 Introduction sous forme polynˆmiale o L’introduction de fonctions de transfert s’effectue en deux temps, les num´rateur eet d´nominateur devant ˆtre donn´s s´par´ment. Le principe est simple : les e e e e enum´rateur et d´nominateur apparaissent sous forme de vecteurs-ligne, les com- e eposantes desquels ´tant les coefficients des puissances d´croissantes de s (syst`mes e e eanalogiques) 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.1Son 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 enon, doit toujours ˆtre donn´. Ainsi, la fonction de transfert de l’int´grateur e e e 2.71828 G (s) = sest 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 etoutefois int´rˆt ` ˆtre organis´ et rigoureux dans les notations employ´es ; par ee ae e eexemple, en se r´f´rant au sch´ma fonctionnel universel, en r´gulation de corres- ee e epondance (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 sversion 1.2 17 mee matlab.tex19 mars 2002
  18. 18. eivd Cours MATLABon ne saura que trop recommander l’emploi d’une notation semblable ` la sui- avante,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 + 10Notons qu’` partir de la version 5.0 de MATLAB, il existe des objets fonction de atransfert, 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 eses z´ros, pˆles et de son facteur d’Evans k. Les z´ros et pˆles doivent apparaˆ e o e o ıtresous forme de vecteurs-colonne. Soit par exemple la fonction de transfert :version 1.2 18 mee matlab.tex19 mars 2002
  19. 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 : ezG=[−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 ed´nominateur de la fonction de transfert du syst`me G(s) ou G(z) ne sont pas e edirectement disponibles sous forme de polynˆmes. o4.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·uil suffit d’indiquer ` MATLAB les quatre matrices A, B, C, et D, par exemple : aA= [ − 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 atf2zp (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 orespectivement, et le facteur d’Evans dans la variable kG. Les noms zG, sG et kGsont arbitraires. On acc`de ` ces valeurs par exemple en tapant leur nom : e aversion 1.2 19 mee matlab.tex19 mars 2002
  20. 20. eivd Cours MATLABsG MATLAB affiche :sG=−19.4868−0.5132 Remarque : un polynˆme est introduit sous la forme d’un vecteur-ligne v odont les composantes repr´sentent les coefficients des puissances d´croissantes ; e eses 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 T4.4 Construction de sch´mas fonctionnels e4.4.1 Fonctions series, cloop Prenons pour exemple le sch´ma fonctionnel universel, dont on souhaite obte- enir les fonctions de transfert en boucle ouverte Go (s) et en boucle ferm´e Gw (s). ePour 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 sversion 1.2 20 mee matlab.tex19 mars 2002
  21. 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. 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 Axis4.4.2 Fonction feedback La fonction feedback est utile pour calculer la fonction de transfert ´quivalente ede 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. 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 eGc (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 edu 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. 24. eivd Cours MATLAB4.5 Calcul et trac´ de r´ponses de syst`mes dynamiques e e e lin´aires e4.5.1 R´ponse temporelle e Lorsque qu’aucun argument de sortie n’est sp´cifi´ (lhs, left handside argu- e ement), 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 edstep, dlsim sont disponibles. Leur signification sont donn´es sur les tables 4.5.1 page esuivante et 4.5.1 page 26. Le trac´ correspondant est directement obtenu en tapant les commandes telles eque 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 emˆme par d´faut. Si l’on souhaite les fixer, on peut par exemple le faire selon les e eindications 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 esp´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 eDans ce cas, on proc`de comme ci-dessus en sp´cifiant toutefois des arguments e ede 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 econtenant les instants auxquels elle a ´t´ calcul´e. x est une matrice contenant ee el’´volution du vecteur d’´tat syst`me dynamique. La figure suivante montre le e e ecalcul pr´alable des r´ponses imoulsionnelle et indicielle avant leur trac´ ` l’aide e e eade la fonction plot.[ ys , x , t ] = s t e p (numGw, denGw ) ;[ y i ] = i m p u l s e (numGw, denGw, t ) ;figureplot ( 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 ’ ) exlabel ( ’ t [ s ] ’ )version 1.2 24 mee matlab.tex19 mars 2002
  25. 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. 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. 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 ea` une rampe de consigne, en faisant notamment usage de la fonction lsim.wr = t ’ ;yr = l s i m (numGw, denGw, wr , t ) ;figuresubplot ( 2 1 1 ) , plot ( t , yr )t i t l e ( ’ Consigne et grandeur r ´ g l ´ e ’ ) e esubplot ( 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. 28. eivd Cours MATLAB4.5.2 R´ponse fr´quentielle e e Les fonctions bode, nyquist, nychols, et pour les syst`mes num´riques, dbode, e ednyquist, 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 eon 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 phaseet 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. e4.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 margesversion 1.2 28 mee matlab.tex19 mars 2002
  29. 29. eivd Cours MATLAB4.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. o4.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 zversion 1.2 29 mee matlab.tex19 mars 2002
  30. 30. eivd Cours MATLAB5 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 endversion 1.2 30 mee matlab.tex19 mars 2002
  31. 31. eivd Cours MATLAB6 Simulation de syst`mes dynamiques lin´aires e e et non-lin´aires avec la boˆ ` outils Simulink e ıte a6.1 Introduction La boˆ ` outils Simulink est un compl´ment extrˆmement puissant ` MAT- ıte a e e aLAB. 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 acar il ´vite l’utilisation extrˆmement fastidieuse des fonctions MATLAB blkbuild e eet connect. Si certains reprochent ` MATLAB un certain caract`re r´barbatif, Simulink, a e een plus d’offrir de nouveaux outils tr`s puissants, y rem´die compl`tement en e e eoffrant une interface utilisateur extrˆmement conviviale. Les deux logiciels res- etent toutefois compl`tement li´s l’un ` l’autre, Simulink n’´tant du point de vue e e a ehi´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 eson usage ne soit pas indispensable, on peut dire qu’il est utilis´ dans 90% des eversion 1.2 31 mee matlab.tex19 mars 2002
  32. 32. eivd Cours MATLABcas de probl`mes ` r´soudre. On y acc`de ` partir l’espace de travail MATLAB e a e e apar la commande :simulinkou en appuyant sur le bouton correspondant de la barre d’outils de la fenˆtre deeMATLAB. 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 eavec le logiciel. La figure 1 page pr´c´dente montre ces groupes. e e On remarque notamment les biblioth`ques Linear et Nonlinear contenant echacune 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 arajouter 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 etˆt indispensable de bien connaˆ MATLAB pour utiliser Simulink de mani`re o ıtre ecoh´rente et organis´e, i.e. professionnellement. Dans tous les cas, on a int´rˆt e e eea` utiliser Simulink en forte connection avec MATLAB ; il faut savoir que tousles blocs Simulink peuvent ˆtre param´tr´s de mani`re symbolique. Ceci permet e e e ede d´finir les param`tres dans l’espace de travail MATLAB, soit manuellement, e esoit en ex´cutant un fichier de type script. Dans ce cas, plusieurs fichiers de pa- eram´trisation peuvent ˆtre cr´´s et lanc´s dans MATLAB avant le d´but de la si- e e ee e emulation. La documentation desdits fichiers permet de rationaliser et d’organiserle 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 elyse 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 epiler ) permettent de g´n´rer le code C du sch´ma de simulation, ainsi que le e e ecode objet pour des processeurs de signaux (par exemple Texas TMS320C30,syst`me produit par la firme DSPACE). Simulink peut ˆtre programm´ relative- e e ement simplement en C. Dans ce cas, les performances en terme de temps de calculseront nettement meilleures. Notons que le laboratoire d’Automatique de l’eivddispose d’une licence du compilateur C/C++ de Watcom version 10.6 support´ epar MATLAB/Simulink. Le compilateur Borland C/C++, dont l’´cole a la licence ede site, n’est support´ que par MATLAB et n’apporte aucune contribution quant ea` la vitesse de calcul. Il faut penser ` cette variante de programmation (en C) alorsque le temps de calcul doit ˆtre r´duit et lorsque l’on souhaite int´grer ` la e e e asimulation du code C existant. D’autre part, on peut de cette fa¸on profiter de ctoutes les fonctionnalit´s Windows et personnaliser son application. Enfin, il faut ereconnaˆ que le fait de pouvoir tester son code source C avec MATLAB/Simulink ıtreavant de le livrer et l’ex´cuter sur l’application r´elle permet d’acc´l´rer et facilite e e eeconsid´rablement le d´veloppement. Il s’agit incontestablement d’un des points e eversion 1.2 32 mee matlab.tex19 mars 2002
  33. 33. eivd Cours MATLABforts de MATLAB/Simulink. La combinaison de Simulink et d’un syst`me d’acquisition en temps r´el est e epossible mais tr`s d´licate et limit´e en rapidit´, notamment ` cause de la lenteur e e e e aet de la complexit´ de Windows. Un travail allant dans cette direction a ´t´ e eeeffectu´ 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- enels, est un outil fanstastique offert par Simulink. Cependant, les limites de cegenre de programmation sont rapidement atteintes lorsque le syst`me est relati- evement 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 oterconnecter les blocs par de nombreuses lignes cr´´es ` la souris. Les fonctions ee aS ont un format un peu particulier, propre ` Simulink, mais s’´crivent presque a eaussi simplement que les fonctions MATLAB ; elles consistent ` programmer les a´quations diff´rentielles du syst`me ` simuler.e e e a6.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’unmoteur ` courant continu ` excitation s´par´e constante exploit´ en boucle ou- a a e e everte (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 fFig. 2 – Sch´ma technologique d’un entraˆ e ınement DC ` excitation s´par´e a e econstante. Le frottement est purement visqueux, proportionnel ` la vitesse, de acoefficient Rf . On admettra que le syst`me est parfaitement lin´aire, en faisant les hypoth`ses e e esimplificatrices 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. eversion 1.2 33 mee matlab.tex19 mars 2002

×