Hauptinhalt

Die Übersetzung dieser Seite ist veraltet. Klicken Sie hier, um die neueste Version auf Englisch zu sehen.

bode

Bode-Frequenzgang eines dynamischen Systems

Beschreibung

[mag,phase,wout] = bode(sys) berechnet den Frequenzgang eines dynamischen Systemmodells sys und gibt die Größe und Phase jeder Antwort bei jeder Frequenz im Vektor wout aus. Diese Funktion ermittelt die Frequenzen in wout automatisch auf Basis der Systemdynamik.

Beispiel

[mag,phase,wout] = bode(sys,w) gibt die Antwortdaten für die von w angegebenen Frequenzen aus. Sie können einen Frequenzbereich oder einen Frequenzvektor festlegen.

Beispiel

[mag,phase,wout,sdmag,sdphase] = bode(sys,w) gibt die geschätzte Standardabweichung der Größen- und Phasenwerte für das identifizierte Modell sys aus.

Beispiel

bode(___) plottet den Frequenzgang von sys mit Standard-Diagrammoptionen für alle vorherigen Eingangsargument-Kombinationen. Das Diagramm zeigt die Größe (in dB) und Phase (in Grad) der Systemantwort als Funktion der Frequenz an. Weitere Informationen zu den Anpassungsmöglichkeiten von Diagrammen finden Sie unter bodeplot.

  • Um Antworten für mehrere dynamische Systeme auf einem Diagramm zu plotten, können Sie sys als kommagetrennte Modellliste angeben. bode(sys1,sys2,sys3) plottet beispielsweise die Antworten für drei Modelle auf demselben Diagramm.

  • Um eine Farbe, einen Linienstil und eine Markierung für jedes System im Diagramm darzustellen, geben Sie für jedes System einen Wert LineSpec an. Mithilfe von bode(sys1,LineSpec1,sys2,LineSpec2) können Sie beispielsweise zwei Modelle zeichnen und deren Diagrammstil festlegen. Weitere Informationen zum Festlegen eines LineSpec-Werts finden Sie unter bodeplot.

Beispiel

Beispiele

alle reduzieren

Erstellen Sie ein Bode-Diagramm des folgenden zeitkontinuierlichen dynamischen SISO-Systems.

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 wählt den Diagrammbereich automatisch auf Grundlage der Systemdynamik aus.

Erstellen Sie ein Bode-Diagramm über einen bestimmten Frequenzbereich hinweg. Verwenden Sie diesen Ansatz, wenn Sie sich auf die Dynamik in einem bestimmten Frequenzbereich konzentrieren möchten.

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

MATLAB figure

Das Zellenarray {1,100} gibt die Mindest- und Höchst-Frequenzwerte im Bode-Diagramm an. Wenn Sie die Frequenzgrenzen auf diese Weise angeben, wählt die Funktion Zwischenpunkte für die Frequenzgangdaten aus.

Alternativ können Sie einen Frequenzpunkt-Vektor festlegen, um den Frequenzgang zu evaluieren und zu plotten.

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

MATLAB figure

bode plottet die Frequenzantwort nur bei den angegebenen Frequenzen.

Sie können den Frequenzgang eines zeitkontinuierlichen Systems mit einem äquivalenten diskretisierten System in demselben Bode-Diagramm vergleichen.

Erstellen Sie zeitkontinuierliche und zeitdiskrete dynamische Systeme.

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

Erstellen Sie ein Bode-Diagramm, das beide Systeme darstellt.

bode(H,Hd)

MATLAB figure

Das Bode-Diagramm eines zeitdiskreten Systems umfasst eine vertikale Linie, die die Nyquist-Frequenz des Systems kennzeichnet.

Über das Eingangsargument LineSpec können Sie Linienstil und -farbe sowie Marken für ein Bode-Diagramm festlegen.

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

Der erste LineSpec 'r' legt eine durchgezogene rote Linie für die Antwort H fest. Der zweite LineSpec 'b--' legt eine gestrichelte blaue Linie für die Antwort Hd fest.

Berechnen Sie die Größe und Phase des Frequenzgangs eines SISO-Systems.

Wenn Sie keine Frequenzen angeben, wählt bode Frequenzen auf Grundlage der Systemdynamik aus und gibt sie im dritten Ausgangsargument aus.

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

Da es sich bei H um ein SISO-Modell handelt, sind die ersten zwei Dimensionen von mag und phase 1. Die dritte Dimension ist die Anzahl der Frequenzen in wout.

size(mag)
ans = 1×3

     1     1    41

length(wout)
ans = 
41

Daher entspricht jeder Eintrag entlang der dritten Dimension von mag der Größe der Antwort bei der entsprechenden Frequenz in wout.

Erstellen Sie für dieses Beispiel ein System mit 2 Ausgängen und 3 Eingängen.

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

Bei diesem System plottet bode die Frequenzgänge jedes E/A-Kanals in einem eigenen Diagramm in einer einzigen Abbildung.

bode(H)

MATLAB figure

Berechnen Sie die Größe und Phase dieser Antworten bei 20 Frequenzen zwischen 1 und 10 Radianten.

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

mag und phase sind dreidimensionale Arrays, bei denen die ersten zwei Dimensionen den Ausgangs- und Eingangsdimensionen von H entsprechen und die dritte Dimension der Anzahl der Frequenzen entspricht. Betrachten Sie beispielsweise die Dimensionen von mag.

size(mag)
ans = 1×3

     2     3    20

Hier ist mag(1,3,10) die Größe der Antwort vom dritten Eingang zum ersten Ausgang, berechnet bei der zehnten Frequenz in w. Ähnlich hierzu enthält phase(1,3,10) die Phase derselben Antwort.

Vergleichen Sie die Frequenzantwort eines parametrischen Modells, identifiziert anhand der Eingangs-/Ausgangsdaten mit einem nicht parametrischen Modell, das anhand derselben Daten identifiziert wurde.

Identifizieren Sie die parametrischen und nicht parametrischen Modelle auf Grundlage der Daten.

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

Für die Befehle spa und tfest ist System Identification Toolbox™ erforderlich.

sys_np ist ein nicht parametrisches identifiziertes Modell. sys_p ist ein parametrisches identifiziertes Modell.

Erstellen Sie ein Bode-Diagramm, das beide Systeme umfasst.

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

Sie können das Konfidenzintervall des Bode-Diagramms anzeigen, indem Sie auf das Diagramm rechtsklicken und Characteristics > Confidence Region (Merkmale > Konfidenzintervall) auswählen.

Berechnen Sie die Standardabweichung der Größe und Phase eines identifizierten Modells. Mit diesen Daten können Sie ein 3σ-Diagramm der Antwort-Unsicherheit erstellen.

Identifizieren Sie ein Transferfunktionsmodell auf Grundlage der Daten. Erfassen Sie die Standardabweichungsdaten für die Größe und Phase des Frequenzgangs.

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

Für den Befehl tfest ist System Identification Toolbox™ erforderlich.

sys_p ist ein identifiziertes Transferfunktionsmodell. sdmag und sdphase enthalten die Standardabweichungsdaten für die Größe und Phase des Frequenzgangs.

Verwenden Sie die Standardabweichungsdaten, um ein 3σ-Diagramm für das Konfidenzintervall zu erstellen.

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.

Erstellen Sie ein Bode-Diagramm eines Modells mit komplexen Koeffizienten und ein Modell mit reellen Koeffizienten auf demselben Diagramm.

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

Bei einer Log-Frequenzskala umfasst das Diagramm bei Modellen mit komplexen Koeffizienten zwei Zweige, einen für positive Frequenzen mit Pfeil nach rechts und einen für negative Frequenzen mit Pfeil nach links. Bei beiden Zweigen weisen die Pfeile auf die Richtung zunehmender Frequenzen hin. Das Diagramm für Modelle mit reellen Koeffizienten umfasst stets einen einzigen Zweig ohne Pfeile.

Sie können die Frequenzskala des Bode-Diagramms verändern, indem Sie rechts auf das Diagramm klicken und Eigenschaften auswählen. Setzen Sie im Eigenschafteneditor auf der Registerkarte Einheiten die Frequenzskala auf linear scale. Alternativ können Sie die Funktion bodeplot verwenden und das ausgegebene Diagrammobjekt modifizieren.

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

MATLAB figure

Bei einer linearen Frequenzskala umfasst das Diagramm einen einzigen Zweig mit einem symmetrischen Frequenzbereich, zentriert auf einen Frequenzwert von Null. Das Diagramm umfasst zudem die negative Frequenzantwort eines Modells mit reellen Koeffizienten, wenn Sie die Antwort zusammen mit einem Modell mit komplexen Koeffizienten plotten.

Eingabeargumente

alle reduzieren

Dynamisches System, das als SISO- oder MIMO-Modell für dynamische Systeme oder als Array von dynamischen Systemmodellen angegeben wird. Zu den dynamischen Systemen, die Sie verwenden können, zählen:

  • Zeitkontinuierliche oder zeitdiskrete numerische LTI-Modelle, wie tf-, zpk- oder ss-Modelle.

  • Schwach besetzte Zustandsraummodelle wie sparss- oder mechss-Modelle. Für schwach besetzte Modelle muss ein Frequenzraster w angegeben werden.

  • Verallgemeinerte oder unsichere LTI-Modelle wie z. B. genss- oder uss (Robust Control Toolbox)-Modelle. Für die Verwendung unsicherer Modelle ist die Software Robust Control Toolbox™ erforderlich.

    • Bei optimierbaren Regelungsentwurf-Blöcken wertet die Funktion das Modell mit dem aktuellen Wert aus, um die Antwort darzustellen.

    • Bei unsicheren Regelungsentwurf-Blöcken stellt die Funktion den Nennwert und Zufallsstichproben des Modells dar.

  • Frequenzgang-Datenmodelle wie frd-Modelle. Bei diesen Modellen plottet die Funktion die Antwort bei den in dem Modell festgelegten Frequenzen.

  • Identifizierte LTI-Modelle wie idtf (System Identification Toolbox)-, idss (System Identification Toolbox)- oder idproc (System Identification Toolbox)-Modelle. Für die Verwendung von identifizierten Modellen ist die Software System Identification Toolbox™ erforderlich.

Handelt es sich bei sys um ein Array von Modellen, stellt das Diagramm die Antworten aller Modelle im Array auf derselben Achse dar.

Frequenzen, bei denen die Antwort berechnet werden soll, angegeben in einer der folgenden Formen:

  • Zellen-Array der Form {wmin,wmax} – Berechnet die Antwort bei den Frequenzen im Bereich von wmin bis wmax. Ist wmax größer als die Nyquist-Frequenz von sys, wird die Antwort nur bis zur Nyquist-Frequenz berechnet.

  • Vektor aus Frequenzen – Berechnet die Antwort bei jeder angegebenen Frequenz. Sie können beispielsweise logspace verwenden, um einen Zeilenvektor mit Frequenzwerten in logarithmischen Abständen zu generieren. Der Vektor w kann sowohl positive als auch negative Frequenzen enthalten.

  • [] – Wählt auf Grundlage der Systemdynamik automatisch Frequenzen aus.

Wenn Sie bei Modellen mit komplexen Koeffizienten einen Frequenzbereich von [wmin,wmax] für Ihr Diagramm angeben, gilt:

  • Bei einer Log-Frequenzskala werden die Diagramm-Frequenzgrenzwerte auf [wmin,wmax] gesetzt und das Diagramm umfasst zwei Zweige, einen für positive Frequenzen [wmin,wmax] und einen für negative Frequenzen [-wmax,-wmin].

  • Bei einer linearen Frequenzskala werden die Diagramm-Frequenzgrenzwerte auf [-wmax,wmax] gesetzt und das Diagramm umfasst einen einzigen Zweig mit einem symmetrischen Frequenzbereich, zentriert auf einen Frequenzwert von Null.

Sie können Frequenzen als Einheiten rad/TimeUnit angeben, wobei TimeUnit die Eigenschaft TimeUnit des Modells ist.

Ausgangsargumente

alle reduzieren

Größe der Systemantwort in absoluten Einheiten, ausgegeben als 3D-Array. Die Dimensionen dieses Arrays sind (Anzahl der Systemausgänge) mal (Anzahl der Systemeingänge) mal (Anzahl der Frequenzpunkte).

Um die Größe von absoluten Einheiten in Dezibel zu konvertieren, verwenden Sie:

magdb = 20*log10(mag)

Phase der Systemantwort in Grad, ausgegeben als 3D-Array. Die Dimensionen dieses Arrays sind (Anzahl der Systemausgänge) mal (Anzahl der Systemeingänge) mal (Anzahl der Frequenzpunkte).

Frequenzen, bei denen die Funktion die Systemantwort ausgibt, ausgegeben als Spaltenvektor. Die Funktion wählt die Frequenzwerte auf Grundlage der Systemdynamik aus, wenn Sie keine Frequenzen mithilfe des Eingangsarguments w angeben.

wout enthält zudem negative Frequenzwerte für Modelle mit komplexen Koeffizienten.

Frequenzwerte werden in Radianten/TimeUnit angegeben, wobei TimeUnit der Wert der Eigenschaft TimeUnit von sys ist.

Geschätzte Standardabweichung der Größe für die identifizierten Modelle, ausgegeben als 3D-Array mit denselben Dimensionen wie mag.

Wenn es sich bei sys nicht um ein identifiziertes LTI-Modell handelt, ist sdmag [].

Geschätzte Standardabweichung der Phase für die identifizierten Modelle, ausgegeben als 3D-Array mit denselben Dimensionen wie phase.

Wenn es sich bei sys nicht um ein identifiziertes LTI-Modell handelt, ist sdphase [].

Tipps

  • Verwenden Sie stattdessen die Funktion bodeplot, wenn Sie weitere Optionen zur Anpassung von Diagrammen benötigen.

Algorithmen

Die Software berechnet den Frequenzgang folgendermaßen:

  1. Berechnen Sie die Null-Polstellen-Verstärkungsfaktor-Darstellung (zpk) des dynamischen Systems.

  2. Evaluieren Sie den Verstärkungsfaktor und die Phase des Frequenzgangs auf Basis der Nullstellen-, Polstellen- und Verstärkungsfaktordaten für jeden Eingangs-/Ausgangskanal des Systems.

    • Bei zeitkontinuierlichen Systemen evaluiert bode den Frequenzgang auf der imaginären Achse s = und berücksichtigt hierbei nur positive Frequenzen.

    • Bei zeitdiskreten Systemen evaluiert bode den Frequenzgang des Einheitskreises. Um die Interpretation zu vereinfachen, parametrisiert der Befehl die obere Hälfte des Einheitskreises als:

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

      wobei Ts für die Abtastzeit und ωN für die Nyquist-Frequenz steht. Daraufhin wird die äquivalente zeitkontinuierliche Frequenz ω als x-Achsen-Variable verwendet. Da H(ejωTs) periodisch mit Periode 2ωN ist, plottet bode die Antwort nur bis zu Nyquist-Frequenz ωN. Wenn sys ein zeitdiskretes Modell mit nicht spezifizierter Abtastzeit ist, verwendet bode Ts = 1.

Versionsverlauf

Eingeführt vor R2006a