Main Content

bode

Réponse en fréquence de Bode d'un système dynamique

Description

[mag,phase,wout] = bode(sys) calcule la réponse en fréquence du modèle de système dynamique sys et renvoie l'amplitude et la phase de la réponse à chaque fréquence du vecteur wout. La fonction détermine automatiquement les fréquences dans wout sur la base de la dynamique du système.

exemple

[mag,phase,wout] = bode(sys,w) renvoie les données de réponse aux fréquences spécifiées par w. Vous pouvez spécifier une plage ou un vecteur de fréquences.

exemple

[mag,phase,wout,sdmag,sdphase] = bode(sys,w) renvoie l'écart-type estimé des valeurs d’amplitude et de phase pour le modèle identifié sys.

exemple

bode(___) trace la réponse en fréquence de sys avec les options de tracé par défaut pour toutes les combinaisons d'arguments d'entrée précédentes. Le tracé indique l'amplitude (en dB) et la phase (en degrés) de la réponse du système en fonction de la fréquence. Pour découvrir d’autres options de personnalisation du tracé, utilisez bodeplot.

  • Pour regrouper les réponses de plusieurs systèmes dynamiques sur le même tracé, vous pouvez spécifier sys sous la forme d’une liste de modèles séparés par des virgules. Par exemple, bode(sys1,sys2,sys3) regroupe les réponses de trois modèles sur le même tracé.

  • Pour spécifier une couleur, un style de trait et un marqueur pour chaque système dans le tracé, spécifiez une valeur LineSpec pour chaque système. Par exemple, bode(sys1,LineSpec1,sys2,LineSpec2) trace deux modèles et spécifie leur style de tracé. Pour plus d'informations sur la spécification d’une valeur LineSpec, consultez bodeplot.

exemple

Exemples

réduire tout

Créez un diagramme de Bode pour le système dynamique SISO en temps continu suivant.

H(s)=s2+0.1s+7.5s4+0.12s3+9s2.

H = tf([1 0.1 7.5],[1 0.12 9 0 0]);
bode(H)

MATLAB figure

bode sélectionne automatiquement la plage du tracé en fonction de la dynamique du système.

Créez un diagramme de Bode sur une plage de fréquences spécifiée. Utilisez cette approche lorsque vous souhaitez vous concentrer sur la dynamique dans une plage de fréquences spécifique.

H = tf([-0.1,-2.4,-181,-1950],[1,3.3,990,2600]);
bode(H,{1,100})
grid on

MATLAB figure

Le cell array {1,100} spécifie les valeurs de fréquence minimale et maximale dans le diagramme de Bode. Lorsque vous fournissez ainsi des limites de fréquence, la fonction sélectionne des points intermédiaires pour les données de réponse en fréquence.

Vous pouvez également indiquer un vecteur de points de fréquence à utiliser pour évaluer et tracer la réponse en fréquence.

w = [1 5 10 15 20 23 31 40 44 50 85 100];
bode(H,w,'.-')
grid on

MATLAB figure

bode ne trace la réponse en fréquence qu’aux fréquences indiquées.

Comparez la réponse en fréquence d'un système en temps continu à celle d'un système discrétisé équivalent, sur le même diagramme de Bode.

Créez des systèmes dynamiques en temps continu et en temps discret.

H = tf([1 0.1 7.5],[1 0.12 9 0 0]);
Hd = c2d(H,0.5,'zoh');

Créez un diagramme de Bode qui affichera les deux systèmes.

bode(H,Hd)

MATLAB figure

Le diagramme de Bode d'un système en temps discret comprend une ligne verticale repérant la fréquence de Nyquist du système.

Indiquez le style de trait, la couleur ou le marqueur pour chaque système dans un diagramme de Bode avec l'argument d'entrée LineSpec.

H = tf([1 0.1 7.5],[1 0.12 9 0 0]);
Hd = c2d(H,0.5,'zoh');
bode(H,'r',Hd,'b--')

MATLAB figure

Le premier argument LineSpec, 'r' spécifie une ligne rouge continue pour la réponse de H. Le deuxième argument LineSpec, 'b--' spécifie une ligne bleue en pointillés pour la réponse de Hd.

Calculez l’amplitude et la phase de la réponse en fréquence d’un système SISO.

Si vous n’indiquez pas de fréquence, bode choisit des fréquences sur la base de la dynamique du système et les renvoie dans le troisième argument de sortie.

H = tf([1 0.1 7.5],[1 0.12 9 0 0]);
[mag,phase,wout] = bode(H);

Comme H est un modèle SISO, les deux premières dimensions de mag et phase sont toutes deux égales à 1. La troisième dimension correspond au nombre de fréquences dans wout.

size(mag)
ans = 1×3

     1     1    41

length(wout)
ans = 
41

Par conséquent, chaque entrée dans la troisième dimension de mag indique l’amplitude de la réponse à la fréquence correspondante dans wout.

Pour les besoins de cet exemple, créez un système à 2 sorties et 3 entrées.

rng(0,'twister'); % For reproducibility
H = rss(4,2,3);

Pour ce système, bode trace les réponses en fréquence de chaque canal d'E/S dans un tracé distinct au sein d’une seule figure.

bode(H)

MATLAB figure

Calculez l'amplitude et la phase de ces réponses à 20 fréquences comprises entre 1 et 10 radians.

w = logspace(0,1,20);
[mag,phase] = bode(H,w);

mag et phase sont des tableaux tridimensionnels dont les deux premières dimensions correspondent aux dimensions de sortie et d'entrée de H. La troisième dimension désigne quant à elle le nombre de fréquences. Par exemple, examinez les dimensions de mag.

size(mag)
ans = 1×3

     2     3    20

Par conséquent, par exemple, mag(1,3,10) correspond à l'amplitude de la réponse de la troisième entrée à la première sortie, calculée à la 10e fréquence dans w. De la même manière, phase(1,3,10) contient la phase de la même réponse.

Comparez la réponse en fréquence d'un modèle paramétrique, identifié à partir de données d'entrée/sortie, avec un modèle non paramétrique identifié à partir des mêmes données.

Identifiez les modèles paramétriques et non paramétriques sur la base des données.

load iddata2 z2;
w = linspace(0,10*pi,128);
sys_np = spa(z2,[],w);
sys_p = tfest(z2,2);

Pour pouvoir utiliser les commandes spa et tfest, vous devez disposer du logiciel System Identification Toolbox™.

sys_np est un modèle identifié non paramétrique. sys_p est un modèle identifié paramétrique.

Créez un diagramme de Bode comprenant les deux systèmes.

bode(sys_np,sys_p,w);
legend('sys-np','sys-p')

MATLAB figure

ans = 
  Legend (sys-np, sys-p) with properties:

         String: {'sys-np'  'sys-p'}
       Location: 'northeast'
    Orientation: 'vertical'
       FontSize: 8.1000
       Position: [0.8049 0.8257 0.1736 0.0884]
          Units: 'normalized'

  Use GET to show all properties

Vous pouvez afficher la région de confiance sur le diagramme de Bode en cliquant avec le bouton droit de la souris sur le diagramme et en sélectionnant Caractéristiques > Région de confiance.

Calculez l'écart-type d’amplitude et de phase d’un modèle identifié. Utilisez ces données pour créer un tracé 3σ de l'incertitude de la réponse.

Identifiez un modèle de fonction de transfert sur la base des données. Obtenez les données d'écart-type d’amplitude et de phase de la réponse en fréquence.

load iddata2 z2;
sys_p = tfest(z2,2);
w = linspace(0,10*pi,128);
[mag,ph,w,sdmag,sdphase] = bode(sys_p,w);

Pour pouvoir utiliser la commande tfest, vous devez disposer du logiciel System Identification Toolbox™.

sys_p est un modèle de fonction de transfert identifié. sdmag et sdphase contiennent respectivement les données d'écart-type pour l'amplitude et la phase de la réponse en fréquence.

Utilisez les données d'écart-type pour créer un tracé 3σ correspondant à la région de confiance.

mag = squeeze(mag);
sdmag = squeeze(sdmag);
semilogx(w,mag,'b',w,mag+3*sdmag,'k:',w,mag-3*sdmag,'k:');

Figure contains an axes object. The axes object contains 3 objects of type line.

Créez un diagramme de Bode d'un modèle à coefficients complexes et d'un modèle à coefficients réels sur le même tracé.

rng(0)
A = [-3.50,-1.25-0.25i;2,0];
B = [1;0];
C = [-0.75-0.5i,0.625-0.125i];
D = 0.5;
Gc = ss(A,B,C,D);
Gr = rss(5);
bodeplot(Gc,Gr)
legend("Complex-coefficient model","Real-coefficient model",Location="southwest");

MATLAB figure

Dans l’échelle de fréquence logarithmique, le tracé présente deux branches pour les modèles à coefficients complexes, l'une pour les fréquences positives, avec une flèche pointant vers la droite, et l'autre pour les fréquences négatives, avec une flèche pointant vers la gauche. Dans les deux branches, les flèches indiquent la direction des fréquences croissantes. Les tracés des modèles à coefficients réels contiennent toujours une seule branche sans flèches.

Vous pouvez modifier l'échelle de fréquence du diagramme de Bode en cliquant avec le bouton droit de la souris sur le diagramme et en sélectionnant Propriétés. Dans la boîte de dialogue Property Editor, dans l'onglet Unités, définissez l'échelle de fréquence sur linear scale. Vous pouvez également utiliser la fonction bodeplot et modifier l'objet tracé renvoyé.

bp = bodeplot(Gc,Gr);
bp.FrequencyScale = "linear";
legend("Complex-coefficient model","Real-coefficient model",Location="southwest");

MATLAB figure

Dans l'échelle de fréquence linéaire, le tracé présente une seule branche avec une plage de fréquences symétrique centrée sur une valeur de fréquence de zéro. Le tracé présente également la réponse en fréquence négative d'un modèle à coefficients réels lorsque vous tracez la réponse avec un modèle à coefficients complexes.

Arguments d'entrée

réduire tout

Système dynamique spécifié en tant que modèle de système dynamique SISO or MIMO ou en tant que tableau de modèles de systèmes dynamiques. Parmi les systèmes dynamiques que vous pouvez utiliser, citons :

  • Modèles LTI numériques en temps continu ou discret, tels que les modèles tf, zpk ou ss.

  • Modèles parcimonieux de représentation d'état, tels que sparss ou mechss. La grille de fréquences w doit être spécifiée pour les modèles parcimonieux.

  • Modèles LTI généralisés ou incertains tels que les modèles genss ou uss (Robust Control Toolbox). Pour pouvoir utiliser les modèles incertains, le software Robust Control Toolbox™ est nécessaire.

    • Pour les blocs de design de contrôle réglables, la fonction évalue le modèle à sa valeur actuelle pour tracer la réponse.

    • Pour les blocs de design de systèmes de contrôle incertains, la fonction trace la valeur nominale et des échantillons aléatoires du modèle.

  • Modèles de données de réponse en fréquence tels que les modèles frd. Pour ces modèles, la fonction trace la réponse aux fréquences définies dans le modèle.

  • Modèles LTI identifiés, tels que idtf (System Identification Toolbox), idss (System Identification Toolbox) ou idproc (System Identification Toolbox). Pour pouvoir utiliser les modèles identifiés, le logiciel System Identification Toolbox™ est nécessaire.

Si sys est un réseau de modèles, le tracé indique les réponses de tous les modèles du réseau sur les mêmes axes.

Fréquences auxquelles calculer la réponse, spécifiées sous l’une des formes suivantes :

  • Cell array de la forme {wmin,wmax} : calculez la réponse à des fréquences comprises entre wmin et wmax. Si la valeur wmax est supérieure à la fréquence de Nyquist de sys, la réponse n'est calculée que jusqu'à la fréquence de Nyquist.

  • Vecteur de fréquences : calculez la réponse à chaque fréquence spécifiée. Par exemple, utilisez logspace pour générer un vecteur ligne avec des valeurs de fréquence espacées de façon logarithmique. Le vecteur w peut contenir des fréquences positives et négatives.

  • [] : sélectionner automatiquement les fréquences sur la base de la dynamique du système.

Pour les modèles à coefficients complexes, si vous spécifiez une plage de fréquences de [wmin,wmax] pour votre tracé, dans :

  • Échelle de fréquence logarithmique : les limites de fréquence du tracé sont définies sur [wmin,wmax] et le tracé présente deux branches, l'une pour les fréquences positives [wmin,wmax] et l'autre, pour les fréquences négatives [-wmax,-wmin].

  • Échelle de fréquence linéaire : les limites de fréquence du tracé sont définies sur [-wmax,wmax] et le tracé présente une seule branche avec une plage de fréquences symétrique centrée sur une valeur de fréquence de zéro.

Indiquez les fréquences exprimées en rad/TimeUnit, où TimeUnit désigne la propriété TimeUnit du modèle.

Arguments en sortie

réduire tout

Amplitude de la réponse du système en unités absolues, renvoyée sous la forme d'un tableau 3D. Les dimensions de ce tableau sont les suivantes : (nombre de sorties du système)-par-(nombre d'entrées du système)-par-(nombre de points de fréquence).

Pour convertir l‘amplitude des unités absolues en décibels, utilisez la formule suivante :

magdb = 20*log10(mag)

Phase de la réponse du système en degrés, renvoyée sous la forme d'un tableau 3D. Les dimensions de ce tableau sont les suivantes : (nombre de sorties du système)-par-(nombre d'entrées du système)-par-(nombre de points de fréquence).

Fréquences auxquelles la fonction renvoie la réponse du système, sous la forme d'un vecteur colonne. La fonction choisit les valeurs de fréquence sur la base de la dynamique du modèle, sauf si vous spécifiez les fréquences au moyen de l'argument en entrée w.

wout contient également des valeurs de fréquence négatives pour les modèles à coefficients complexes.

Les valeurs de fréquence sont exprimées en radians/TimeUnit, où TimeUnit désigne la valeur de la propriété TimeUnit de sys.

Écart-type d’amplitude estimé pour les modèles identifiés, renvoyé sous la forme d'un tableau 3D présentant les mêmes dimensions que mag.

Si sys n'est pas un modèle LTI identifié, sdmag est [].

Écart-type de phase estimé pour les modèles identifiés, renvoyé sous la forme d'un tableau 3D présentant les mêmes dimensions que phase.

Si sys n'est pas un modèle LTI identifié, sdphase est [].

Conseils

  • Lorsque vous avez besoin d'options supplémentaires de personnalisation du tracé, utilisez plutôt bodeplot.

Algorithmes

Le logiciel calcule la réponse en fréquence comme suit :

  1. Calculez la représentation du zéro-pôle-gain (zpk) du système dynamique.

  2. Évaluez le gain et la phase de la réponse en fréquence sur la base des données de zéro, de pôle et de gain pour chaque canal d'entrée/sortie du système.

    • Pour les systèmes en temps continu, bode évalue la réponse en fréquence sur l'axe imaginaire s = et ne prend en compte que les fréquences positives.

    • Pour les systèmes en temps discret, bode évalue la réponse en fréquence sur le cercle unitaire. Pour faciliter l'interprétation, la commande configure la moitié supérieure du cercle unitaire comme suit :

      z=ejωTs,0ωωN=πTs,

      Ts correspond au temps d'échantillonnage et ωN, à la fréquence de Nyquist. La fréquence équivalente en temps continu ω est alors utilisée en tant que variable de l'axe x. Comme H(ejωTs) est périodique à une période de 2ωN, bode ne représente la réponse que jusqu'à la fréquence de Nyquist ωN. Si sys est un modèle en temps discret présentant un temps d'échantillonnage non spécifié, bode utilise Ts = 1.

Historique des versions

Introduit avant R2006a