Top Banner

of 55

Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
  • Introduction

    Auteur : Serge Bedwani

  • Introduction MATLAB Auteur : Serge Bedwani

    Page 1

    Table des matires

    1.0 Introduction.....................................................................................3

    2.0 Notions de base de MATLAB........................................................ 52.1 Aide dans MATLAB......................................................................... 52.2 Fichiers de commande....................................................................... 52.3 Fichiers de donnes........................................................................... 52.4 Fonctions.........................................................................................52.5 Reprsentation graphique 2D (coordonnes cartsiennes)........................ 6

    2.5.1 Courbes de fonctions..................................................................62.5.2 Courbes paramtriques............................................................... 82.5.3 Nuage de points........................................................................ 9

    2.6 Reprsentation graphique 2D (coordonnes polaires).............................. 92.7 Reprsentation graphique 2D (diagrammes).......................................... 112.8 Reprsentation des Axes logarithmiques............................................... 132.9 Reprsentation graphique 3D.............................................................. 14

    2.9.1 Courbes 3D.............................................................................. 142.9.2 Surfaces...................................................................................15

    3.0 Les bases de MATLAB................................................................... 163.1 Vecteurs.......................................................................................... 163.2 Matrices.......................................................................................... 16

    3.2.1 Construction des matrices particulires......................................... 183.3 Nombres complexes.......................................................................... 183.4 Interpolation polynmiale...................................................................193.5 Interpolation linaires et non linaires.................................................. 203.6 Interpolation au sens des moindres carrs..............................................223.7 Fonctions MATLAB pour les quations et systmes diffrentiels..............24

    4.0 La programmation avec MATLAB...............................................264.1 Oprateurs et caractres spciaux.........................................................264.2 Instructions et commandes structures..................................................27

    4.2.1 Instruction for...........................................................................274.2.2 Instruction while....................................................................... 274.2.3 Instruction if.............................................................................284.2.4 Instruction de rupture de squence............................................... 28

    4.3 Ralisation d'interfaces graphiques.......................................................29

  • Introduction MATLAB Auteur : Serge Bedwani

    Page 2

    5.0 Complment : Analyse de systmes dynamiques linaires l'aide de la bote outils "control systems"................................31

    5.1 Introduction de fonctions de transfert (transmittance)..............................315.1.1 Introduction sous forme polynmiale............................................315.1.2 Introduction sous forme de zros, ples et gain ("Evans")................ 31

    5.2 Passage d'un modle l'autre.............................................................. 325.3 Construction de schmas fonctionnels.................................................. 33

    5.3.1 Fonctions series, cloop...............................................................335.3.2 Fonction feedback..................................................................... 35

    5.4 Calcul et trac de rponse de systmes dynamiques linaires....................365.4.1 Rponse temporelle................................................................... 365.4.2 Rponse frquentielle.................................................................38

    5.5 Analyse des proprits des systmes.................................................... 385.6 Calcul, affichage des marges de gain et de phase....................................395.7 Trac du lieu d'Evans.........................................................................395.8 Divers............................................................................................. 40

    6.0 Applications (exemples)..................................................................416.1 Ralisation d'une fonction qui affiche le lieu de Bode............................. 416.2 Rponse en frquence d'un filtre RLC.................................................. 476.3 Sous-chantillonnage d'une sinusode...496.4 Suite d'impulsions rectangulaires.50

    7.0 Rfrences bibliographiques.......................................................... 54

    8.0 Services Internet..............................................................................54

  • Introduction MATLAB Auteur : Serge Bedwani

    Page 3

    1.0 Introduction

    MATLAB est une abrviation de MATrix LABoratory. Ecrit lorigine, en Fortran,par Cleve Moler, MATLAB tait destin faciliter laccs au logiciel matriciel.La version actuelle, crite en C par The MathWorks Inc., existe en versionprofessionnelle et en version tudiant. Sa disponibilit est assure sur plusieursplates-formes : Sun, Bull, HP, IBM, compatibles PC, Macintosh, et plusieursmachines parallles.

    MATLAB est confort par une multitude de botes outils (toolboxes) spcifiques des domaines varis. Un autre atout de MATLAB, est sa portabilit; la mme portionde code peut tre utilise sur diffrentes plates-formes sans la moindre modification.

    En complment de MATLAB, loutil additionnel SIMULINK est propos pour lamodlisation et la simulation de systmes dynamiques en utilisant une reprsentationde type schmas-blocs.

    Lenvironnement MATLAB se prsente sous la forme dun espace de travail(Workspace)

    o un interprteur de commande excute des oprations et fonctions MATLAB. Lessources de celles-ci sont disponibles, crites en langage MATLAB, voir en C ou enFortran. Lutilisateur peut sa guise les modifier, mais en sen inspirant, il peutsurtout crer et rajouter ses propres fonctions.

    MATLAB offre galement plusieurs fonctions destines la rsolution (numrique)dquations diffrentielles linaires ou non-linaires par la mthode de Runge-Kutta(ode23 et ode45), lintgration numrique, la recherche des solutions dquationsalgbriques ou transcendantes, la cration et manipulation de polynmes (poly,polyder, polyval, conv, deconv), la transforme de Fourier rapide (ffr, fft2, ifft).

  • Introduction MATLAB Auteur : Serge Bedwani

    Page 4

    Des fonctions propres au traitement de donnes, comme min, max, mean, cumsum,sort, std, diff, ainsi que celles relatives linterpolation (polyfit, interp1) sont autantdoutils trs pratiques pour lingnieur analysant un problme.

    Linterface graphique de MATLAB est sans conteste lun des points forts du logicielet facilite le trac de courbes et lobtention de graphiques 2D ou 3D de grande qualit.

    Le langage MATLAB contient un minimum de structures de programmation(structure itrative, structure conditionnelle, sous-routine) mais reste trsrudimentaire.Lavantage est quil est trs simple et trs rapide programmer, offrant une grandetolrance (syntaxe simple, pas de dfinition de types, etc), ce qui permet un gainapprciable en temps de mise au point. Lingnieur peut par ce moyen tre plusefficace dans lanalyse dun problme, en concentrant ses efforts sur celui-ci et nonpas sur loutil servant le rsoudre.

    Les botes outils (toolbox) ddies des domaines techniques spcifiques, sont :

    Le traitement du signal La rgulation automatique Lidentification Les rseaux de neurones La logique floue Le calcul symbolique

    Et bien dautres encore. Ces botes outils sont simplement constitues dunensemble de fonctions spcialises programmes partir des fonctions de base deMATLAB, permettant par exemple la synthse de filtres, le calcul de FFTs, lasimulation dalgorithmes flous ou encore le calcul de rponse harmoniques.

    Simulink nest rien dautre quune bote outils de MATLAB permettant au moyendune interface graphique volue la construction rapide et aise ainsi que lasimulation de schmas fonctionnels complexes, contenant des systmes linaires, nonlinaires voire non-stationnaires, y compris des oprateurs logiques, des outilsmathmatiques danalyse, etc.

    Incontestablement, MATLAB est un formidable outil pour lingnieur, y comprispour celui traitant des problmes pratiques. Avec sa bote outils Simulink, il estmaintenant une rfrence au niveau mondial, non seulement dans les universits etinstituts de recherche, mais aussi dans le milieu industriel.

  • Introduction MATLAB Auteur : Serge Bedwani

    Page 5

    2.0 Notions de base de MATLAB

    2.1 Aide dans MATLAB

    help ou helpwin.: fournit de laide sur lutilisation de lafonction ou de la commande indique.

    Lookfor : fournit la liste des fonctions et commandes contenant le mot-clspcifi dans la premire ligne de leur texte daide.

    2.2 Fichiers de commande

    Un fichier de commande est un fichier ASCII dextension .M contenant une suite decommandes MATLAB. Il peut tre excut directement en tapant simplement sonnom dans lespace de travail MATLAB.

    2.3 Fichiers de donnes

    Il est possible dans MATLAB, de charger un fichier, contenant par exemple une sriede mesure, par la commande suivante :

    Load fichier.ext

    Il en est de mme avec la sauvegarde. Par exemple, on dsire sauvegarder la variablet qui est un vecteur, par lintermdiaire de la commande suivante :

    Save fichier.ext t ASCII

    2.4 Fonctions

    De nouvelles fonctions peuvent tre ajoutes MATLAB par lutilisateur. Il suffit decrer un fichier de nom nom_de_fichier.m contenant les commandes excuter etdont len-tte a le format :

    Function [liste des arguments de sortie] =nom_de_fonction(liste des arguments dentre)

    Exemple : la fonction suivante convertit la grandeur dentre x en dcibels et laretourne dans y

    function[y]=lin2dB(x)% function [y]=lin2dB(x)% conversion de x en dB

    y=20*log10(x);

    le fichier correspondant est sauv sous le nom lin2dB.m

  • Introduction MATLAB Auteur : Serge Bedwani

    Page 6

    Contrairement aux fichiers de commande, les variables intervenant dans les fonctionssont locales.

    Les commentaires documentant les fonctions peuvent tre insrs en les faisantprcder du symbole %.Lorsque lon tape dans lespace de travail help lin2dB , cela nous fourni une aide enligne de la fonction.

    2.5 Reprsentation graphique 2D (coordonnes cartsiennes)

    La commande plot dont la syntaxe est la suivante :

    plot(x,y,s)

    permet de tracer des graphiques (courbes ou nuages de points) de vecteurs dedimensions compatibles (y en fonction de x). Le choix du type et de la couleur dutrac peut se faire avec le paramtre facultatif qui est une chane compose de 1 3caractres parmi ce qui suit :

    couleurs tracs discontinus tracs continus (symboles)

    y jaune . point - trait continum magenta o cercles : pointillsc cyan x croix -. trait-pointr rouge + plus -- trait-traitg vert * toiles b bleu w blanc k noir

    Le type de trac est par dfaut le trait continu. De mme, MATLAB fixe une couleurpar dfaut si elle nest pas spcifie.

    2.5.1 Courbes de fonctions

    Le trac de la courbe dune fonction commence par le choix de lintervalle dedfinition (ou du trac).

    x=-10*pi:10*pi;y=sin(x).*exp(-0.1*x);plot(x,y,g)

    Un quadrillage, ralis par la commande grid , donne plus de lisibilit au graphique.La commande grid off supprime le quadrillage du graphique courant.

  • Introduction MATLAB Auteur : Serge Bedwani

    Page 7

    La commande title ajoute un titre au graphique de la fentre courante.

    title(Trac de la courbe dune fonction)

    Les commandes xlabel et ylabel permettent de dfinir des titres pour les axesdes abscisses et des ordonnes.

    xlabel( x : axe des abscisses)ylabel( y : axe des ordonnes)

    Dans certains cas, un texte explicatif est ncessaire sur le graphique, ceci peut treralis par la commande text comme suit :

    text(x,y,texte explicatif)

    x et y sont les coordonnes du dbut du texte.

    Il es possible aussi de placer du texte un endroit quelconque du graphiqueslectionn par lutilisateur laide de la souris, grce la commande gtext.

    gtext(texte explicatif)

    Remarque : avec la version 5.3 de MATLAB, des boutons sont intgrs dans lafentre graphique, ce qui permet dinsrer entre autre du texte directement sur legraphique, sans passer par les commandes vues ci-dessus.

    Il est possible de tracer plusieurs courbes en utilisant une seule fois la fonction plotcomme suit :

    plot(x1, y1, s1, x2, y2, s2, )

    Si y reprsente un vecteur de nombres complexes, plot(y) trace les points imagesdes lments de y.

    La commande figure(gcf) permet de passer de la ligne de commandes lafentre graphique courante.

    Lutilisation des commandes hold on ou hold off offre ou supprime laposibilit de tracer plusieurs courbes dans la mme fentre graphique.

    Exemple :Dans lexemple qui suit, nous allons tracer des courbes reprsentant les fonctionssinus cardinal et sinus amorti, dans une mme fentre graphique.

  • Introduction MATLAB Auteur : Serge Bedwani

    Page 8

    x=-4*pi:pi/10:4*pi;% sinus cardinal en trait rouge continuy1=sinc(x/2);plot(x,y1,r)hold on% sinus amorti en pointills, couleur vertey2=sin(x).*exp(-0.1*x)/3;plot(x,y2,g:);% documentation du graphiquexlabel(x)ylabel(y)title(Courbes sinus cardinal et sinus amorti)

    -15 -10 -5 0 5 10 15-0.8

    -0.6

    -0.4

    -0.2

    0

    0.2

    0.4

    0.6

    0.8

    1

    1.2

    x

    y

    Courbes sinus cardinal et sinus amorti

    sinus amorti

    sinus cardinal

    2.5.2 Courbes paramtriques

    La procdure de trac de courbes paramtriques est identique celles de courbes defonctions.

    t=-100:0.1:100;x=(2*t)./(1+t.^4);y=(2*t.^3)./(1+t.^4);plot(x,y)title(lemniscate de Bernouilli)xlabel(x)ylabel(y)grid on

    -1.5 -1 -0.5 0 0.5 1 1.5-1.5

    -1

    -0.5

    0

    0.5

    1

    1.5lemniscate de Bernouilli

    x

    y

  • Introduction MATLAB Auteur : Serge Bedwani

    Page 9

    2.5.3 Nuage de points

    Le trac dun nuage de points se fait de la mme faon que celui dune courbe. Onprcisera dans la commande plot, le symbole (*, +, x, ., o) affecter auxdiffrents points.

    Exemple: reprsentation graphique dun nuage de points alatoires

    N=100;x=rand(1,N);y=rand(1,N);plot(x,y,x);grid ontitle(Nuage de points alatoires)

    0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 10

    0.1

    0.2

    0.3

    0.4

    0.5

    0.6

    0.7

    0.8

    0.9

    1Nuage de points alatoires

    2.6 Reprsentation graphique 2D (coordonnes polaires)Le trac de courbes en coordonnes polaires sera ralis par la fonction polar, quiobit la syntaxe suivante :

    polar(theta, rho, type)

    Le type de courbe correspond la nature du trac (continu, discontinu, etc.) et sacouleur. Les diffrentes possibilits sont identiques celles de la fonction plot.

  • Introduction MATLAB Auteur : Serge Bedwani

    Page 10

    Limaons

    Un graphique qui a pour quation polaire

    += cosbar ou += sinbar

    o a et b ne sont pas nuls, sappelle un limaon. La cardiode est un cas particulier dulimaon pour lequel ba = .

    theta=-pi:0.1:pi;r=2+2*cos(theta);polar(theta,r,r-.)title(Cardiode)

    Rosaces

    Un graphique qui a pour quation polaire

    = nsinar ou = ncosr

    o n est un entier positif suprieur 1 et a un nombre rel quelconque, est constitude boucles noues lorigine. Lorsque n est impair on obtient n boucles, et 2nboucles si n est pair.

    theta=-pi:0.1:pi;r=3*cos(2*theta);polar(theta,r,r-.)title(Rosace quatre lobes)

    1

    2

    3

    4

    30

    210

    60

    240

    90

    270

    120

    300

    150

    330

    180 0

    Cardiode

    1

    2

    3

    30

    210

    60

    240

    90

    270

    120

    300

    150

    330

    180 0

    Rosace quatre lobes

  • Introduction MATLAB Auteur : Serge Bedwani

    Page 11

    2.7 Reprsentation graphique 2D (diagrammes)Le trac dhistogramme se fera laide de la commande hist.

    hist(x,N) : trace lhistogramme des valeurs du vecteur x en N classes

    [n,x] = hist(y,N) : retourne des valeurs utiliser avec la fonction bar.

    Comme exemple, nous gnrons un vecteur de taille 1000 dont les composantes sontles valeurs dune variable alatoire gaussienne, centre et rduite. La reprsentationdes valeurs de lhistogramme sont rpartis en dix classes.

    y=randn(1000,1);hist(y,10);grid on, title(Histogramme)

    -3 -2 -1 0 1 2 30

    50

    100

    150

    200

    250Histogramme

    Au lieu de spcifier directement le nombre de classes pour la commande hist, nouspouvons indiquer un vecteur qui reprsente lintervalle du trac ainsi que la largeurdes classes.

    x=-3:0.2:3;hist(y,x), grid ontitle(Histogramme)

    -4 -3 -2 -1 0 1 2 3 40

    10

    20

    30

    40

    50

    60

    70

    80

    90

    100Histogramme

  • Introduction MATLAB Auteur : Serge Bedwani

    Page 12

    La commande bar(x,y) dessine un diagramme sous forme de barres des valeurs dey en fonction de celles de x.

    x=-2*pi:pi/10:2*pi;y=cos(x);bar(x,y)grid ontitle(Diagramme des valeurs dune fonction)

    -8 -6 -4 -2 0 2 4 6 8-1

    -0.8

    -0.6

    -0.4

    -0.2

    0

    0.2

    0.4

    0.6

    0.8

    1Diagramme des valeurs d'une fonction

    La commande stairs(x,y) trace les valeurs discrtes de y en fonction de cellesde x sous forme bloque ou en marches descaliers.

    stairs(x,y)grid ontitle(Trac en escalier de valeurs discrtes)

    -8 -6 -4 -2 0 2 4 6 8-1

    -0.8

    -0.6

    -0.4

    -0.2

    0

    0.2

    0.4

    0.6

    0.8

    1Trac en escalier de valeurs discrtes

  • Introduction MATLAB Auteur : Serge Bedwani

    Page 13

    La fonction stem permet le trac dune squence de valeurs discrtes.

    stem(x,y)grid on, title(Diagramme en btons)

    -8 -6 -4 -2 0 2 4 6 8-1

    -0.8

    -0.6

    -0.4

    -0.2

    0

    0.2

    0.4

    0.6

    0.8

    1Diagramme en btons

    2.8 Reprsentation des Axes logarithmiques

    semilogx(w,20*log10(A))

    Reprsente A (ici en [dB]) en fonction de w, lchelle tant logarithmique.(A et w doivent avoir le mme nombre dlments)

    semilogx(w,phase)

    Reprsente phase en fonction de w, lchelle tant logarithmique.(phase et w doivent avoir le mme nombre dlments)

    loglog(x,y)

    Reprsente y en fonction de x, les chelles tant toutes deux logarithmiques.(x et y dooivent avoir le mme nombre dlments)

  • Introduction MATLAB Auteur : Serge Bedwani

    Page 14

    2.9 Reprsentation graphique 3D

    2.9.1 Courbes 3D

    Le trac de courbes dans lespace se fera laide de linstruction plot3 qui obit une syntaxe analogue celle de plot.

    plot3(x,y,z,symb)

    Le choix du type de courbe ainsi que la couleur du trac se fait avec le paramtrefacultatif symb.

    Exemple : trac dune hlice circulaire dfinie par une quation paramtrique.

    t=-3*pi:pi/10:3*pi;x=4*sin(t);y=4*cos(t);z=2*t;plot3(x,y,z)title(Hlice circulaire)gridxlabel(x)ylabel(y)zlabel(z)

    -4-2

    02

    4

    -4-2

    02

    4-20

    -10

    0

    10

    20

    x

    Hlice circulaire

    y

    z

  • Introduction MATLAB Auteur : Serge Bedwani

    Page 15

    2.9.2 Surfaces

    Soit lexemple dune fonction 2 variables (sinus cardinal 3D) :

    22

    22

    yx)yxsin(

    z+

    +=

    pour x et y variant de - avec un pas de /10.

    x=-pi/2:pi/30:pi/2;y=x;

    On gnre deux matrices carres X et Y qui dfinissent le domaine de calcul de z, onutilisera pour ceci la fonction meshgrid.

    [X,Y]=meshgrid(x,y);

    On value la fonction z et on stocke les donnes dans la variable Z.

    Z=sinc(X.^2+Y.^2);

    On dessine la surface reprsentative de la fonction.

    mesh(Z)

    Pour dautres exemples, je vous invite taper graf3d dans lenvironnement deMATLAB, pour des exemples complmentaires.

  • Introduction MATLAB Auteur : Serge Bedwani

    Page 16

    3.0 Les bases de MATLAB

    3.1 Vecteurs

    Un vecteur ligne est introduit de la faon suivante :

    V=[1,2,3,4]

    Astuce : si lintroduction du vecteur est termine par un point-virgule, on vitelaffichage de celui-ci, il en est de mme avec les autres instructions.

    Laccs aux composantes dun vecteur seffectue directement par des commandes dugenre :

    V(2)

    Attention : dans MATLAB, les indices des vecteurs et matrices doivent tre desentiers positifs. Lindice zro nest donc pas plus admis que les indicesngatifs.

    3.2 Matrices

    Une matrice peut tre construite de diffrentes manires :

    m=[5,2,8,1;10,20,30,40;22,24,26,28]

    ce qui nous donne dans lenvironnement MATLAB :

    m=

    5 2 8 110 20 30 4022 24 26 28

    ou encore, ayant dfini pralablement les vecteurs-lignes v1,v2,v3 :

    v1=[5,2,8,1];v2=[10,20,30,40];v3=[22,24,26,28];m=[v1;v2;v3]

    Laccs un lment de la matrice seffectue par :

    m(2,4);

    et lon obtient : 40.

  • Introduction MATLAB Auteur : Serge Bedwani

    Page 17

    Le remplacement de 2 par : (deux points) permet dobtenir toute la colonne 4 :

    m(:,4)

    et lon obtient le vecteur-colonne :

    14028

    De mme, laffichage dune sous-matrice sobtient par :

    m(2:3,2:4)

    et lon obtient :

    20 30 4024 26 28

    Laccs aux colonnes 2 et 4 de la matrice m se ralise comme suit :

    m(:,[2,4]);

    ce qui produit :

    2 120 4024 28

    Parmi les oprations matricielles qui ont une certaine importance pratique, signalonsloprateur de transposition :

    m

    ce qui produit dans notre cas :

    5 10 222 20 248 30 261 40 28

  • Introduction MATLAB Auteur : Serge Bedwani

    Page 18

    3.2.1 Construction des matrices particulires

    Les routines ones et zeros permettent de construire des matrices dont tous leslments sont gaux 1 respectivement 0. Voir galement eye (matrice identit),diag (matrice diagonale), linspace (vecteur dont les composantes sont espaceslinairement entre deux limites) et logspace (vecteur dont les composantes sontespaces logarithmiquement entre deux limites).

    Matrices alatoires :

    On peut gnrer des matrices alatoires dont les lments sont distribusnormalement avec une moyenne nulle et une variance unit laide de la commanderandn(m,n). Pour une distribution uniforme, on utilisera la commanderand(m,n). Les paramtres m et n dsignent respectivement le nombre de lignes etde colonnes.

    n=200;A_norm=randn(n);n_classes=50;hist(A_norm(:),n_classes)

    -5 -4 -3 -2 -1 0 1 2 3 40

    500

    1000

    1500

    2000

    2500

    3000Distribution normale

    3.3 Nombres complexes

    Les vecteurs et matrices peuvent avoir des composantes complexes. Les nombrescomplexes sont introduits comme suit :

    X=a+j*b;ou

    X=a+i*b;

  • Introduction MATLAB Auteur : Serge Bedwani

    Page 19

    Lunit de laxe imaginaire est donc indiffremment i ou j. Des fonctions sontprvues pour le calcul de la partie relle (real(x)), de la partie imaginaire(imag(x)), du module (abs(x)), de largument (angle(x)) et du conjugucomplexe (conj(x)).

    3.4 Interpolation polynmiale

    Dans MATLAB un polynme p(x) est reprsent par la liste de ses coefficients danslordre des puissances dcroissantes.

    Exemple : 27x72x6x)x(p 23 = est reprsent par :

    p=[1 6 72 27]

    Pour valuer le polynme p(x) en x = x0, on effectue :

    polyval(p,x0)

    Exemple : polyval(p,-1.7) , on obtient : ans = 73.1470

    Pour obtenir le graphe de p(x) sur lintervalle [-2,3] on effectue :

    x=-2:0.1:3;y=polyval(p,x)plot(x,y);

    -2 -1.5 -1 -0.5 0 0.5 1 1.5 2 2.5 3-300

    -250

    -200

    -150

    -100

    -50

    0

    50

    100

    x

    y

    Interpolation polynomiale

  • Introduction MATLAB Auteur : Serge Bedwani

    Page 20

    3.5 Interpolation linaires et non linaires

    La commande interp1(x,y,z) retourne un vecteur de mmes dimensions que zdont les valeurs correspondent aux images des lments de z dtermins parinterpolation sur x et y.

    f = interp1(x,y,z,type)

    La chane type spcifie un type dinterpolation parmi les suivants :

    linear : interpolation linairespline : interpolation par splines cubiquescubic : interpolation cubique

    Si lon ne spcifie pas le type, linterpolation linaire est prise par dfaut.

    Exemple : visualisation des diffrents types dinterpolations sur les valeurs discrtesde la fonction cosinus.

    % Code commun aux trois interpolationsx=0:10;y=cos(x); %points interpolerz=0:0.25:10; %le pas du vecteur z infrieur celui de x

    %Interpolation linairefigure(1)f=interp1(x,y,z);plot(x,y,o,z,f)

    0 1 2 3 4 5 6 7 8 9 10-1

    -0.8

    -0.6

    -0.4

    -0.2

    0

    0.2

    0.4

    0.6

    0.8

    1interpolation linaire

  • Introduction MATLAB Auteur : Serge Bedwani

    Page 21

    %Interpolation par%splines cubiquesfigure(2)f=interp1(x,y,z,spline);plot(x,y,o,z,f)

    Linterpolation par splines cubiques peut tre aussi obtenue par invocation de lacommande spline(x,y,z).

    %Interpolation par cubiquesfigure(3)f=interp1(x,y,z,cubic);plot(x,y,o,z,f)

    0 1 2 3 4 5 6 7 8 9 10-1.5

    -1

    -0.5

    0

    0.5

    1interpolation par splines cubiques

    0 1 2 3 4 5 6 7 8 9 10-1

    -0.8

    -0.6

    -0.4

    -0.2

    0

    0.2

    0.4

    0.6

    0.8

    1interpolation par cubiques

  • Introduction MATLAB Auteur : Serge Bedwani

    Page 22

    3.6 Interpolation au sens des moindres carrs

    La commande p=polyfit(x,y,n) retourne le polynme p de degr n permettantdapprocher la courbe y=f(x) au sens des moindres carrs.

    Afin den dduire lerreur entre la courbe expriementale et le modle obtenu, ondispose de la fonction polyval(p,x) qui retourne la valeur du polynme p pourtoutes les composantes du vecteur ou de la matrice x.

    Pour expliquer lapplication de ces fonctions, nous allons simuler une courbeexpriementale par une sigmode laquelle nous superposons un bruit gaussien.

    %intervalle de dfinition et calcul de la sigmodex=-5:0.1:5;%fonction sigmode bruitey=1./(1+exp(-x))+0.05*randn(1,length(x));%trac de la sigmode bruiteplot(x,y)title(fonction sigmode bruite)%polynme dordre 1 dinterpolationp=polyfit(x,y,1);%valeurs du polynme dinterpolationpolyn=polyval(p,x);%trac du polynme dinterpolationhold onplot(x,polyn,-.)%calcul de lerreur dinterpolationerr=y-polyn;%trac de la courbe de lerreurplot(x,err,:)gridhold off%affichage du polynme dinterpolationdisp(polynme dinterpolation)pvar_err=num2str(std(err)^2);disp([variance de lerreur dinterpolation : ,var_err])

    On obtient les rsultats suivants :

    polynme d'interpolation

    p = 0.12926261594795 0.50178471754000

    variance de l'erreur d'interpolation : 0.010239

  • Introduction MATLAB Auteur : Serge Bedwani

    Page 23

    -5 -4 -3 -2 -1 0 1 2 3 4 5-0.4

    -0.2

    0

    0.2

    0.4

    0.6

    0.8

    1

    1.2fonction sigmode bruite

    mesures

    erreur

    modle

    La fonction errorbar permet de tracer simultanment, la courbe que lon veutestimer par un polynme et lerreur destimation.

    figure(2)err=y-polyn;errorbar(x,y,err)title(sigmode, polynme et erreur dinterpolation)grid

    -6 -4 -2 0 2 4 6-0.2

    0

    0.2

    0.4

    0.6

    0.8

    1

    1.2sigmode, polynme et erreur d'interpolation

  • Introduction MATLAB Auteur : Serge Bedwani

    Page 24

    3.7 Fonctions MATLAB pour les quations et systmes diffrentiels

    MATLAB dispose des fonctions ode23 et ode45 pour la rsolution dquations etde systmes dquations diffrentielles utilisant la mthode de Runge-Kutta.

    La syntaxe des fonctions ode23 et ode45 est la suivante :

    [x,y] = ode23(f, x0, xfinal, y0, tol, trace)

    [x,y] = ode45(f, x0, xfinal, y0, tol, trace)

    f : chane de caractres reprsentant le nom dun fichier M dans lequel est dfinie lquation diffrentielle

    x0, xfinal : valeurs initiale et finale de la variable xy0 : vecteur colonne de valeurs initiales de la fonctol : prcision dsire(facultative), la valeur par d

    ode23 et 10-6 pour ode45trace : affichage des rsultats intermdiaires (1 : oui,

    paramtre est facultatif, sa valeur par dfaut e

    Les fonctions ode23 et ode45 utilisent la mthode de Runge-Kuun calcul de pas automatique.

    Le systme dquations diffrentielles doit tre reprsent dans un sous la forme dun vecteur colonne o chaque ligne reprsente unesystme.

    Exemple : Pendule lastique amortiConsidrons un corps de masse m, accroch un ressort de constanrsistance de lair cre une force de frottement proportionnelle lacoefficient f.

    La position x de la masse est repre par rapport lorigine 0correspondant la longueur naturelle du ressort. Par applicationde la loi fondamentale de la dynamique, on obtient lquationdiffrentielle qui rgit lvolution de la position x.

    gxm

    kx

    m

    fx +=

    Cette quation du second ordre peut tre transformeen un systme de 2 quations du premier ordre.

    =

    +=

    uv

    gvm

    ku

    m

    fu

    '

    'tion y=f(x)faut est 10-3 pour

    0 : non), cest 0.

    tta-Fehlberg avec

    fichier fonction quation du

    te de raideur k. La vitesse avec un

    k0

    x

  • Introduction MATLAB Auteur : Serge Bedwani

    Page 25

    Pour rsoudre ce systme diffrentiel, on utilisera la fonction ode45 prvue parMATLAB. Cette fonction utilise la mthode de Runge-Kutta avec un calcul de pasautomatique.Pour utiliser la fonction ode45, nous avons besoin de deux fichiers : un fichierfonction dans lequel on dcrit le systme diffrentiel et un fichier script qui fait appel la fonction ode45 et qui ralise le trac des courbes.

    fichier rsprime.mfunction sd=rsprime(t,s)global k m f g%systme diffrentielsd=[(-k*s(2)-f*s(1))/m+g;s(1)];

    fichier rs_nl.mglobal k m f gk=10; m=0.2; f=0.1; g=9.81;%conditions initialest0=0; tf=20; x0=0.1; v0=0;[t,x]=ode45(rsprime,t0,tf,[x0,v0]);%trac de la vitessesubplot(211)plot(t,x(:,1))xlabel(temps)ylabel(vitesse)grid%trac de la positionsubplot(212)plot(t,x(:,2))xlabel(temps)ylabel(position)grid

    0 2 4 6 8 10 12 14 16 18 20-2

    -1

    0

    1

    2

    temps

    vite

    sse

    0 2 4 6 8 10 12 14 16 18 200

    0.1

    0.2

    0.3

    0.4

    temps

    posi

    tion

  • Introduction MATLAB Auteur : Serge Bedwani

    Page 26

    4.0 La programmation avec MATLAB

    4.1 Oprateurs et caractres spciaux

    Le tableau suivant rsume les oprateurs que lon peut rencontrer dans MATLABainsi quun certain nombre de caractres spciaux.

    Symbole fonction+ Addition de rels et de matrices- Soustraction de rels et de matrices* Produit de rels et de matrices.* Produit lment par lment de matrices^ lvation une puissance de rels et de matrices.^ Puissance lment par lment de matrices\ Division gauche de rels et de matrices/ Division droite de rels et de matrices (division classique)./ Division lment par lment de matrices== galit~= Diffrent< Strictement infrieur Strictement suprieur>= Suprieur ou gal& ET logique (AND)| OU logique (OR)~ NON logique (NOT)xor OU exclusif (XOR)% Commentaires= Affectation Transpose de matrices et dlimiteur de chanes de caractres! Commandes systme (chappement), Sparation dinstructions ou de rels dans une matrice; Sparation dinstructions (pas daffichage de valeurs intermdiaires)

    ou de lignes dune matrice Symbole de continuation (pour terminer une instruction ou une

    expression la ligne suivante). Point dcimal.. Rpertoire parent du rpertoire en cours[ ] Dfinition de vecteurs ou de matrices( ) Utilisation dans des expressions ou des fonctions

  • Introduction MATLAB Auteur : Serge Bedwani

    Page 27

    4.2 Instructions et commandes structures

    MATLAB dispose des instructions structures suivantes : for, while et if.

    4.2.1 Instruction for

    syntaxe

    for variable = expressioninstructions

    end

    Exemple :

    n=7;x=[];for i=1:n,

    x=[x, sqrt(i)];end

    Les boucles for peuvent tre imbriques entre elles et avec les autres instructions decontrle.

    4.2.2 Instruction while

    syntaxe

    while expressioninstructions

    end

    Exemple :

    n=0;while (x^n

  • Introduction MATLAB Auteur : Serge Bedwani

    Page 28

    4.2.3 Instruction if

    syntaxe

    if expressioninstructions I1

    elseinstructions I2

    end

    En cas dinstructions conditionnelles imbriques, un else est toujours associ au ifle plus proche. Dans le cas de slections multiples, on utilisera linstruction elseif.

    Exemple :

    if moy >= 5.5mention = trs bien;

    elseif moy >= 5mention = bien;

    elseif moy >= 4.5mention = Assez bien;

    elseif moy >= 4mention = Passable;

    elsemention = Ajourn(e);

    end

    4.2.4 Instructions de rupture de squence

    break : Termine lexcution dune boucle. Si plusieurs boucles sont imbriques, break permet de sortir de la boucle la plus proche.

    return : Cette instruction permet de revenir au fichier M ayant appel le programme courant ou la ligne de commandes MATLAB.

    error(message) : Affiche le message spcifi, met un bip et interrompt lexcution du programme.

  • Introduction MATLAB Auteur : Serge Bedwani

    Page 29

    4.3 Ralisation dinterfaces graphiques

    Visualisons directement un exemple, pour expliquer la cration de menus, dans unefentre MATLAB.

    % Cration de la fentre graphiquefigure(gcf) ;% Dclaration des proprits de la fentreset(gcf,'Resize','Off','Name','Exemple',... 'Menubar','None','NumberTitle','off',... 'Position',[120 120 600 420]);% Dfinitions des menusfichier=uimenu('Label','Fichier');edition=uimenu('Label','Edition');

    % Dfinitions des sous-menusuimenu(fichier,... 'label','Imprimer',... 'callback','print -f');uimenu(fichier,... 'label','Configuration de limpression',... 'callback','print -dsetup');uimenu(fichier,... 'Label','Quitter',... 'separator','on',... 'Callback','close(gcf)');

    uimenu(edition,... 'label','Copier au format Metafile',... 'callback','print -dmeta');uimenu(edition,... 'label','Copier au format Bitmap',... 'callback','print -dbitmap');

    Le rsultat obtenu est le suivant :

  • Introduction MATLAB Auteur : Serge Bedwani

    Page 30

    Il existe une autre faon de raliser une interface graphique depuis la version 5 deMATLAB. Cette outil est destin ceux qui aiment travailler de faon visuelle(mme principe que Delphi, Visual C++, Visual Basic).Linvocation de lditeur se fera laide de la commande guide. Une fentreprincipale contenant les outils de cration (panneau de contrle) et une fentre viergepour la cration de linterface sont alors prsentes lcran.

    guide

    Pour plus dexplication, lutilisateur peut consulter le livre intitul Apprendre etMatriser MATLAB chapitre 5 La programmation oriente Objets, page 416.

    Et pour plus de dtails sur la ralisation dinterfaces graphiques, au chapitre 10,page 301.

  • Introduction MATLAB Auteur : Serge Bedwani

    Page 31

    5.0 Complment : Analyse de systmes dynamiques linaires laide dela bote outils control systems

    5.1 Introduction de fonctions de transfert (transmittances)

    5.1.1 Introduction sous forme polynmiale

    Lintroduction de fonctions de transfert seffectue en deux temps, les numrateurs etdnominateurs doivent tre donns sparment. Le principe est simple : lesnumrateurs et dnominateurs apparaissent sous forme de vecteurs-ligne, lescomposantes desquels tant les coefficients des puissances dcroissantes de s(systmes analogiques) ou de z (systmes numriques).

    Soit par exemple la fonction de transfert

    2.0s4s112s150)s(U

    )s(Y)s(G 2++

    +==

    Son introduction dans MATLAB se fait par les commandes :

    numG=50*[12,1];denG=[0.2,4,1];

    Le coefficient de s0 (ou z0 pour les systmes numriques), quil soit nul ou non, doittoujours tre donn. Ainsi, la fonction de transfert de lintgrateur :

    s

    4567.3)s(G =

    est introduite sous la forme :

    numG=3.4567; denG=[1,0];

    Les noms donns aux numrateurs et dnominateurs sont libres. On aura toutefoisintrt tre organis et rigoureux dans les notations employes.

    5.1.2 Introduction sous forme de zros, ples et gain (forme dEvans)

    Il est galement possible dintroduire une fonction de transfert par le biais de seszros, ples et de son facteur dEvans k. Les zros et ples doivent apparatre sousforme de vecteurs-colonne.

  • Introduction MATLAB Auteur : Serge Bedwani

    Page 32

    Soit par exemple la fonction de transfert :

    ( )( )( ) ( )( ) ( )( ) ( )( )( )( ) ( )( ) ( )( )j35sj35s11s j73sj73ss32.535s11s 73ss32.5)s(G 22

    22

    +

    +=

    +++

    ++=

    La suite de commandes ncessaires est simplement :

    zG=[-3+j*7,-3-j*7];pG=[0,-11,-5+j*3,-5-j*3];kG=5.32;

    Il va sans dire que lon privilgiera cette forme lorsque le numrateur et dnominateurde la fonction de transfert du systme G(s) ou G(z) ne sont pas directementdisponibles sous forme de polynmes.

    5.2 Passage dun modle lautre

    Les ples et zros des fonctions de transfert sont obtenus laide de la fonctiontf2zp(transfert function to zero pole) :

    [zG,pG,kG]=tf2zp(numG,denG);

    MATLAB place alors les zros et les ples dans les vecteurs-colonne zG et pG,respectivement, et le facteur dEvans dans la variable kG. Les noms zG, pG et kGsont arbitraires.

    Remarque : un polynme est introduit sous la forme dun vecteur-ligne v dont lescomposantes reprsentent les coefficients des puissances dcroissantes; ses racinessont obtenues par la fonction roots(v)

    Toute une catgorie de routines permettent de passer dun modle lautre :

    Forme polynmiale forme en zros, ples et gain

    [zG,pG,kG]=tf2zp(numG,denG);

    Forme polynmiale modle dtat

    [AG,BG,CG,DG]=tf2ss(numG,denG);

    Forme en zros, ples et gain forme polynmiale

    [numG,denG]=zp2tf(zG,pG,kG);

  • Introduction MATLAB Auteur : Serge Bedwani

    Page 33

    Forme en zros, ple et gain modle dtat

    [AG,BG,CG,DG]=zp2ss(zG,pG,kG);

    Modle dtat forme polynmiale

    [numG,denG]=ss2tf(AG,BG,CG,DG);

    Modle dtat forme en zros, ples et gain

    [zG,pG,kG]=ss2zp(AG,BG,CG,DG);

    Modle dtat autre modle dtat, avec matrice detransformation T

    [AG2,BG2,CG2,DG2]=ss2ss(AG,BG,CG,DG,T);

    5.3 Construction de schmas fonctionnels

    5.3.1 Fonctions series, cloop

    Prenons par exemple le schma fonctionnel universel, dont on souhaite obtenir lesfonctions de transfert en boucle ouverte Go(s) et en boucle ferme Gw(s). Pour cefaire, il faut procder par tapes, comme indiqu par la figure ci-dessous :

    w(t) e(t) u(t)G (s)c G (s)a

    y(t)-

    w(t) e(t)G (s)o

    y(t)-

    G (s)ww(t) y(t)

  • Introduction MATLAB Auteur : Serge Bedwani

    Page 34

    1) Calcul de Ga(s) par la mise en srie de Ga1 et Ga2.

    On fait usage de la fonction series :

    [numGa,denGa]=series(numGa1,denGa1,numGa2,denGa2);

    2) Calcul de Go(s) par la mise en srie de Gc et Ga

    On procde de mme quen 1) :

    [numGo,denGo]=series(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]=cloop(numGo,denGo);

    La rponse indicielle en boucle ferme peut alors tre calcule et trace par :

    step(numGw,denGw);

  • Introduction MATLAB Auteur : Serge Bedwani

    Page 35

    de mme que la rponse harmonique en boucle ouverte par :

    bode(numGo,denGo);

    5.3.2 Fonction feedback

    La fonction feedback est utile pour calculer la fonction de transfert quivalente dusystmes ayant pour schma fonctionnel :

    [numGv,denGv]=feedback(numGa,denGa,numGc,denGc,signe);

    Si le paramtre signe nest pas spcifi ou vaut 1, la transmittance Gc(s) est encontre-raction, alors quelle est ractionne pour une valeur de signe gale 1.

    w(t)=0

    v(t)

    G (s)c

    G (s)a2y(t)

    -

    G (s)a1 -

  • Introduction MATLAB Auteur : Serge Bedwani

    Page 36

    5.4 Calcul et trac de rponses de systmes dynamiques linaires

    5.4.1 Rponse temporelle

    Les fonctions impulse, step, lsim, et pour les systmes numriques,dimpulse, dstep, dlsim sont disponibles. Leur signification est la suivante :

    SYSTEMES ANALOGIQUES :

    Rponse impulsionnelle :impulse(numG,denG,t);

    Rponse indicielle :step(numG,denG,t);

    Rponse une entre u quelconque dfinie par lutilisateur :lsim(numG,denG,u,t);

    Rponse du systme lorsque ses conditions initiales sont x0 :initial(A,B,C,D,x0,t);

    SYSTEMES NUMERIQUES :

    Rponse impulsionnelle :dimpulse(numH,denH,n);

    Rponse indicielle :dstep(numH,denH,n);

    Rponse une entre u quelconque dfinie par lutilisateur :dlsim(numH,denH,u);

    Rponse du systme lorsque ses conditions initiales sont x0 :dinitial(A,B,C,D,x0,n);

  • Introduction MATLAB Auteur : Serge Bedwani

    Page 37

    Les paramtres t, n et w sont optionnels et MATLAB les dtermine lui-mme pardfaut. Si lon souhaite les fixer, on peut par exemple le faire selon les indicationssuivantes :

    t : (facultatif) vecteur-ligne de temps, spcifiant les instants o la rponse doit

    tre calcule (ce paramtre est obligatoire si lon utilise lsim)Exemple :

    Cre un vecteur temps variant entre 0[s] et 0.2[s] par pas de 0.01[s].t=[0:0.01:0.2];

    out=linspace(0,0.2,201);

    n : (facultatif) nombre dchantillons dsirsExemple :

    Seuls les 10 premiers chantillons de la rponse seront affichs.n=10;

    w : (facultatif) vecteur-ligne de pulsation, spcifiant les pulsations o la rponse doit tre calcule.

    Exemple :Cre un vecteur pulsation de 100 points espacs logarithmiquement etvariant entre 102[rad/s] et 105[rad/s].

    w=logspace(2,5,100);

    u : vecteur-colonne de lentre simule du systme (ce paramtre est obligatoire si lon utilise lsim ou dlsim)

    Exemple :Cre un vecteur u reprsentant une entre sinusodale damplitude 1.5et de frquence 10[Hz]. u est calcul pour chaque instant dfini dans levecteur t.

    u=1.5*sin(2*pi*10*t);

    Lors du calcul de la rponse harmonique de systmes numriques, il convient despcifier la priode dchantillonnage h.

  • Introduction MATLAB Auteur : Serge Bedwani

    Page 38

    Il est souvent utile deffectuer ces calculs de rponse sans tracer celle-ciimmdiatement. Dans ce cas, on procde comme ci-dessus en spcifiant toutefois desarguments de sortie dans lesquels MATLAB sauvera les rsultats de ses calculs :

    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 rponse cherche et t un vecteur-ligne contenantles instants auxquels elle a t calcule. x est une matrice contenant lvolution duvecteur dtat systme dynamique.

    5.4.2 Rponse frquentielle

    Les fonctions bode, nyquist, nychols, et pour les systmes numriques,dbode, dnyquist, dnychols sont disponibles. Leur signification est lasuivante :

    SYSTEMES ANALOGIQUES SYSTEMES NUMERIQUESbode(numG,denG,w) Dbode(numH,denH,h,w)

    Si les rsultats des calculs doivent tre sauvegards en vue dun traitement ultrieur,on indique galement des arguments de sortie :

    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 wun vecteur-ligne contenant les pulsations correspondantes.

    5.5 Analyse des proprits des systmes

    Gain statique dun systme analogique :

    dcgain(num,den);

    Gain statique dun systme numrique :

    ddcgain(num,den);

    Taux damortissement , pulsation propre non-amortie n et ples dun systmeanalogique ayant den pour dnominateur :

    damp(den);

  • Introduction MATLAB Auteur : Serge Bedwani

    Page 39

    Taux damortissement , pulsation propre non-amortie n et ples dun systmediscret ayant den pour dnominateur :

    ddamp(den);

    5.6 Calcul ,affichage des marges de gain et de phase

    Marges de phase et de gain dun systme analogique.Si les arguments de sortie ne sont pas spcifis, trace le lieu de Bode et montregraphiquement la valeur des marges.

    [Am,phi_m]=margin(numGo,denGo);

    5.7 Trac du lieu dEvans

    Trace le lieu dEvans de la fonction de transfert. k est une option; cest un vecteur-ligne contenant les diffrentes valeurs du facteur dEvans pour lesquelles le lieu doittre trac.

    rlocus(num,den,k)

    Affiche les courbes qui-amortissement des plans de s et de z respectivement. Aexcuter immdiatement aprs rlocus.

    sgridzgrid

    Configuration ples-zros de la fonction de transfert.

    pzmap(num,den)

    Trac interactif du lieu dEvans. A excuter directement aprs rlocus et sgrid; unecroix est alors affiche, que lon peut dplacer avec la souris sur un point particulierdu lieu. En cliquant, on obtient alors dans k le facteur dEvans correspondant et dansp lexpression du ple.

    [k,p]=rlocfind(num,den)

  • Introduction MATLAB Auteur : Serge Bedwani

    Page 40

    5.8 Divers

    Force la compensation ple-zro.

    minreal(num,den)

    Affiche les fonctions de transfert comme fractions rationnelles en s ou en z.

    printsys(num,den,s)printsys(num,den,z)

    Runis le numrateur et le dnominateur en une seul variable compose dunematrice.

    G0=tf(num,den)

    Linverse de la fonction prcdente, partant dune seul variable compose dunvecteur en un numrateur et un dnominateur .

    [num,den]=tfdata(G0,v)

  • Introduction MATLAB Auteur : Serge Bedwani

    Page 41

    6.0 Applications (exemples)6.1 Ralisation dune fonction qui affiche le lieu de Bode

    Pour tracer un lieu de Bode, il faut avoir au pralable la toolbox system control.Mais nous allons raliser une fonction traant le lieu de Bode, sans toolbox!!!

    De plus cette fonction est capable de dterminer la marge de phase m et de gain Amainsi que les pulsations co et correpondantes.

    Tout dabord, il sagit de crer un fichier fonction, avec des paramtres dentres, telsque le numrateur et le dnominateur, donns dans le domaine de s, de la fonction detransfert que lon dsire tracer.

    function[]=bode_sbe(num,den,w_min,w_max,titre,nb_pts)

    Nous traiterons ensuite les erreurs et les valeurs par dfaut avec la commandenargin.

    Il ne faut pas oublier que les variables dfinies dans une fonction, ne sont pas vues delextrieur! Do lemploi de global.

    La suite consiste crer la fentre graphique avec ses menus, tel que dcrit auchapitre 4.3.

    Algorithme du lieu de Bode :

    Cration dun espacement logarithmique avec logspace.

    logspace(d1,d2,N)

    qui gnre N valeurs espaces dun pas logarithmique entre 10d1 et 10d2 , si N estomis sa valeur par dfaut est 50.

    Cration de la rponse frquentielle complexe dans un vecteur.

    h=freqs(num,den,w)

    Lamplitude du diagramme de Bode est dtermin par lextraction du module dunombre complexe.

    mag=abs(h)

    Pour la phase, cela devient un petit peu plus compliqu, vu que larctangente, ne traitepas des angles au-del de 180 . Nous allons donc fabriquer un algorithme capablede grer la phase 360 .

  • Introduction MATLAB Auteur : Serge Bedwani

    Page 42

    Il ne faut pas oublier de transformer les radians en degr la fin, puisque MATLABtravail en radian.La phase suivante est le trac de lamplitude et de la phase.Pour cela nous utiliserons la commande subplot, qui divise la fentre graphique enplusieurs zones.

    subplot(m,n,p)

    avec m, qui dsigne le nombre de lignes et n le nombre de colonnes et trace legraphique qui suit cette instruction dans la zone de numro p (la numrotation se faitde gauche droite et ligne par ligne).

    Pour laffichage de lamplitude, le graphique aura ses chelles en logarithmique.

    loglog(f,mag)

    Pour laffichage de la phase, lchelle de la pulsation sera logarithmique, mais pascelle de la phase.

    semilogx(f,phase)

    Et pour finir, il est intressant de voir, quil est possible de modifier les propritsdun objet graphique. Dans notre cas, nous allons modifier la couleur des courbes enrouges.

    line(f,mag,color,r)line(f,phase,color,r)

    Exemple de trac du lieu de Bode :

    10-2 100 102 104 106-150

    -100

    -50

    0

    50LIEU DE BODE

    gain

    [dB]

    10-2 100 102 104 106-100

    -50

    0

    50

    pulsation [rad/s]

    phas

    e [de

    gr]

  • Introduction MATLAB Auteur : Serge Bedwani

    Page 43

    Fichier Source :(bode_sbe.m)%/*%****************************************************************************% bode_sbe.M%****************************************************************************%% Lieu de Bode sans TOOLBOX !!!!!!%%****************************************************************************%****************************************************************************%Version Date Auteur Motif% 0 28/04/00 SBE Creation%%****************************************************************************%*/% Trace le lieu de Bode% ATTENTION, la phase de la fonction de transfert n'est valable% que dans l'intervalle de +-360%% function [] = bode_sbe(num,den,w_min,w_max,titre,nb_pts)%% num : numrateur de la fonction G(s)% den : dnominateur de la fonction G(s)% w_min : borne infrieur du diagramme de bode 10^w_min% w_max : borne suprieur du diagramme de bode 10^w_max% titre : titre du diagramme, donner entre guillemets simples% nb_pts : nombre de points calculer

    function[]=bode_sbe(num,den,w_min,w_max,titre,nb_pts)

    nargs = 6;

    if nargin < nargs, nb_pts=1000; end if nargin < nargs-1, titre='LIEU DE BODE'; end if nargin < nargs-2, w_max=6; end if nargin < nargs-3, w_min=-1; end if nargin < nargs-4, error('Il manque le numrateur et le dnominateur'); end

    % Variables externes global hZoomOn hZoomOff hZoomreset % Variables internes quadrant=1; previous_quadrant=1; quadrant_III_to_II=0; quadrant_II_to_III=0;

    close all; figure(gcf) set(gcf,'Resize','Off','Name','Lieu de Bode',... 'Menubar','None','NumberTitle','off',... 'Position',[120 120 600 420]); fichier=uimenu('Label','Fichier'); sauver=uimenu(fichier,... 'label','Sauvegarde'); uimenu(sauver,... 'label','Sauvegarder au format BMP',... 'callback','print -dbitmap bode'); uimenu(sauver,... 'label','Sauvegarder au format Metafile',... 'callback','print -dmeta bode'); uimenu(sauver,... 'label','Sauvegarder au format postcript',... 'callback','print -deps bode');

  • Introduction MATLAB Auteur : Serge Bedwani

    Page 44

    impression=uimenu(fichier,... 'label','Impression'); uimenu(impression,... 'label','Imprimer Lieu de Bode',... 'callback','print -f'); uimenu(impression,... 'label','Configuration de l''impression',... 'callback','print -dsetup'); uimenu(fichier,... 'Label','Quitter',... 'separator','on',... 'Callback','close(gcf)'); edition=uimenu('Label','Edition'); uimenu(edition,... 'label','Copier au format Metafile',... 'callback','print -dmeta'); uimenu(edition,... 'label','Copier au format Bitmap',... 'callback','print -dbitmap'); hZoom=uimenu('Label','Zoom'); hZoomOn=uimenu(hZoom,... 'label','Enclenchement du zoom',... 'callback',['type_zoom=1;','gest_opt']); hZoomOff=uimenu(hZoom,... 'label','Dclenchement du zoom',... 'callback',['type_zoom=2;','gest_opt']); hZoomreset=uimenu(hZoom,... 'label','Zoom Reset',... 'separator','on',... 'callback',['type_zoom=3;','gest_opt']); set(hZoomOff,'checked','on'); uimenu('Label','Quitter','Callback','close(gcf)');w=logspace(w_min,w_max,nb_pts);h=freqs(num,den,w);f=w/(2*pi);mag=abs(h);i=1;while i~= length(h)+1 reel=real(h(i)); imaginaire=imag(h(i)); if (imaginaire>=0) if ((reel>=0)&(quadrant_II_to_III==0)) quadrant=1; phase(i)=atan2(imaginaire,reel)*(180/pi); else if (quadrant_II_to_III==0) quadrant=2; if (previous_quadrant==3) quadrant_II_to_III=1; phase(i)=(atan2(imaginaire,reel)*(180/pi))-360; else phase(i)=atan2(imaginaire,reel)*(180/pi); end else if (reel>=0) quadrant=1; phase(i)=(atan2(imaginaire,reel)*(180/pi))-360; else quadrant=2; phase(i)=(atan2(imaginaire,reel)*(180/pi))-360; end end end else if ((reel>=0)&(quadrant_III_to_II==0)) quadrant=4; phase(i)=atan2(imaginaire,reel)*(180/pi); else if (quadrant_III_to_II==0) quadrant=3; if (previous_quadrant==2)

  • Introduction MATLAB Auteur : Serge Bedwani

    Page 45

    quadrant_III_to_II=1; phase(i)=(atan2(imaginaire,reel)*(180/pi))+360; else phase(i)=atan2(imaginaire,reel)*(180/pi); end else if (reel>=0) quadrant=4; phase(i)=(atan2(imaginaire,reel)*(180/pi))+360; else quadrant=3; phase(i)=(atan2(imaginaire,reel)*(180/pi))+360; end end end end if (abs(phase(i))>=359) warning('ATTENTION, la phase de la fonction de transfert dpasse 360'); end previous_quadrant=quadrant; i=i+1;endsubplot(2,1,1),loglog(f,mag);line(f,mag,'color','r');title(titre)ylabel('gain [dB]')grid onsubplot(2,1,2),semilogx(f,phase);line(f,phase,'color','r');xlabel('pulsation [rad/s]')ylabel('phase [degr]')grid onclc;% Recherche de la marge de phase et de gaink=2;while k~=length(mag) if ((20*log10(mag(k))0))|(20*log10(mag(k))==0) position_zero=k; break else k=k+1; endendif exist('position_zero') pulsation_wco=f(position_zero); marge=180-abs(phase(position_zero)); marge_phase=phase(position_zero); magnitude=mag(position_zero); if marge

  • Introduction MATLAB Auteur : Serge Bedwani

    Page 46

    if exist('position_phase') pulsation_wpi=f(position_phase); am=mag(position_phase); if am

  • Introduction MATLAB Auteur : Serge Bedwani

    Page 47

    6.2 Rponse en frquence dun filtre RLC

    Nous allons maintenant raliser un filtre RLC, et tracer son lieu de Bode avec lafonction que nous venons de crer dans lexemple prcdent.Schma lectrique :

    CL

    R

    Equation correspondante :

    RsC1

    sL

    R)s(V)s(V inout++

    =

    Ce qui nous donne comme fonction de transfert :

    ( ) ( )

    ++

    +

    =

    ++==

    1LC4RCRC

    LC2s1

    LC4RCRCLC2

    s

    sRC1sRCLCs

    sRC)s(V)s(V)s(H

    22

    2in

    out

    Rappel : le numrateur et le dnominateur doivent tre dclars avec les puissancesde s dcroisssantes.Bien sr qu'il est plus appropri de donner le dnominateur sous la forme de Bode,pour la comprhension, mais cela devient plus compliqu exprimer.Si cela avait t le cas, comme le dnominateur est du second ordre, il aurait tjudicieux d'utiliser la convolution, comme suit :

    den=conv([T1 1],[T2 1])

    Fichier Source :(rlc.m)% Fichier : rlc.m% Auteur : Serge Bedwani% Date : 04.05.00% But : Rponse en frquence d'un filtre RLC

    L=5; % Self [H]C=1.25e-6; % Condensateur [F]R1=10000; % Rsistance [Ohm]R2=100; % Rsistance [Ohm]

    numG1=[C*R1 0];denG1=[L*C C*R1 1];

    numG2=[C*R2 0];denG2=[L*C C*R2 1];

  • Introduction MATLAB Auteur : Serge Bedwani

    Page 48

    % Diagramme de Bodebode_sbe(numG1,denG1,0,4,'Rponse pour R=10k'); pause;bode_sbe(numG2,denG2,0,4,'Rponse pour R=10k'); pause;% Forme de Boderacine1=sqrt((R1*C)^2-(4*L*C));numB1=[C*R1 0];denB1=conv([((2*L*C)/((R1*C)-racine1)) 1],[((2*L*C)/((R1*C)+racine1)) 1]);bode_sbe(numB1,denB1,0,4,'Rponse pour R=10k sous forme de Bode');pause;racine2=sqrt((R2*C)^2-(4*L*C));numB2=[C*R2 0];denB2=conv([((2*L*C)/((R2*C)-racine2)) 1],[((2*L*C)/((R2*C)+racine2)) 1]);bode_sbe(numB2,denB2,0,4,'Rponse pour R=0.1k sous forme de Bode');

    Diagramme de Bode obtenu avec R = 10k :

    10-1 100 101 102 103 104-40

    -30

    -20

    -10

    0Rponse pour R=10k

    gain

    [dB

    ]

    10-1 100 101 102 103 104-100

    -50

    0

    50

    100

    pulsation [rad/s]

    phas

    e [de

    gr]

    Diagramme de Bode obtenu avec R = 0.1k :

    10-1 100 101 102 103 104-80

    -60

    -40

    -20

    0Rponse pour R=0.1k

    gain

    [dB

    ]

    10-1 100 101 102 103 104-100

    -50

    0

    50

    100

    pulsation [rad/s]

    phas

    e [de

    gr]

  • Introduction MATLAB Auteur : Serge Bedwani

    Page 49

    6.3 Sous-chantillonnage d'une sinusode

    Considrons un signal sinusodal x(t) de frquence fo = 10kHz que l'on chantillonneavec une frquence fe = 8kHz.Frquence de repliement :

    kHz2kHz8kHz10ffnfff eoer ====Fichier Source :(sousech.m)% Fichier : sousech.m% Date : 9.05.00% But : Sous-chantillonnage d'une sinusode% paramtresfo=10e3; % frquence du signal sinusodalfe=8e3; % frquence d'chantillonnageTo=1/fo; % priode du signal sinusodalTe=1/fe; % priode d'chantillonnagefa=fo-fe; % frquence apparentetmax=10*To;% Calcul de x(t)t=0:tmax/200:tmax;xt=sin(2*pi*t/To);% Calcul du signal apparentxta=sin(2*pi*t*fa);% Echantillonnage de x(t)tn=0:Te:tmax;xn=sin(2*pi*tn/To);% Traage des courbesplot(t,xt,tn,xn,'o',t,xta,'-');title('Sous-chantillonnage d''une sinusode');xlabel('Temps [s]');

    Signal sinusodal de frquence fo et signal sinusodal d au sous-chantillonnage :

    0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1

    x 10-3

    -1

    -0.8

    -0.6

    -0.4

    -0.2

    0

    0.2

    0.4

    0.6

    0.8

    1Sous-chantillonnage d'une sinusode

    Temps [s]

  • Introduction MATLAB Auteur : Serge Bedwani

    Page 50

    6.4 Suite d'impulsions rectangulaires

    La suite d'impulsions rectangulaires (SIR) est un signal particulirement important carelle apparat dans de nombreuses applications telles que l'chantillonnage, lamodulation d'impulsions, etc.

    Evaluons donc la srie de Fourier complexe de la SIR x(t). Par dfinition descoefficients complexes X(jk), on a:

    +

    =

    2/T

    2/T

    )tf2jk( dte)t(xT1)jk(X o

    avec fo = 1/T

    En tenant compte de la dfinition de la SIR, il vient :

    +

    =

    2/t

    2/t

    )tf2jk( dteTA)jk(X o

    =

    +

    )

    2tf2jk()

    2tf2jk(

    o

    oo

    eef2jk

    1TA)jk(X

    Les relations d'Euler permettent de passer de la diffrence des exponentielles unsinus et d'crire ces coefficients sous une forme plus simple :

    tfk)tfksin(

    TtA)jk(X

    o

    o

    =

    Fichier Source :(sir.m)% Fichier : sir.m% Date : 9.05.00% But : Echantillonnage d'une SIR

    clear all;close all;

    % paramtresT = 1e-3; % priodedelta = T/4; % priode/4fo = 1/T; % frquence SIRfe = 20*fo; % frquence chantillonnageTe = 1/fe; % priode chantillonnageA = 4; % amplitude en Volt

    % signal temporel xt = x(t)Nmax = 500;t=-T/2:T/Nmax:T/2;lt0=round((Nmax/T)*((T-delta)/2));lt1=(Nmax/T)*delta;x0=zeros(1,lt0);x1=A*ones(1,lt1);xt=[x0,x1,x0];

  • Introduction MATLAB Auteur : Serge Bedwani

    Page 51

    % echantillonnage xtn = x(nTe)tn=-T/2:Te:+T/2;Nmax=ceil(T/Te); % arrondi >= (T/Te)lt0=round((Nmax/T)*((T-delta)/2));lt1=(Nmax/T)*delta;x0=zeros(1,lt0);x1=A*ones(1,lt1);xtn=[x0,x1,x0];

    % traage des signaux temporelsfigure(gcf);plot(t,xt,tn,xtn,'o');title('Signaux xa(t) et xe(t)');xlabel('temps [s]');

    % spectre originalf=-fe:fo:fe;xf=(A*(delta/T))*sinc(f*delta);

    % spectre en +fe et -fexfp1=sinc((f-fe)*delta);xfm1=sinc((f+fe)*delta);

    % traage des spectresfigure(gcf+1);subplot(3,1,1);plot(f,xf);stem(f,xf);title('Spectre original');

    subplot(3,1,2);stem(f,xfp1);title('Spectre d +fe');

    subplot(3,1,3);stem(f,xfm1);title('Spectre d -fe');xlabel('frquence [Hz]');

    % effet du repliement spectralfigure(gcf+1);subplot(1,1,1);plot(f,xf,'x');hold on;stem(f,xf+xfp1+xfm1);title('Effet du repliement spectral: x = Xa(jf), o = Xe(jf)');xlabel('frquence [Hz]');hold off;

    Prenons un exemple :

    SIR d'amplitude 4V de priode T = 1msec et de largeur t = T/4 que l'on chantillonneavec Te = T/20.

  • Introduction MATLAB Auteur : Serge Bedwani

    Page 52

    Signaux temporels, x(t) et x(nTe) :

    -5 -4 -3 -2 -1 0 1 2 3 4 5

    x 10-4

    0

    0.5

    1

    1.5

    2

    2.5

    3

    3.5

    4Signaux xa(t) et xe(t)

    temps [s]

    T=1msec

    delta=T/4

    Spectres :

    -2 -1.5 -1 -0.5 0 0.5 1 1.5 2

    x 104

    -0.5

    0

    0.5

    1Spectre original

    -2 -1.5 -1 -0.5 0 0.5 1 1.5 2

    x 104

    -0.5

    0

    0.5

    1Spectre d +fe

    -2 -1.5 -1 -0.5 0 0.5 1 1.5 2

    x 104

    -0.5

    0

    0.5

    1Spectre d -fe

    frequence [Hz]

  • Introduction MATLAB Auteur : Serge Bedwani

    Page 53

    Effet du repliement spectral :

    -2 -1.5 -1 -0.5 0 0.5 1 1.5 2

    x 104

    -0.4

    -0.2

    0

    0.2

    0.4

    0.6

    0.8

    1Effet du repliement spectral: x = Xa(jf), o = Xe(jf)

    frequence [Hz]

  • Introduction MATLAB Auteur : Serge Bedwani

    Page 54

    7.0 Rfrences bibliographiques

    Introduction au logiciel MATLABCours & exercicesAuteur : Michel Etique, EIVD

    Laboratoire danalyse numriqueAuteur : Louis Chassot, EIVD

    Apprendre et Matriser MATLABVersions 4&5 et SIMULINKAuteurs : M.Mokhtari & A.MesbahEdition SpringerISBN 3-540-62773-1

    Applications de MATLAB 5 et SIMULINK 2Auteurs : M.Mokhtari & M.MarieEdition SpringerISBN 2-287-59651-8

    Electronics and circuit analysis using MATLABJohn O. AttiaEditeur : CRC BIRKHAUESERISBN 0-8493-1176-4

    8.0 Services Internet

    Site The MathWorks : http://www.mathworks.com

    Site SCIENTIFIC SOFTWARE : http://www.ssg.fr

    Fournisseur Suisse :Scientific Computers SC AGSchrmattstrasse 6+83073 GmligenHomepage : www.scientific.ch

    Introduction MATLABTable des matires1.0 Introduction2.0 Notions de base de MATLAB2.1 Aide dans MATLAB2.2 Fichiers de commande2.3 Fichiers de donnes2.4 Fonctions2.5 Reprsentation graphique 2D (coordonnes cartsiennes)2.5.1 Courbes de fonctions2.5.2 Courbes paramtriques2.5.3 Nuage de points

    2.6 Reprsentation graphique 2D (coordonnes polaires)2.7 Reprsentation graphique 2D (diagrammes)2.8 Reprsentation des Axes logarithmiques2.9 Reprsentation graphique 3D2.9.1 Courbes 3D2.9.2 Surfaces

    3.0 Les bases de MATLAB3.1 Vecteurs3.2 Matrices3.2.1 Construction des matrices particulires

    3.3 Nombres complexes3.4 Interpolation polynmiale3.5 Interpolation linaires et non linaires3.6 Interpolation au sens des moindres carrs3.7 Fonctions MATLAB pour les quations et systmes diffrentiels

    4.0 La programmation avec MATLAB4.1 Oprateurs et caractres spciaux4.2 Instructions et commandes structures4.2.1 Instruction for4.2.2 Instruction while4.2.3 Instruction if4.2.4 Instruction de rupture de squence

    4.3 Ralisation d'interfaces graphiques

    5.0 Complment : Analyse de systmes dynamiques linaires l'aide de la bote outils "control systems"5.1 Introduction de fonctions de transfert (transmittance)5.1.1 Introduction sous forme polynmiale5.1.2 Introduction sous forme de zros, ples et gain ("Evans")

    5.2 Passage d'un modle l'autre5.3 Construction de schmas fonctionnels5.3.1 Fonctions series, cloop5.3.2 Fonction feedback

    5.4 Calcul et trac de rponse de systmes dynamiques linaires5.4.1 Rponse temporelle5.4.2 Rponse frquentielle

    5.5 Analyse des proprits des systmes5.6 Calcul, affichage des marges de gain et de phase5.7 Trac du lieu d'Evans5.8 Divers

    6.0 Applications (exemples)6.1 Ralisation d'une fonction qui affiche le lieu de Bode6.2 Rponse en frquence d'un filtre RLC6.3 Sous-chantillonnage d'une sinusode6.4 Suite d'impulsions rectangulaires

    7.0 Rfrences bibliographiques8.0 Services Internet