Contenu principal

sigma

Valeurs singulières de la réponse en fréquence d’un système dynamique

    Description

    [sv,wout] = sigma(sys) renvoie les valeurs singulières sv de la réponse en fréquence du modèle de système dynamique sys à chaque fréquence du vecteur wout. La fonction détermine automatiquement les fréquences à tracer sur la base de la dynamique du système.

    exemple

    [sv,wout] = sigma(sys,w) renvoie les valeurs singulières aux fréquences spécifiées par w. Vous pouvez spécifier une plage ou un vecteur de fréquences.

    exemple

    sv = sigma(sys,w,type) renvoie les valeurs singulières modifiées du type spécifié. Cette syntaxe n’est utilisable qu’avec des systèmes comportant le même nombre d’entrées et de sorties.

    sigma(___) trace les valeurs singulières 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. Si sys est un modèle à entrée et sortie uniques (SISO), le tracé des valeurs singulières est semblable à sa réponse en amplitude de Bode. Pour découvrir d’autres options de personnalisation du tracé, utilisez sigmaplot.

    • Pour regrouper les valeurs singulières 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, sigma(sys1,sys2,sys3) regroupe les valeurs singulières 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, sigma(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 sigmaplot.

    Exemples

    réduire tout

    Créez un tracé des valeurs singulières du 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]);
    sigma(H)

    MATLAB figure

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

    Créez un tracé des valeurs singulières 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]);
    sigma(H,{1,100})
    grid on

    Le cell array {1,100} spécifie les valeurs de fréquence minimale et maximale dans le tracé. 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];
    sigma(H,w,'.-')

    MATLAB figure

    grid on

    MATLAB figure

    sigma 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 tracé des valeurs singulières.

    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 tracé qui affiche les deux systèmes.

    sigma(H,Hd)
    legend("Continuous","Discrete")

    MATLAB figure

    Le tracé sigma 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 tracé sigma avec l’argument en entrée LineSpec.

    H = tf([1 0.1 7.5],[1 0.12 9 0 0]);
    Hd = c2d(H,0.5,'zoh');
    sigma(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 les valeurs singulières de la réponse en fréquence d’un système SISO.

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

    H = tf([1 0.1 7.5],[1 0.12 9 0 0]);
    [sv,wout] = sigma(H);

    Comme H est un modèle SISO, la première dimension de sv est égale à 1. La deuxième dimension correspond au nombre de fréquences dans wout.

    size(sv)
    ans = 1×2
    
         1    40
    
    
    length(wout)
    ans = 
    40
    

    Par conséquent, chaque entrée dans la deuxième dimension de sv indique la valeur singulière 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, sigma regroupe les valeurs singulières de la matrice de réponse en fréquence sur le même tracé.

    sigma(H)

    MATLAB figure

    Calculez les valeurs singulières à 20 fréquences comprises entre 1 et 10 radians.

    w = logspace(0,1,20);
    sv = sigma(H,w);

    sv est une matrice dont les lignes correspondent aux valeurs singulières de la matrice de réponse en fréquence et les colonnes aux valeurs de fréquence. Examinez les dimensions.

    size(sv)
    ans = 1×2
    
         2    20
    
    

    Par conséquent, par exemple, sv(:,10) correspond aux valeurs singulières de la réponse calculées à la 10e fréquence dans w.

    Considérons le système dynamique suivant à deux entrées et deux sorties.

    H(s)=[03ss2+s+10s+1s+52s+6].

    Calculez les réponses en valeurs singulières de H(s) et I + H(s).

    H = [0, tf([3 0],[1 1 10]) ; tf([1 1],[1 5]), tf(2,[1 6])];
    [svH,wH] = sigma(H);
    [svIH,wIH] = sigma(H,[],2);

    Dans la dernière commande, l’entrée 2 sélectionne le deuxième de type de réponse, I + H(s). Les vecteurs svH et svIH contiennent les données de réponse en valeurs singulières aux fréquences de wH et wIH.

    Tracez les réponses en valeurs singulières des deux systèmes.

    subplot(211)
    sigma(H)
    subplot(212)
    sigma(H,[],2)

    MATLAB figure

    Créez un tracé des valeurs singulières d’un modèle à coefficients complexes et d’un modèle à coefficients réels sur le même graphique.

    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);
    sigma(Gc,Gr)
    legend('Complex-coefficient model','Real-coefficient model');

    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 tracé en faisant un clic droit sur celui-ci et en sélectionnant Propriétés. Dans la boîte de dialogue « Property Editor », accédez à l’onglet Unités et définissez l’échelle de fréquence sur linear scale. Vous pouvez également utiliser la fonction sigmaplot et modifier les propriétés de l’objet tracé.

    Créez le tracé avec des options personnalisées.

    sp = sigmaplot(Gc,Gr);

    MATLAB figure

    sp.FrequencyScale = 'linear'
    sp = 
      SigmaPlot (Singular Values) with properties:
    
              Responses: [2×1 controllib.chart.response.SigmaResponse]
        Characteristics: [1×1 controllib.chart.options.CharacteristicsManager]
    
         MagnitudeScale: "linear"
          MagnitudeUnit: "dB"
         FrequencyScale: "linear"
          FrequencyUnit: "rad/s"
    
                Visible: on
    
      Show all properties
    
    
    legend('Complex-coefficient model','Real-coefficient model');

    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. Il 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. 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 en tant qu’une de ces valeurs :

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

    Type des valeurs singulières modifiées à tracer, spécifié sous la forme de l’une des valeurs suivantes.

    • 1 : tracer les valeurs singulières de la réponse en fréquence H-1, où H est la réponse en fréquence de sys.

    • 2 : tracer les valeurs singulières de la réponse en fréquence I+H.

    • 3 : tracer les valeurs singulières de la réponse en fréquence I+H-1.

    Dépendances

    Vous ne pouvez spécifier type que si sys a le même nombre d’entrées et de sorties.

    Arguments en sortie

    réduire tout

    Valeurs singulières de la réponse en fréquence en unités absolues, renvoyées sous forme de matrice. sv contient les valeurs singulières calculées aux fréquences w si vous les avez indiquées, ou wout dans le cas contraire. Pour un système sys à Nu entrées et Ny sorties, sv comporte min(Nu,Ny) lignes et autant de colonnes qu’il y a de valeurs dans w ou wout. La valeur sv(:,k) donne les valeurs singulières dans l’ordre décroissant à la fréquence wout(k).

    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 par TimeUnit, où TimeUnit désigne la valeur de la propriété TimeUnit de sys.

    Conseils

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

    • Les tracés créés à l’aide de sigma 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.

      sigma(sys)
      title("first line" + newline + "second line");

    Algorithmes

    sigma utilise la fonction MATLAB® svd pour calculer les valeurs singulières de la réponse en fréquence complexe.

    • Pour un modèle frd, sigma calcule les valeurs singulières de sys.ResponseData aux fréquences sys.Frequency.

    • Pour des modèles tf, ss ou zpk en temps continu avec une fonction de transfert H(s), sigma calcule les valeurs singulières de H(jω) en fonction de la fréquence ω.

    • Pour des modèles tf, ss ou zpk en temps discret avec une fonction de transfert H(z) et un pas d’échantillonnage Ts, sigma calcule les valeurs singulières de

      H(ejωTs)

      pour les fréquences ω comprises entre 0 et la fréquence de Nyquist ωN = π/Ts.

    Historique des versions

    Introduit avant R2006a

    développer tout