Hauptinhalt

ss

Zustandsraummodell

Beschreibung

Verwenden Sie ss, um reellwertige oder komplexwertige Zustandsraummodelle zu erstellen oder um dynamische Systemmodelle in die Zustandsraummodell-Form zu konvertieren.

Ein Zustandsraummodell ist eine mathematische Darstellung eines physikalischen Systems als Eingangs-, Ausgangs- und Zustandsvariablen, die durch Differenzialgleichungen der ersten Ordnung miteinander verbunden sind. Die Zustandsvariablen definieren die Werte der Ausgangsvariablen. Das ss-Modellobjekt kann SISO- oder MIMO-Zustandsraummodelle in kontinuierlicher oder diskreter Zeit darstellen.

In kontinuierlicher Zeit weist ein Zustandsraummodell die folgende Form auf:

x˙=Ax+Buy=Cx+Du

Hier stellen x, u und y die Zustände, Eingänge und Ausgänge dar; A, B, C und D stellen die Zustandsraum-Matrizen dar. In diskreter Zeit hat ein Zustandsraummodell die Form:

x[n+1]=Ax[n]+Bu[n]y[n]=Cx[n]+Du[n]

Das ss-Objekt stellt ein zeitkontinuierliches oder zeitdiskretes Zustandsraummodell in MATLAB® dar und speichert A, B, C und D zusammen mit anderen Informationen wie Abtastzeit, E/A-Namen, Verzögerungen und Offsets.

Sie können ein Zustandsraummodell erstellen, indem Sie entweder die Zustands-, Eingangs- und Ausgangsmatrizen direkt angeben oder ein Modell eines anderen Typs (wie ein Transferfunktionsmodell tf) in eine Zustandsraum-Form konvertieren. Weitere Informationen finden Sie unter Zustandsraummodelle. Sie können ein ss-Modellobjekt verwenden, um:

  • Eine lineare Analyse vorzunehmen

  • Ein lineares, zeitinvariantes Modell (LTI) für den Regelungsentwurf darzustellen

  • Durch Kombination mit weiteren LTI-Modellen ein komplexeres System darzustellen

Erstellung

Beschreibung

sys = ss(A,B,C,D) erstellt ein zeitkontinuierliches Zustandsraummodell-Objekt mit der folgenden Form:

x˙=Ax+Buy=Cx+Du

Betrachten Sie beispielsweise eine Regelstrecke mit Nx Zuständen, Ny Ausgängen und Nu Eingängen. Die Zustandsraum-Matrizen sind:

  • A ist eine Nx-mal-Nx-Matrix mit reellen oder komplexen Werten.

  • B ist eine Nx-mal-Nu-Matrix mit reellen oder komplexen Werten.

  • C ist eine Ny-mal-Nx-Matrix mit reellen oder komplexen Werten.

  • D ist eine Ny-mal-Nu-Matrix mit reellen oder komplexen Werten.

Beispiel

sys = ss(A,B,C,D,ts) erstellt ein zeitdiskretes Zustandsraummodell-Objekt der folgenden Form mit der Abtastzeit ts (in Sekunden):

x[n+1]=Ax[n]+Bu[n]y[n]=Cx[n]+Du[n]

Um die Abtastzeit nicht angeben zu müssen, setzen Sie ts auf -1.

Beispiel

sys = ss(A,B,C,D,ltiSys) erstellt ein Zustandsraummodell mit Eigenschaften wie Eingangs- und Ausgangsnamen, internen Verzögerungen und Abtastzeitwerten, die vom Modell ltisys geerbt werden.

Beispiel

sys = ss(D) erstellt ein Zustandsraummodell, das den statischen Verstärkungsfaktor D darstellt. Das Ausgangs-Zustandsraummodell ist äquivalent zu ss([],[],[],D).

Beispiel

sys = ss(___,Name,Value) legt die Eigenschaften des Zustandsraummodells mit einem oder mehreren Name,Value-Paar-Argumenten für eine beliebige vorherige Eingang-Argument-Kombination fest.

Beispiel

sys = ss(ltiSys) konvertiert das dynamische Systemmodell ltiSys in ein Zustandsraummodell. Wenn ltiSys optimierbare oder unsichere Elemente enthält, verwendet ss die aktuellen Werte bzw. Nennwerte für diese Elemente.

Beispiel

sys = ss(ltiSys,component) konvertiert die gemessene Komponente, die Rauschkomponente oder beide der angegebenen component eines identifizierten linearen zeitinvarianten Modells (LTI) ltiSys zu einer ss-Objektform. Verwenden Sie diese Syntax nur, wenn es sich bei ltiSys um ein identifiziertes lineares zeitinvariantes (LTI) Modell handelt, wie beispielsweise ein idtf (System Identification Toolbox)-, idss (System Identification Toolbox)-, idproc (System Identification Toolbox)-, idpoly (System Identification Toolbox)- oder idgrey (System Identification Toolbox)-Objekt.

Beispiel

sys = ss(ssSys,'minimal') gibt die minimale Zustandsraum-Realisierung ohne unkontrollierbare oder nicht beobachtbare Zustände aus. Die Realisierung ist äquivalent zu minreal(ss(sys)), wobei die Matrix A die kleinste mögliche Dimension aufweist.

Die Konvertierung in Zustandsraum-Form ist im Fall eines SISO nicht eindeutig definiert. Ebenfalls ist nicht garantiert, dass im MIMO-Fall eine minimale Realisierung erzeugt wird. Weitere Informationen finden Sie unter Recommended Working Representation.

sys = ss(ssSys,'explicit') gibt eine explizite Zustandsraum-Realisierung (E = I) des Zustandsraummodells des dynamischen Systems ssSys aus. ss gibt einen Fehler aus, wenn ssSys nicht korrekt ist. Weitere Informationen zur expliziten Zustandsraum-Realisierung finden Sie unter Zustandsraummodelle.

Beispiel

Eingangsargumente

alle erweitern

Zustandsmatrix, angegeben als Nx-mal-Nx-Matrix, wobei Nx die Anzahl der Zustände ist. Dieser Eingang legt den Wert der Eigenschaft A fest.

Eingang-zu-Zustandsmatrix, angegeben als Nx-mal-Nu-Matrix, wobei Nx die Anzahl der Zustände und Nu die Anzahl der Eingänge ist. Dieser Eingang legt den Wert der Eigenschaft B fest.

Zustand-Ausgangs-Matrix, angegeben als Ny-mal-Nx-Matrix, wobei Nx der Anzahl der Zustände und Ny der Anzahl der Ausgänge entspricht. Dieser Eingang legt den Wert der Eigenschaft C fest.

Feedthrough-Matrix, angegeben als Ny-mal-Nu-Matrix, wobei Ny der Anzahl der Ausgänge und Nu der Anzahl der Eingänge entspricht. Dieser Eingang legt den Wert der Eigenschaft D fest.

Abtastzeit, angegeben als ein Skalar. Weitere Informationen finden Sie beim Abschnitt zur Eigenschaft Ts.

Dynamisches System, das in die Zustandsraumform konvertiert werden soll, angegeben als dynamisches SISO- oder MIMO-Systemmodell oder Array dynamischer Systemmodelle. Die von Ihnen konvertierbaren dynamischen Systeme umfassen:

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

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

    Das resultierend Zustandsraummodell geht von den folgenden Annahmen aus:

    • aktuelle Werte der optimierbaren Komponenten für optimierbare Regelungsentwurf-Blöcke

    • nominale Modellwerte für unsichere Regelungsentwurf-Blöcke

  • Identifizierte LTI-Modelle wie idtf (System Identification Toolbox)-, idss (System Identification Toolbox)-, idproc (System Identification Toolbox)-, idpoly (System Identification Toolbox)- und idgrey (System Identification Toolbox)-Modelle. Um die zu konvertierende Komponente des identifizierten Modells auszuwählen, geben Sie component an. Wenn Sie in component keine Komponente angeben, konvertiert ss standardmäßig die gemessene Komponente des identifizierten Modells. (Für die Verwendung von identifizierten Modellen ist die Software System Identification Toolbox™ erforderlich.)

Zu konvertierende Komponente des identifizierten Modells, angegeben als eine der folgenden Optionen:

  • 'measured' – konvertiert die gemessene Komponente von sys.

  • 'noise' – konvertiert die Rauschkomponente von sys

  • 'augmented' – konvertiert sowohl die gemessene als auch die Rauschkomponente von sys.

component gilt nur, wenn sys ein identifiziertes LTI-Modell ist.

Weitere Informationen über identifizierte LTI-Modelle und ihre Mess- und Rauschkomponenten finden Sie unter Identified LTI Models.

Dynamisches Systemmodell, das in minimale Realisierung oder explizite Form konvertiert werden soll, angegeben als ss-Modellobjekt.

Ausgangsargumente

alle erweitern

Ausgang des Systemmodells, geliefert als:

  • Ein Zustandsraum-Modellobjekt (ss), wenn die Eingänge A, B, C und D numerische Matrizen sind oder aus einem anderen Modellobjekt-Typ konvertiert werden.

  • Ein verallgemeinertes Zustandsraum-Modellobjekt (genss), wenn eine oder mehr der Matrizen A, B, C und D optimierbare Parameter enthalten, wie z. B. realp-Parameter oder verallgemeinerte Matrizen (genmat). Ein Beispiel hierzu finden Sie unter Erstellen eines Zustandsraummodells mit festen und optimierbaren Parametern.

  • Ein verallgemeinertes Zustandsraum-Modellobjekt (uss), wenn einer oder mehr der Eingänge A, B, C und D unsichere Matrizen enthält. Für die Verwendung unsicherer Modelle ist die Software Robust Control Toolbox erforderlich.

Eigenschaften

alle erweitern

Zustandsmatrix, angegeben als Nx-mal-Nx-Matrix, wobei Nx die Anzahl der Zustände ist. Die Zustandsmatrix kann auf zahlreiche Weisen dargestellt werden, abhängig von der gewünschten Zustandsraummodell-Realisierung wie:

  • Kanonische Modellform

  • Begleitende kanonische Form

  • Beobachtbare kanonische Form

  • Regelbare kanonische Form

Weitere Informationen finden Sie unter State-Space Realizations.

Eingang-zu-Zustandsmatrix, angegeben als Nx-mal-Nu-Matrix, wobei Nx die Anzahl der Zustände und Nu die Anzahl der Eingänge ist.

Zustand-Ausgangs-Matrix, angegeben als Ny-mal-Nx-Matrix, wobei Nx der Anzahl der Zustände und Ny der Anzahl der Ausgänge entspricht.

Feedthrough-Matrix, angegeben als Ny-mal-Nu-Matrix, wobei Ny der Anzahl der Ausgänge und Nu der Anzahl der Eingänge entspricht. D wird auch als statische Verstärkungsmatrix bezeichnet, die das Verhältnis von Ausgang zu Eingang unter Steady-State-Bedingungen darstellt.

Matrix für implizite Zustandsraummodelle oder Deskriptor-Zustandsraummodelle, angegeben als Nx-mal-Nx-Matrix. E ist standardmäßig leer, was bedeutet, dass die Zustandsgleichung explizit ist. Um eine implizite Zustandsgleichung E dx/dt = Ax + Bu festzulegen, setzen Sie diese Eigenschaft auf eine quadratische Matrix mit derselben Größe wie A. Unter dss finden Sie weiter Informationen zur Erstellung von Deskriptor-Zustandsraummodellen.

Seit R2024a

Modell-Offsets, angegeben als Struktur mit den folgenden Feldern.

FeldBeschreibung
uEingangs-Offsets, angegeben als Vektor mit einer Länge, die der Anzahl der Eingänge entspricht.
yAusgangs-Offsets, angegeben als Vektor mit einer Länge, die der Anzahl der Ausgänge entspricht.
xZustands-Offsets, angegeben als Vektor mit einer Länge, die der Anzahl der Zustände entspricht.
dxZustandsableitungs-Offsets, angegeben als Vektor mit einer Länge, die der Anzahl der Zustände entspricht.

Setzen Sie bei Zustandsraum-Modellarrays Offsets auf ein Struktur-Array mit denselben Dimensionen wie das Modellarray.

Wenn Sie das nicht lineare Modell

x˙=f(x,u),y=g(x,u)

um einen Betriebspunkt (x0,u0) linearisieren, ist das resultierende Modell ein Zustandsraummodell mit den folgenden Offsets:

x˙=f(x0,u0)δ0+A(xx0)+B(uu0)y=g(x0,u0)y0+C(xx0)+D(uu0),

Dabei gilt:

A=fx(x0,u0),B=fu(x0,u0),C=gx(x0,u0),D=gu(x0,u0).

Damit die Linearisierung eine gute Annäherung an die nicht linearen Maps darstellt, muss sie die Offsets δ0, x0, u0 und y0 umfassen. Der Befehl linearize (Simulink Control Design) gibt sowohl A, B, C, D als auch die Offsets aus, wenn die Option StoreOffset verwendet wird.

Diese Eigenschaft unterstützt Sie bei der Verwaltung von Linearisierungs-Offsets und der Verwendung bei Operationen wie der Antwort-Simulation, Modellverbindungen und Modelltransformationen.

Logischer Wert, der angibt, ob die Skalierung aktiviert oder deaktiviert ist, angegeben als 0 oder 1.

Ist Scaled auf 0 (deaktiviert) gesetzt, skalieren die meisten numerischen Algorithmen, die auf das Zustandsraummodell sys wirken, den Zustandsvektor automatisch, um die numerische Präzision zu verbessern. Sie können diese automatische Skalierung verhindern, indem Sie Scaled auf 1 (aktiviert) setzen.

Weitere Informationen über die Skalierung finden Sie unter prescale.

Zustandsnamen, angegeben über eine der folgenden Methoden:

  • Zeichenvektor – Für Modelle erster Ordnung, beispielsweise 'velocity'

  • Zellenarray aus Zeichenvektoren – Für Modelle mit zwei oder mehr Zuständen

StateName ist bei allen Zuständen standardmäßig leer ' '.

Zustandspfad für die Zustandsblock-Pfadverwaltung bei der Linearisierung, angegeben über eine der folgenden Methoden:

  • Zeichenvektor – Für Modelle erster Ordnung

  • Zellenarray aus Zeichenvektoren – Für Modelle mit zwei oder mehr Zuständen

StatePath ist bei allen Zuständen standardmäßig leer ' '.

Zustandseinheiten, angegeben über eine der folgenden Methoden:

  • Zeichenvektor – Für Modelle erster Ordnung, beispielsweise 'm/s'

  • Zellenarray aus Zeichenvektoren – Für Modelle mit zwei oder mehr Zuständen

Verwenden Sie StateUnit, um die Einheiten jedes Zustands nachzuverfolgen. StateUnit hat keine Auswirkungen auf das Verhalten des Systems. StateUnit ist bei allen Zuständen standardmäßig leer ' '.

Interne Verzögerungen im Modell, angegeben als Vektor. Interne Verzögerungen treten beispielsweise auf, wenn Feedbackschleifen in Systemen mit Verzögerungen geschlossen werden oder verzögerte Systeme in Reihe oder parallel geschaltet werden. Weitere Informationen zu internen Verzögerungen finden Sie unter Closing Feedback Loops with Time Delays.

Bei zeitkontinuierlichen Modellen werden interne Verzögerungen in Zeiteinheiten ausgedrückt, angegeben durch die Eigenschaft TimeUnit des Modells. Bei zeitdiskreten Modellen werden interne Verzögerungen in ganzzahligen Vielfachen der Abtastzeit Ts ausgedrückt. InternalDelay = 3 ist beispielsweise eine Verzögerung um drei Abtastperioden.

Sie können die Werte der internen Verzögerungen anhand der Eigenschaft InternalDelay modifizieren. Die Anzahl Einträge in sys.InternalDelay kann jedoch nicht geändert werden, da es sich um eine strukturelle Eigenschaft des Modells handelt.

Eingangsverzögerung für jeden Eingangskanal, die als eine der folgenden Optionen angegeben wird:

  • Skalar: Geben Sie die Eingangsverzögerung für ein SISO-System oder die gleiche Transportverzögerung für alle Eingänge eines Systems mit mehreren Eingängen an.

  • Nux1-Vektor: Geben Sie separate Eingangsverzögerungen für die Eingänge eines Systems mit mehreren Eingängen an, wobei Nu die Anzahl der Eingänge ist.

Für zeitkontinuierliche Systeme geben Sie die Eingangsverzögerungen in der Zeiteinheit an, die durch die Eigenschaft TimeUnit festgelegt ist. Für zeitdiskrete Systeme geben Sie die Eingangsverzögerungen in ganzzahligen Vielfachen der Abtastzeit Ts an.

Weitere Informationen finden Sie unter Time Delays in Linear Systems.

Ausgangsverzögerung für jeden Ausgangskanal, die als eine der folgenden Optionen angegeben wird:

  • Skalar: Geben Sie die Ausgangsverzögerung für ein SISO-System oder die gleiche Verzögerung für alle Ausgänge eines Systems mit mehreren Ausgängen an.

  • Nyx1-Vektor: Geben Sie separate Ausgangsverzögerungen für die Ausgänge eines Systems mit mehreren Ausgängen an, wobei Ny die Anzahl der Ausgänge ist.

Für zeitkontinuierliche Systeme geben Sie die Ausgangsverzögerungen in der Zeiteinheit an, die durch die Eigenschaft TimeUnit festgelegt ist. Für zeitdiskrete Systeme geben Sie die Ausgangsverzögerungen in ganzzahligen Vielfachen der Abtastzeit Ts an.

Weitere Informationen finden Sie unter Time Delays in Linear Systems.

Abtastzeit, angegeben als:

  • 0 bei zeitkontinuierlichen Systemen.

  • Ein positiver Skalar, der die Abtastzeit eines zeitdiskreten Systems angibt. Geben Sie Ts in der Zeiteinheit an, die durch die Eigenschaft TimeUnit festgelegt ist.

  • -1 für ein zeitdiskretes System mit einer nicht festgelegten Abtastzeit.

Hinweis

Eine Änderung von Ts bewirkt keine Diskretisierung oder Neuabtastung des Modells. Verwenden Sie zur Konvertierung zwischen zeitkontinuierlichen und zeitdiskreten Systemen c2d und d2c. Verwenden Sie d2d, um die Abtastzeit eines zeitdiskreten Systems zu ändern.

Die Zeitvariablen können folgende Einheiten haben:

  • 'nanoseconds'

  • 'microseconds'

  • 'milliseconds'

  • 'seconds'

  • 'minutes'

  • 'hours'

  • 'days'

  • 'weeks'

  • 'months'

  • 'years'

Die Änderung von TimeUnit hat keine Auswirkungen auf andere Eigenschaften, ändert aber das gesamte Systemverhalten. Verwenden Sie chgTimeUnit, um zwischen Zeiteinheiten zu konvertieren, ohne das Systemverhalten zu ändern.

Namen der Eingangskanäle, die als eine der folgenden Optionen angegeben werden:

  • Zeichenvektor, für Modelle mit einem Eingang.

  • Zellenarray von Zeichenvektoren, für Modelle mit mehreren Eingängen.

  • '', ohne Angabe von Namen, für beliebige Eingangskanäle.

Sie können aber auch Eingangsnamen für Modelle mit mehreren Eingängen mithilfe der automatischen Vektorerweiterung zuweisen. Wenn sys zum Beispiel ein Modell mit zwei Eingängen ist, geben Sie Folgendes ein.

sys.InputName = 'controls';

Die Eingangsnamen werden automatisch zu {'controls(1)';'controls(2)'} erweitert.

Sie können die Kurzschreibweise u verwenden, um auf die Eigenschaft InputName zu verweisen. Beispielsweise ist sys.u gleichbedeutend mit sys.InputName.

Verwenden Sie InputName, um:

  • Kanäle auf der Modellanzeige und in Diagrammen zu identifizieren.

  • Subsysteme von MIMO-Systemen zu extrahieren.

  • Verbindungspunkte festzulegen, wenn Sie Modelle miteinander verbinden.

Die Eingangskanäle können folgende Einheiten haben:

  • Zeichenvektor, für Modelle mit einem Eingang.

  • Zellenarray von Zeichenvektoren, für Modelle mit mehreren Eingängen.

  • '', ohne Angabe von Einheiten, für beliebige Eingangskanäle.

Verwenden Sie InputUnit, um die Einheiten des Eingangssignals anzugeben. InputUnit hat keine Auswirkung auf das Systemverhalten.

Eingangskanalgruppen, angegeben als Struktur. Verwenden Sie InputGroup, um die Eingangskanäle von MIMO-Systemen in Gruppen einzuteilen und jede Gruppe mit einem Namen zu versehen. Die Feldnamen von InputGroup sind die Gruppennamen und die Feldwerte sind die Eingangskanäle der einzelnen Gruppen. Geben Sie zum Beispiel Folgendes ein, um Eingangsgruppen mit den Namen controls und noise zu erstellen, die die Eingangskanäle 1 und 2 bzw. 3 und 5 enthalten.

sys.InputGroup.controls = [1 2];
sys.InputGroup.noise = [3 5];

Sie können dann das Subsystem von den controls-Eingängen auf alle Ausgänge extrahieren, indem Sie Folgendes verwenden:

sys(:,'controls')

Standardmäßig ist InputGroup eine Struktur ohne Felder.

Namen der Ausgangskanäle, die als eine der folgenden Optionen angegeben werden:

  • Zeichenvektor, für Modelle mit einem Ausgang.

  • Zellenarray von Zeichenvektoren, für Modelle mit mehreren Ausgängen.

  • '', ohne Angabe von Namen, für beliebige Ausgangskanäle.

Sie können aber auch Ausgangsnamen für Modelle mit mehreren Ausgängen mithilfe der automatischen Vektorerweiterung zuweisen. Wenn sys zum Beispiel ein Modell mit zwei Ausgängen ist, geben Sie Folgendes ein:

sys.OutputName = 'measurements';

Die Ausgangsnamen werden automatisch zu {'measurements(1)';'measurements(2)'} erweitert.

Sie können auch die Kurzschreibweise y verwenden, um auf die Eigenschaft OutputName zu verweisen. Beispielsweise ist sys.y gleichbedeutend mit sys.OutputName.

Verwenden Sie OutputName, um:

  • Kanäle auf der Modellanzeige und in Diagrammen zu identifizieren.

  • Subsysteme von MIMO-Systemen zu extrahieren.

  • Verbindungspunkte festzulegen, wenn Sie Modelle miteinander verbinden.

Die Ausgangskanäle können folgende Einheiten haben:

  • Zeichenvektor, für Modelle mit einem Ausgang.

  • Zellenarray von Zeichenvektoren, für Modelle mit mehreren Ausgängen.

  • '', ohne Angabe von Einheiten, für beliebige Ausgangskanäle.

Verwenden Sie OutputUnit, um die Einheiten des Ausgangssignals anzugeben. OutputUnit hat keine Auswirkung auf das Systemverhalten.

Ausgangskanalgruppen, angegeben als Struktur. Verwenden Sie OutputGroup, um die Ausgangskanäle von MIMO-Systemen in Gruppen einzuteilen und jede Gruppe mit einem Namen zu versehen. Die Feldnamen von OutputGroup sind die Gruppennamen und die Feldwerte sind die Ausgangskanäle der einzelnen Gruppen. Geben Sie zum Beispiel Folgendes ein, um Ausgangsgruppen mit den Namen temperature und measurement zu erstellen, die die Ausgangskanäle 1 bzw. 3 bzw. 5 enthalten.

sys.OutputGroup.temperature = [1];
sys.OutputGroup.measurement = [3 5];

Sie können dann das Subsystem von allen Eingängen in die measurement-Ausgänge extrahieren, indem Sie Folgendes verwenden:

sys('measurement',:)

Standardmäßig ist OutputGroup eine Struktur ohne Felder.

Systemname, angegeben als Zeichenvektor. Zum Beispiel: 'system_1'.

Vom Benutzer angegebener Text, den Sie mit dem System verknüpfen möchten, angegeben als Zeichenvektor oder Zellenarray von Zeichenvektoren. Zum Beispiel: 'System is MIMO'.

Benutzerspezifische Daten, die Sie mit dem System verknüpfen möchten, angegeben als beliebiger MATLAB-Datentyp.

Abtastgitter für Modellarrays, angegeben als Struktur-Array.

Verwenden Sie SamplingGrid, um die Variablenwerte zu verfolgen, die mit jedem Modell in einem Modellarray verbunden sind, einschließlich identifizierter linearer zeitinvarianter Modellarrays (IDLTI-Modellarrays).

Setzen Sie die Feldnamen der Struktur auf die Namen der Abtastvariablen. Setzen Sie die Feldwerte auf die Werte der Abtastvariablen, die mit jedem Modell im Array verbunden sind. Alle Abtastvariablen müssen numerische Skalare sein und alle Arrays der Abtastwerte müssen den Dimensionen des Modellarrays entsprechen.

Sie können zum Beispiel ein 11x1-Array mit linearen Modellen, sysarr, erstellen, indem Sie Schnappschüsse eines linearen zeitvariablen Systems zu den Zeiten t = 0:10 machen. Der folgende Code speichert die Zeitabtastungen mit den linearen Modellen.

 sysarr.SamplingGrid = struct('time',0:10)

In ähnlicher Weise können Sie ein 6x9-Modellarray M erstellen, indem Sie zwei Variablen, zeta und w, unabhängig voneinander abtasten. Der folgende Code ordnet die (zeta,w)-Werte M zu.

[zeta,w] = ndgrid(<6 values of zeta>,<9 values of w>)
M.SamplingGrid = struct('zeta',zeta,'w',w)

Wenn Sie M anzeigen, enthält jeder Eintrag im Array die entsprechenden Werte für zeta und w.

M
M(:,:,1,1) [zeta=0.3, w=5] =
 
        25
  --------------
  s^2 + 3 s + 25
 

M(:,:,2,1) [zeta=0.35, w=5] =
 
         25
  ----------------
  s^2 + 3.5 s + 25
 
...

Bei Modellarrays, die durch die Linearisierung eines Simulink®-Modells bei mehreren Parameterwerten oder Betriebspunkten erzeugt werden, füllt die Software das SamplingGrid automatisch mit den Variablenwerten auf, die den einzelnen Einträgen im Array entsprechen. Zum Beispiel füllen die Simulink Control Design™-Befehle linearize (Simulink Control Design) und slLinearizer (Simulink Control Design) das SamplingGrid automatisch auf.

Standardmäßig handelt es sich bei SamplingGrid um eine Struktur ohne Felder.

Objektfunktionen

Die folgenden Listen enthalten eine repräsentative Teilmenge der Funktionen, die Sie mit ss-Modellobjekten verwenden können. Im Allgemeinen ist jede Funktion, die auf Dynamische Systemmodelle anwendbar ist, auch auf ein ss-Objekt anwendbar.

alle erweitern

stepSprungantwort eines dynamischen Systems
impulseImpulse response plot of dynamic system; impulse response data
lsimCompute time response simulation data of dynamic system to arbitrary inputs
bodeBode-Frequenzgang eines dynamischen Systems
nyquistNyquist-Antwort eines dynamischen Systems
nicholsNichols response of dynamic system
bandwidthFrequency response bandwidth
polePoles of dynamic system
zeroZeros and gain of SISO dynamic system
pzplotPlot pole-zero map of dynamic system
marginAmplitudenrand, Phasenrand und Übergangsfrequenzen
zpkZero-pole-gain model
tfTransferfunktionsmodelle
c2dKonvertieren eines Modells von kontinuierlicher zu diskreter Zeit
d2cConvert model from discrete to continuous time
d2dResample discrete-time model
feedbackFeedback-Verbindung mehrere Modelle
connectBlock diagram interconnections of dynamic systems
seriesReihenschaltung von zwei Modellen
parallelParallel connection of two models
pidtunePID tuning algorithm for linear plant model
rlocusWurzelort dynamischer Systeme
lqrEntwurf eines linear-quadratischen Reglers (LQR)
lqgLinear-Quadratic-Gaussian (LQG) design
lqiLinear-quadratisch-integrale Steuerung
kalmanDesign Kalman filter for state estimation

Beispiele

alle reduzieren

Erstellen Sie das SISO-Zustandsraummodell, das durch die folgenden Zustandsraum-Matrizen definiert ist:

A=[-1.5-210]B=[0.50]C=[01]D=0

Geben Sie die Matrizen A, B, C und D an und erstellen Sie das Zustandsraummodell.

A = [-1.5,-2;1,0];
B = [0.5;0];
C = [0,1];
D = 0;
sys = ss(A,B,C,D)
sys =
 
  A = 
         x1    x2
   x1  -1.5    -2
   x2     1     0
 
  B = 
        u1
   x1  0.5
   x2    0
 
  C = 
       x1  x2
   y1   0   1
 
  D = 
       u1
   y1   0
 
Continuous-time state-space model.
Model Properties

Erstellen Sie ein Zustandsraummodell mit einer Abtastzeit von 0,25 Sekunden und den folgenden Zustandsraum-Matrizen:

A=[01-5-2]B=[03]C=[01]D=[0]

Geben Sie die Zustandsraum-Matrizen an.

A = [0 1;-5 -2];
B = [0;3];
C = [0 1];
D = 0;

Geben Sie die Abtastzeit an.

Ts = 0.25;

Erstellen Sie das Zustandsraummodell.

sys = ss(A,B,C,D,Ts);

Betrachten Sie für dieses Beispiel einen Würfel, der sich auf einer Ecke dreht und einen Trägheitstensor J und eine Dämpfungskraft F mit Größe 0,2 aufweist. Der Eingang des Systems ist das Drehmoment, die Ausgänge sind die Winkelgeschwindigkeiten. Die Zustandsraum-Matrizen für den Würfel sind:

A=-J-1F,B=J-1,C=I,D=0,where,J=[8-3-3-38-3-3-38]andF=[0.20000.20000.2]

Legen Sie die Matrizen A, B, C und D fest und erstellen Sie das zeitkontinuierliche Zustandsraummodell.

J = [8 -3 -3; -3 8 -3; -3 -3 8];
F = 0.2*eye(3);
A = -J\F;
B = inv(J);
C = eye(3);
D = 0;
sys = ss(A,B,C,D)
sys =
 
  A = 
             x1        x2        x3
   x1  -0.04545  -0.02727  -0.02727
   x2  -0.02727  -0.04545  -0.02727
   x3  -0.02727  -0.02727  -0.04545
 
  B = 
           u1      u2      u3
   x1  0.2273  0.1364  0.1364
   x2  0.1364  0.2273  0.1364
   x3  0.1364  0.1364  0.2273
 
  C = 
       x1  x2  x3
   y1   1   0   0
   y2   0   1   0
   y3   0   0   1
 
  D = 
       u1  u2  u3
   y1   0   0   0
   y2   0   0   0
   y3   0   0   0
 
Continuous-time state-space model.
Model Properties

sys ist MIMO, da das System 3 Eingänge und 3 Ausgänge über die Matrizen C und D umfasst. Weitere Informationen zu MIMO-Zustandsraummodellen finden Sie unter MIMO State-Space Models.

Erstellen Sie ein Zustandsraummodell mithilfe der folgenden zeitdiskreten Zustandsmatrizen mit mehreren Eingängen und Ausgängen und einer Abtastzeit von ts = 0.2 Sekunden:

A=[-700-10]B=[5002]C=[1-4-40.5]D=[0-220]

Geben Sie die Zustandsraum-Matrizen an und erstellen Sie das zeitdiskrete MIMO-Zustandsraummodell.

A = [-7,0;0,-10];
B = [5,0;0,2];
C = [1,-4;-4,0.5];
D = [0,-2;2,0];
ts = 0.2;
sys = ss(A,B,C,D,ts)
sys =
 
  A = 
        x1   x2
   x1   -7    0
   x2    0  -10
 
  B = 
       u1  u2
   x1   5   0
   x2   0   2
 
  C = 
        x1   x2
   y1    1   -4
   y2   -4  0.5
 
  D = 
       u1  u2
   y1   0  -2
   y2   2   0
 
Sample time: 0.2 seconds
Discrete-time state-space model.
Model Properties

Erstellen Sie die Zustandsraummatrizen und legen Sie die Abtastzeit fest.

A = [-0.2516 -0.1684;2.784 0.3549];
B = [0;3];
C = [0 1];
D = 0;
Ts = 0.05;

Erstellen Sie das Zustandsraummodell und geben Sie über Name-Wert-Paare die Namen für Zustände und Eingänge an.

sys = ss(A,B,C,D,Ts,'StateName',{'Position' 'Velocity'},...
    'InputName','Force');

Die Anzahl der Zustands- und Eingangsnamen muss den Dimensionen von A, B, C und D entsprechen.

Die Eingänge und Ausgänge zu benennen, kann nützlich sein, wenn Sie mit den Antwortdiagrammen für MIMO-Systeme arbeiten.

step(sys)

MATLAB figure

Beachten Sie den Eingangsnamen Force im Titel des Schrittantwort-Diagramms.

Für dieses Beispiel erstellen Sie ein Zustandsraummodell mit denselben Zeit- und Eingangseinheit-Eigenschaften, die von einem anderen Zustandsraummodell geerbt wurden. Betrachten Sie die folgenden Zustandsraummodelle:

A1=[-1.5-210]B1=[0.50]C1=[01]D1=5A2=[7-102]B2=[0.852]C2=[1014]D2=2

Erstellen Sie zunächst ein Zustandsraummodell sys1, dessen Eigenschaften TimeUnit und InputUnit auf „minutes“ gesetzt sind.

A1 = [-1.5,-2;1,0];
B1 = [0.5;0];
C1 = [0,1];
D1 = 5;
sys1 = ss(A1,B1,C1,D1,'TimeUnit','minutes','InputUnit','minutes');

Überprüfen Sie, ob die Zeit- und Eingangseinheit-Eigenschaften von sys1 auf „minutes“ gesetzt sind.

propValues1 = [sys1.TimeUnit,sys1.InputUnit]
propValues1 = 1×2 cell
    {'minutes'}    {'minutes'}

Erstellen Sie das zweite Zustandsraummodell mit den von sys1 geerbten Eigenschaften.

A2 = [7,-1;0,2];
B2 = [0.85;2];
C2 = [10,14];
D2 = 2;
sys2 = ss(A2,B2,C2,D2,sys1);

Überprüfen Sie, ob die Zeit- und Eingangseinheit-Eigenschaften von sys2 von sys1 geerbt wurden.

propValues2 = [sys2.TimeUnit,sys2.InputUnit]
propValues2 = 1×2 cell
    {'minutes'}    {'minutes'}

In diesem Beispiel erstellen Sie ein MIMO-Zustandsraummodell mit statischem Verstärkungsfaktor.

Betrachten Sie die folgende statische Verstärkungsmatrix mit zwei Eingängen und zwei Ausgängen:

D=[2435]

Legen Sie die Verstärkungsmatrix fest und erstellen Sie das Zustandsraummodell mit statischem Verstärkungsfaktor.

D = [2,4;3,5];
sys1 = ss(D)
sys1 =
 
  D = 
       u1  u2
   y1   2   4
   y2   3   5
 
Static gain.
Model Properties

Berechnen Sie das Zustandsraummodell der folgenden Transferfunktion:

H(s)=[s+1s3+3s2+3s+2s2+3s2+s+1]

Erstellen Sie das Transferfunktionsmodell.

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

Konvertieren Sie dieses Modell zu einem Zustandsraummodell.

sys = ss(H);

Untersuchen Sie die Größe des Zustandsraummodells.

size(sys)
State-space model with 2 outputs, 1 inputs, and 5 states.

Die Anzahl Zustände entspricht der kumulativen Ordnung der SISO-Einträge unter H(s).

Um eine minimale Realisierung von H(s) zu erfassen, geben Sie folgendes ein

sys = ss(H,'minimal');
size(sys)
State-space model with 2 outputs, 1 inputs, and 3 states.

Das resultierende Modell hat die Ordnung 3, die minimal erforderliche Anzahl Zustände, um H(s) darzustellen. Um diese Anzahl Zustände zu erlangen, ordnen Sie H(s) als Produkt eines Systems erster Ordnung und eines Systems zweiter Ordnung um.

H(s)=[1s+2001][s+1s2+s+1s2+3s2+s+1]

In diesem Beispiel extrahieren Sie die gemessenen Komponenten und die Rauschkomponenten eines identifizierten Polynommodells in zwei separate Zustandsraummodelle.

Laden Sie das Box-Jenkins-Polynommodell ltiSys in identifiedModel.mat.

load('identifiedModel.mat','ltiSys');

ltiSys ist ein identifiziertes zeitdiskretes Modell der Form: y(t)=BFu(t)+CDe(t), wobei BF die gemessene Komponente und CD die Rauschkomponente darstellt.

Extrahieren Sie die gemessenen Komponenten und die Rauschkomponenten als Zustandsraummodelle.

sysMeas = ss(ltiSys,'measured') 
sysMeas =
 
  A = 
            x1       x2
   x1    1.575  -0.6115
   x2        1        0
 
  B = 
        u1
   x1  0.5
   x2    0
 
  C = 
            x1       x2
   y1  -0.2851   0.3916
 
  D = 
       u1
   y1   0
 
  Input delays (sampling periods): 2 
 
Sample time: 0.04 seconds
Discrete-time state-space model.
Model Properties
sysNoise = ss(ltiSys,'noise')
sysNoise =
 
  A = 
           x1      x2      x3
   x1   1.026   -0.26  0.3899
   x2       1       0       0
   x3       0     0.5       0
 
  B = 
       v@y1
   x1  0.25
   x2     0
   x3     0
 
  C = 
             x1        x2        x3
   y1     0.319  -0.04738   0.07106
 
  D = 
          v@y1
   y1  0.04556
 
Input groups:        
    Name     Channels
    Noise       1    
                     
Sample time: 0.04 seconds
Discrete-time state-space model.
Model Properties

Die gemessene Komponente kann als Regelstreckenmodell dienen, während die Rauschkomponente als Störungsmodell für den Entwurf des Regelungssystems verwendet werden kann.

Erstellen Sie ein Deskriptor-Zustandsraummodell (EI).

a = [2 -4; 4 2];
b = [-1; 0.5];
c = [-0.5, -2];
d = [-1];
e = [1 0; -3 0.5];
sysd = dss(a,b,c,d,e);

Berechnen Sie eine explizite Realisierung des Systems (E = I).

syse = ss(sysd,'explicit')
syse =
 
  A = 
        x1   x2
   x1    2   -4
   x2   20  -20
 
  B = 
       u1
   x1  -1
   x2  -5
 
  C = 
         x1    x2
   y1  -0.5    -2
 
  D = 
       u1
   y1  -1
 
Continuous-time state-space model.
Model Properties

Überprüfen Sie, ob Deskriptor und explizite Realisierungen eine äquivalente Dynamik aufweisen.

bodeplot(sysd,syse,'g--')

MATLAB figure

Dieses Beispiel demonstriert die Erstellung eines Zustandsraumgenss-Modells mit festen und optimierbaren Parametern.

A=[1a+b0ab],B=[-3.01.5],C=[0.30],D=0,

wobei a und b optimierbare Parameter sind, deren Anfangswerte -1 bzw. 3 sind.

Erstellen Sie die optimierbaren Parameter mithilfe von realp.

a = realp('a',-1);
b = realp('b',3);

Legen Sie eine verallgemeinerte Matrix mithilfe der algebraischen Ausdrücke a und b fest.

A = [1 a+b;0 a*b];

A ist eine verallgemeinerte Matrix, deren Eigenschaft Blocks a und b enthält. Der Anfangswert von A ist [1 2;0 -3], ausgehend von den Anfangswerten a und b.

Erstellen Sie die Zustandsraum-Matrizen mit festem Wert.

B = [-3.0;1.5];
C = [0.3 0];
D = 0;

Verwenden Sie ss zum Erstellen des Zustandsraummodells.

sys = ss(A,B,C,D)
Generalized continuous-time state-space model with 1 outputs, 1 inputs, 2 states, and the following blocks:
  a: Scalar parameter, 2 occurrences.
  b: Scalar parameter, 2 occurrences.
Model Properties

Type "ss(sys)" to see the current value and "sys.Blocks" to interact with the blocks.

sys ist ein verallgemeinertes LTI-Modell (genss) mit den optimierbaren Parametern a und b.

Betrachten Sie für dieses Beispiel ein SISO-Zustandsraummodell, das von den folgenden Zustandsraum-Matrizen definiert ist:

A=[-1.5-210]B=[0.50]C=[01]D=0

Erstellen Sie unter Annahme einer Eingangsverzögerung von 0,5 Sekunden und einer Ausgangsverzögerung von 2,5 Sekunden ein Zustandsraummodell-Objekt, um die Matrizen A, B, C und D darzustellen.

A = [-1.5,-2;1,0];
B = [0.5;0];
C = [0,1];
D = 0;
sys = ss(A,B,C,D,'InputDelay',0.5,'OutputDelay',2.5)
sys =
 
  A = 
         x1    x2
   x1  -1.5    -2
   x2     1     0
 
  B = 
        u1
   x1  0.5
   x2    0
 
  C = 
       x1  x2
   y1   0   1
 
  D = 
       u1
   y1   0
 
  Input delays (seconds): 0.5 
  Output delays (seconds): 2.5 
 
Continuous-time state-space model.
Model Properties

Zudem können Sie über den Befehl get alle Eigenschaften eines MATLAB-Objekts darstellen.

get(sys)
                A: [2×2 double]
                B: [2×1 double]
                C: [0 1]
                D: 0
                E: []
          Offsets: []
           Scaled: 0
        StateName: {2×1 cell}
        StatePath: {2×1 cell}
        StateUnit: {2×1 cell}
    InternalDelay: [0×1 double]
       InputDelay: 0.5000
      OutputDelay: 2.5000
        InputName: {''}
        InputUnit: {''}
       InputGroup: [1×1 struct]
       OutputName: {''}
       OutputUnit: {''}
      OutputGroup: [1×1 struct]
            Notes: [0×1 string]
         UserData: []
             Name: ''
               Ts: 0
         TimeUnit: 'seconds'
     SamplingGrid: [1×1 struct]

Weitere Informationen zur Angabe einer Zeitverzögerung für ein LTI-Modell finden Sie unter Specifying Time Delays.

Betrachten Sie für dieses Beispiel ein Zustandsraum-System object™, das die folgenden Zustandsmatrizen darstellt:

A=[-1.2-1.60100010],B=[100],C=[00.51.3],D=0,State-space matrices

Erstellen Sie über den Befehl ss ein Zustandsraum-Objekt sys.

A = [-1.2,-1.6,0;1,0,0;0,1,0];
B = [1;0;0];
C = [0,0.5,1.3];
D = 0;
sys = ss(A,B,C,D);

Berechnen Sie daraufhin das geschlossene Zustandsraummodell für eine negative Einheitsverstärkung und finden Sie die Polstellen des geschlossenen Zustandsraum-System object sysFeedback.

sysFeedback = feedback(sys,1);
P = pole(sysFeedback)
P = 3×1 complex

  -0.2305 + 1.3062i
  -0.2305 - 1.3062i
  -0.7389 + 0.0000i

Die Feedbackschleife für die Einheitsverstärkung ist stabil, da alle Polstellen negative reelle Teile aufweisen. Sie können die Stabilität binär beurteilen, indem Sie die geschlossenen Polstellen untersuchen. In der Praxis ist es oft hilfreicher, die Robustheit (oder Fragilität) der Stabilität zu kennen. Einen Hinweis auf die Robustheit gibt die mögliche Veränderung der Schleifenverstärkung, bevor die Stabilität verloren geht. Sie können das Wurzelort-Diagramm verwenden, um den Bereich der k-Werte mit stabiler Schleife zu schätzen.

rlocus(sys)

MATLAB figure

Veränderungen in der Schleifenverstärkung sind nur ein Aspekt einer robusten Stabilität. Im Allgemeinen bedeutet die nicht perfekte Modellierung der Regelstrecke, dass sowohl Verstärkung als auch Phase nicht genau bekannt sind. Da Modellierungsfehler im Bereich der Verstärkungs-Crossover-Frequenz (Frequenz, bei der die offene Schleifenverstärkung 0 dB beträgt) die schädlichste Auswirkung haben, ist zudem relevant, wie viel Phasenvariation bei dieser Frequenz toleriert wird.

Sie können die Verstärkung und Phasenränder folgendermaßen auf einem Bode-Diagramm darstellen.

bode(sys)
grid

MATLAB figure

Ein detailliertes Beispiel finden Sie unter Bewertung von Amplituden- und Phasenrändern.

In diesem Beispiel entwickeln Sie einen 2-DOF-PID-Regler mit einer Ziel-Bandbreite von 0,75 rad/s für ein System, das von den folgenden Matrizen dargestellt wird:

A=[-0.5-0.110],B=[10],C=[01],D=0.

Erstellen Sie über den Befehl ss ein Zustandsraum-Objekt sys.

A = [-0.5,-0.1;1,0];
B = [1;0];
C = [0,1];
D = 0;
sys = ss(A,B,C,D)
sys =
 
  A = 
         x1    x2
   x1  -0.5  -0.1
   x2     1     0
 
  B = 
       u1
   x1   1
   x2   0
 
  C = 
       x1  x2
   y1   0   1
 
  D = 
       u1
   y1   0
 
Continuous-time state-space model.
Model Properties

Verwenden Sie die Ziel-Bandbreite und pidtune, um einen 2-DOF-Regler zu generieren.

wc = 0.75;
C2 = pidtune(sys,'PID2',wc)
C2 =
 
                       1              
  u = Kp (b*r-y) + Ki --- (r-y) + Kd*s (c*r-y)
                       s              

  with Kp = 0.513, Ki = 0.0975, Kd = 0.577, b = 0.344, c = 0
 
Continuous-time 2-DOF PID controller in parallel form.
Model Properties

Verwenden Sie den Typ 'PID2', um mit pidtune einen 2-DOF-Regler zu generieren, der als pid2-Objekt dargestellt wird. Die Anzeige bestätigt dieses Ergebnis. Die Anzeige zeigt zudem, dass pidtune alle Regler-Koeffizienten optimiert, darunter die Sollpunkt-Gewichte b und c, um Leistung und Robustheit zu balancieren.

Mehr über interaktive PID-Optimierung im Live-Editor finden Sie im Live-Editor-Task Tune PID Controller. Mit diesem Task können Sie einen PID-Regler interaktiv entwickeln und MATLAB Programmcode für Ihr Live-Script automatisch generieren.

Verwenden Sie für die interaktive PID-Optimierung in einer eigenständigen App PID Tuner. Ein Beispiel zur Entwicklung eines Reglers mithilfe der App finden Sie unter Entwurf von PID-Reglern für eine schnelle Referenzverfolgung.

Betrachten Sie eine Zustandsraum-Regelstrecke G mit fünf Eingängen und vier Ausgängen und einen Zustandsraum-Feedbackregler K mit drei Eingängen und zwei Ausgängen. Die Ausgänge 1, 3 und 4 der Regelstrecke G müssen mit den Eingängen des Reglers K verbunden sein; die Regler-Ausgänge müssen mit den Eingängen 4 und 2 der Regelstrecke verbunden sein.

Dieses Beispiel umfasst zwei zeitkontinuierliche Zustandsraummodelle für G und K, dargestellt von den folgenden Matrizen-Sätzen:

AG=[-30.40.3-0.5-2.8-0.80.20.8-3],BG=[0.400.30.20-0.2-10.1-0.9-0.50.60.90.50.20],CG=[0-0.1-10-0.21.6-0.71.51.2-1.4-0.20],DG=[0000-100.4-0.700.900.30000.20000]

AK=[-0.22.10.7-2.2-0.1-2.2-0.42.3-0.2],BK=[-0.1-2.1-0.3-0.100.6100.8],CK=[-100-0.4-0.20.3],DK=[00000-1.2]

AG = [-3,0.4,0.3;-0.5,-2.8,-0.8;0.2,0.8,-3];
BG = [0.4,0,0.3,0.2,0;-0.2,-1,0.1,-0.9,-0.5;0.6,0.9,0.5,0.2,0];
CG = [0,-0.1,-1;0,-0.2,1.6;-0.7,1.5,1.2;-1.4,-0.2,0];
DG = [0,0,0,0,-1;0,0.4,-0.7,0,0.9;0,0.3,0,0,0;0.2,0,0,0,0];
sysG = ss(AG,BG,CG,DG)
sysG =
 
  A = 
         x1    x2    x3
   x1    -3   0.4   0.3
   x2  -0.5  -2.8  -0.8
   x3   0.2   0.8    -3
 
  B = 
         u1    u2    u3    u4    u5
   x1   0.4     0   0.3   0.2     0
   x2  -0.2    -1   0.1  -0.9  -0.5
   x3   0.6   0.9   0.5   0.2     0
 
  C = 
         x1    x2    x3
   y1     0  -0.1    -1
   y2     0  -0.2   1.6
   y3  -0.7   1.5   1.2
   y4  -1.4  -0.2     0
 
  D = 
         u1    u2    u3    u4    u5
   y1     0     0     0     0    -1
   y2     0   0.4  -0.7     0   0.9
   y3     0   0.3     0     0     0
   y4   0.2     0     0     0     0
 
Continuous-time state-space model.
Model Properties
AK = [-0.2,2.1,0.7;-2.2,-0.1,-2.2;-0.4,2.3,-0.2];
BK = [-0.1,-2.1,-0.3;-0.1,0,0.6;1,0,0.8];
CK = [-1,0,0;-0.4,-0.2,0.3];
DK = [0,0,0;0,0,-1.2];
sysK = ss(AK,BK,CK,DK)
sysK =
 
  A = 
         x1    x2    x3
   x1  -0.2   2.1   0.7
   x2  -2.2  -0.1  -2.2
   x3  -0.4   2.3  -0.2
 
  B = 
         u1    u2    u3
   x1  -0.1  -2.1  -0.3
   x2  -0.1     0   0.6
   x3     1     0   0.8
 
  C = 
         x1    x2    x3
   y1    -1     0     0
   y2  -0.4  -0.2   0.3
 
  D = 
         u1    u2    u3
   y1     0     0     0
   y2     0     0  -1.2
 
Continuous-time state-space model.
Model Properties

Definieren Sie die Vektoren feedout und feedin auf Grundlage der Eingänge und Ausgänge, die in der Feedbackschleife verbunden werden sollen.

feedin = [4 2];
feedout = [1 3 4];
sys = feedback(sysG,sysK,feedin,feedout,-1)
sys =
 
  A = 
           x1      x2      x3      x4      x5      x6
   x1      -3     0.4     0.3     0.2       0       0
   x2    1.18   -2.56    -0.8    -1.3    -0.2     0.3
   x3  -1.312   0.584      -3    0.56    0.18   -0.27
   x4   2.948  -2.929   -2.42  -0.452   1.974   0.889
   x5   -0.84   -0.11     0.1    -2.2    -0.1    -2.2
   x6   -1.12   -0.26      -1    -0.4     2.3    -0.2
 
  B = 
            u1       u2       u3       u4       u5
   x1      0.4        0      0.3      0.2        0
   x2    -0.44       -1      0.1     -0.9     -0.5
   x3    0.816      0.9      0.5      0.2        0
   x4  -0.2112    -0.63        0        0      0.1
   x5     0.12        0        0        0      0.1
   x6     0.16        0        0        0       -1
 
  C = 
           x1      x2      x3      x4      x5      x6
   y1       0    -0.1      -1       0       0       0
   y2  -0.672  -0.296     1.6    0.16    0.08   -0.12
   y3  -1.204   1.428     1.2    0.12    0.06   -0.09
   y4    -1.4    -0.2       0       0       0       0
 
  D = 
          u1     u2     u3     u4     u5
   y1      0      0      0      0     -1
   y2  0.096    0.4   -0.7      0    0.9
   y3  0.072    0.3      0      0      0
   y4    0.2      0      0      0      0
 
Continuous-time state-space model.
Model Properties
size(sys)
State-space model with 4 outputs, 5 inputs, and 6 states.

sys ist das resultierende geschlossene Zustandsraummodell, das durch Verbindung der festgelegten Eingänge und Ausgänge von G und K erstellt wird.

Seit R2024a

Dieses Beispiel demonstriert die Linearisierung eines Simulink®-Modells und das Speichern der Linearisierungs-Offsets in der Eigenschaft Offsets des Modellobjekts ss.

Öffnen Sie das Simulink-Modell.

mdl = 'watertankNLModel';
open_system(mdl)

Legen Sie die Anfangsbedingung für die Wasserhöhe fest.

h0 = 10;

Legen Sie die linearen Analysepunkte des Modells fest.

io(1) = linio('watertankNLModel/Step',1,'input');
io(2) = linio('watertankNLModel/H',1,'output');

Simulieren Sie das Modell und extrahieren Sie die Betriebspunkte zu den Zeitpunkt-Snapshots.

tlin = [0 15 30];
op = findop(mdl,tlin);

Berechnen Sie das Linearisierungsergebnis und die Offsets.

options = linearizeOptions('StoreOffsets',true);
[linsys,~,info] = linearize(mdl,io,op,options);

Die Funktion gibt ein Array aus Zustandsraummodellen linsys und die entsprechenden Linearisierungs-Offsets in info.Offsets aus.

Die Eigenschaft Offsets des Modellobjekts ss erfordert eine Struktur mit den Feldern u, y, x und dx. Sie können den Ausgang info.Offsets von linearize verwenden, um diese Offsets direkt festzulegen.

linsys.Offsets = info.Offsets;
linsys.Offsets
ans=3×1 struct array with fields:
    dx
    x
    u
    y

Versionsverlauf

Eingeführt vor R2006a

alle erweitern