Contenu principal

nyquist

Réponse de Nyquist d’un système dynamique

Description

[re,im,wout] = nyquist(sys) renvoie les parties réelles et imaginaires de la réponse en fréquence à 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. Cette syntaxe ne crée pas de tracé.

exemple

[re,im,wout] = nyquist(sys,w) renvoie les données de réponse aux fréquences spécifiées par w.

  • Si w est un cell array de la forme {wmin,wmax}, wout contient les fréquences comprises entre wmin et wmax.

  • Si w est un vecteur de fréquences, wout = w.

exemple

[re,im,wout,sdre,sdim] = nyquist(sys,w) renvoie également l’écart-type estimé des parties réelles et imaginaires de la réponse en fréquence pour le modèle identifié sys. Si vous omettez w, la fonction détermine automatiquement les fréquences dans wout sur la base de la dynamique du système.

exemple

nyquist(___) crée un diagramme de Nyquist de la réponse en fréquence de sys avec les options de tracé par défaut pour toutes les combinaisons d’arguments en entrée précédentes. Le tracé affiche les parties réelles et imaginaires de la réponse du système en fonction de la fréquence. Pour découvrir d’autres options de personnalisation du tracé, utilisez nyquistplot.

  • 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, nyquist(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, nyquist(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 nyquistplot.

Exemples

réduire tout

Créez la fonction de transfert suivante et tracez sa réponse de Nyquist.

H(s)=2s2+5s+1s2+2s+3.

H = tf([2 5 1],[1 2 3]);
nyquist(H)

MATLAB figure

La fonction nyquist peut afficher une grille de M-cercles qui correspondent aux contours d’amplitude constante en boucle fermée. Les M-cercles sont définis comme le lieu des nombres complexes où la quantité suivante est une valeur constante pour toutes les fréquences.

T(jω)=|G(jω)1+G(jω)|.

Ici, ω est la fréquence en radians/TimeUnit, où TimeUnit correspond aux unités de temps du système et G est l’ensemble de nombres complexes remplissant l’exigence d’amplitude constante.

Pour afficher la grille de M-cercles, faites un clic droit sur le tracé et sélectionnez Grid. Vous pouvez également utiliser la commande grid.

grid on

MATLAB figure

Créez un diagramme de Nyquist 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]);
nyquist(H,{1,100})

Le cell array {1,100} spécifie une plage de fréquences [1,100] pour la branche de fréquences positives du diagramme de Nyquist et [–100,–1] pour la branche de fréquences négatives. Pour les modèles à coefficients réels, la branche de fréquences négatives s’obtient par symétrie. 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:0.1:30;
nyquist(H,w,'.-')

MATLAB figure

MATLAB figure

nyquist trace la réponse en fréquence aux fréquences indiquées.

Comparez la réponse en fréquence de plusieurs systèmes sur le même diagramme de Nyquist.

Créez les systèmes dynamiques.

rng(0)
sys1 = tf(3,[1,2,1]);
sys2 = tf([2 5 1],[1 2 3]);
sys3 = rss(4);

Créez un diagramme de Nyquist qui affiche tous les systèmes.

nyquist(sys1,sys2,sys3)
legend('Location','southwest')

MATLAB figure

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

sys1 = tf(3,[1,2,1]);
sys2 = tf([2 5 1],[1 2 3]);
nyquist(sys1,'o:',sys2,'g')

MATLAB figure

Le premier argument LineSpec, 'o:', spécifie une ligne en pointillés avec des marqueurs circulaires pour la réponse de sys1. Le deuxième argument LineSpec, 'g', spécifie une ligne verte continue pour la réponse de sys2.

Calculez les parties réelles et imaginaires de la réponse en fréquence d’un système SISO.

Si vous n’indiquez pas de fréquence, nyquist 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([2 5 1],[1 2 3]);
[re,im,wout] = nyquist(H);

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

size(re)
ans = 1×3

     1     1   141

length(wout)
ans = 
141

Par conséquent, chaque entrée dans la troisième dimension de re indique la partie réelle 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');
H = rss(4,2,3);

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

nyquist(H)

MATLAB figure

Calculez les parties réelles et imaginaires de ces réponses à 20 fréquences comprises entre 1 et 10 radians.

w = logspace(0,1,20);
[re,im] = nyquist(H,w);

re et im 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 re.

size(re)
ans = 1×3

     2     3    20

Par conséquent, par exemple, re(1,3,10) correspond à la partie réelle 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, im(1,3,10) contient la partie imaginaire de la même réponse.

Calculez les écarts-types des parties réelles et imaginaires de la réponse en fréquence d’un modèle identifié. Utilisez ces données pour créer un tracé 3σ de l'incertitude de la réponse.

Chargez les données d’estimation z2.

load iddata2 z2;

Identifiez un modèle de fonction de transfert avec les données. Pour pouvoir utiliser la commande tfest, vous devez disposer de la System Identification Toolbox™.

sys_p = tfest(z2,2);

Obtenez les écarts-types des parties réelles et imaginaires de la réponse en fréquence pour un ensemble w de 512 fréquences.

w = linspace(-10*pi,10*pi,512);
[re,im,wout,sdre,sdim] = nyquist(sys_p,w);

re et im sont les parties réelles et imaginaires de la réponse en fréquence. sdre et sdim sont leurs écarts-types respectifs. Les fréquences dans wout sont identiques à celles spécifiées dans w.

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

re = squeeze(re);
im = squeeze(im); 
sdre = squeeze(sdre);
sdim = squeeze(sdim);
plot(re,im,'b',re+3*sdre,im+3*sdim,'k:',re-3*sdre,im-3*sdim,'k:')
xlabel('Real Axis');
ylabel('Imaginary Axis');

Figure contains an axes object. The axes object with xlabel Real Axis, ylabel Imaginary Axis contains 3 objects of type line.

Créez un diagramme de Nyquist 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(4);
nyquist(Gc,Gr)
legend('Complex-coefficient model','Real-coefficient model')

MATLAB figure

Le diagramme de Nyquist présente toujours deux branches, l’une pour les fréquences positives et l’autre pour les fréquences négatives. Les flèches indiquent la direction des fréquences croissantes pour chaque branche. Pour les modèles à coefficients complexes, les deux branches ne sont pas symétriques. Pour les modèles à coefficients réels, la branche négative s’obtient par symétrie.

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. Vous pouvez utiliser ces types de systèmes dynamiques :

  • 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, la 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, la 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.

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

Partie réelle de la réponse du système, 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).

Partie imaginaire de la réponse du système, renvoyée sous la forme d’un tableau 3D. Les dimensions de ce tableau sont les suivantes : (nombre de sorties du système) x (nombre d’entrées du système) x (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 avec 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 par TimeUnit, où TimeUnit désigne la valeur de la propriété TimeUnit de sys.

Écart-type estimé de la partie réelle de la réponse pour les modèles identifiés, renvoyé sous la forme d’un tableau 3D présentant les mêmes dimensions que re.

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

Écart-type estimé de la partie imaginaire de la réponse pour les modèles identifiés, renvoyé sous la forme d’un tableau 3D présentant les mêmes dimensions que im.

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

Conseils

  • Deux options de zoom spécialement destinées aux diagrammes de Nyquist sont accessibles par clic droit :

    • Full View : coupe les branches non bornées du diagramme de Nyquist, en incluant tout de même le point critique (–1, 0).

    • Zoom on (-1,0) : effectue un zoom sur le point critique (–1, 0).

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

  • Les tracés créés à l’aide de nyquist ne supportent pas les titres ou étiquettes multilignes spécifiés en tant que tableaux de chaînes de caractères ou cell arrays de vecteurs de caractères. Pour spécifier des titres et étiquettes multilignes, utilisez une chaîne de caractères unique avec un caractère newline.

    nyquist(sys,u,t)
    title("first line" + newline + "second line");

Historique des versions

Introduit avant R2006a

développer tout