Hauptinhalt

frd

Frequenzgang-Datenmodell

Beschreibung

Verwenden Sie frd, um reellwertige oder komplexwertige Frequenzgang-Datenmodelle zu erstellen oder um dynamische Systemmodelle in die Frequenzgang-Datenmodell-Form zu konvertieren.

Frequenzgang-Datenmodelle speichern komplexe Frequenzgangdaten mit entsprechenden Frequenzpunkten. Ein Frequenzgang-Datenmodell H(jwi) speichert beispielsweise den Frequenzgang bei jeder Eingangsfrequenz wi, wobei i = 1,…,n. Das frd-Modellobjekt kann SISO- oder MIMO-Frequenzgang-Datenmodelle in kontinuierlicher oder diskreter Zeit darstellen. Weitere Informationen finden Sie unter Frequency Response Data (FRD) Models.

Sie können frd auch verwenden, um verallgemeinerte Frequenzgang-Datenmodelle (genfrd) zu erstellen.

Erstellung

frd-Modelle erhalten Sie wie folgt.

Beschreibung

sys = frd(response,frequency) erstellt zunächst ein zeitkontinuierliches Frequenzgang-Datenmodell (frd), indem die Eigenschaften ResponseData und Frequency angegeben werden. frequency kann sowohl negative als auch positive Frequenzen umfassen.

Beispiel

sys = frd(response,frequency,ts) erstellt ein zeitdiskretes frd-Modell mit der Abtastzeit ts. Um die Abtastzeit nicht angeben zu müssen, setzen Sie ts auf –1.

Beispiel

sys = frd(response,frequency,ltiSys) erstellt ein Frequenzgang-Datenmodell mit Eigenschaften, die vom dynamischen Systemmodell ltiSys geerbt wurden, einschließlich der Abtastzeit.

Beispiel

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

Beispiel

sys = frd(ltiSys,frequency) konvertiert das dynamisches Systemmodell ltiSys in ein Frequenzgang-Datenmodell. frd berechnet den Frequenzgang bei den von frequency angegebenen Frequenzen. sys erbt die Frequenzeinheiten rad/TimeUnit von ltiSys.TimeUnit.

Beispiel

sys = frd(ltiSys,frequency,FrequencyUnits) interpretiert die Frequenzen in den von FrequencyUnit angegebenen Einheiten.

Eingangsargumente

alle erweitern

Frequenzgangdaten, angegeben als Vektor oder mehrdimensionales Array mit komplexen Zahlen.

  • Bei SISO-Systemen geben Sie einen Vektor der Frequenzgangwerte an den in frequency festgelegten Frequenzpunkten an.

  • Bei MIMO-Systemen mit Nu Eingängen und Ny Ausgängen geben Sie ein Ny-mal-Nu-mal-Nf-Array an, wobei Nf die Anzahl der Frequenzpunkte ist.

  • Für ein S1-...mal-Sn-Array aus Modellen mit Nu Eingängen und Ny Ausgängen geben Sie ein mehrdimensionales Array der Größe [Ny Nu Nf S1 ... Sn] an.

    Ein response mit Größe [Ny,Nu,Nf,3,4] stellt beispielsweise die Antwortdaten für ein 3-mal-4-Array aus Modellen dar. Jedes Modell weist Ny Ausgänge, Nu Eingänge und Nf Frequenzpunkte auf.

Dieser Eingang legt die Eigenschaft ResponseData fest.

Frequenzpunkte, die response entsprechen, angegeben als Vektor mit Nf Punkten. frequency kann sowohl positive als auch negative Frequenzen umfassen.

Dieser Eingang legt die Eigenschaft Frequency fest.

Abtastzeit, angegeben als ein Skalar.

Der Eingang legt die Eigenschaft Ts fest.

Dynamisches System, das als dynamisches Systemmodell vom Typ SISO oder MIMO 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, 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 resultierende frd-Modell 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. (Für die Verwendung von identifizierten Modellen ist die Software System Identification Toolbox™ erforderlich.)

Eigenschaften

alle erweitern

Frequenzgangdaten, angegeben als mehrdimensionales Array aus komplexen Zahlen.

  • Bei SISO-Systemen ist ResponseData ein 1-mal-1-mal-Nf-Array aus Frequenzgangwerten bei den Nf Frequenzpunkten, die von der Eigenschaft Frequency angegeben werden.

  • Bei MIMO-Systemen mit Nu Eingängen und Ny Ausgängen ist ResponseData ein Ny-mal-Nu-mal-Nf-Array, wobei Nf die Anzahl der Frequenzpunkte ist.

    Beispielsweise stellt ResponseData(ky,ku,kf) den Frequenzgang vom Eingang ku zum Ausgang ky mit Frequenz Frequency(kf) dar.

  • Bei einem S1-...-mal-Sn-Array aus Modellen mit Nu Eingängen und Ny Ausgängen ist ResponseData ein mehrdimensionales Array der Größe [Ny Nu Nf S1 ... Sn].

    Ein ResponseData mit Größe [Ny,Nu,Nf,3,4] stellt beispielsweise die Antwortdaten für ein 3-mal-4-Array aus Modellen dar. Jedes Modell weist Ny Ausgänge, Nu Eingänge und Nf Frequenzpunkte auf.

Frequenzpunkte, die ResponseData entsprechen, angegeben als Vektor mit Nf Punkten, in den von FrequencyUnit angegebenen Einheiten.

Einheiten des Frequenzvektors in der Eigenschaft Frequency, angegeben als einer der folgenden Werte:

  • 'rad/TimeUnit'

  • 'cycles/TimeUnit'

  • 'rad/s'

  • 'Hz'

  • 'kHz'

  • 'MHz'

  • 'GHz'

  • 'rpm'

Die Einheiten 'rad/TimeUnit' und 'cycles/TimeUnit' sind relativ zu den Zeiteinheiten, die in der Eigenschaft TimeUnit festgelegt wurden.

Eine Änderung dieser Eigenschaft bewirkt keine Neuabtastung oder Konvertierung der Daten. Die Änderung der Eigenschaft ändert nur die Interpretation der vorhandenen Daten. Verwenden Sie chgFreqUnit, um die Daten in andere Frequenzeinheiten zu konvertieren.

Transportverzögerung, die als eine der folgenden Optionen angegeben wird:

  • Skalar: Geben Sie die Transportverzögerung für ein SISO-System oder die gleiche Transportverzögerung für alle Eingangs-/Ausgangspaare eines MIMO-Systems an.

  • NyxNu-Array: Geben Sie separate Transportverzögerungen für jedes Eingangs-/Ausgangspaar eines MIMO-Systems an. Dabei ist Ny die Anzahl der Ausgänge und Nu die Anzahl der Eingänge.

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

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.

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 frd-Modellen verwenden können. Im Allgemeinen sind viele Funktionen, die auf Dynamische Systemmodelle anwendbar sind, ebenfalls auf das frd-Objekt anwendbar. frd-Modelle funktionieren nicht mit Zeitdomänen-Analysefunktionen.

alle erweitern

bodeBode-Frequenzgang eines dynamischen Systems
sigmaSingular values of frequency response of dynamic system
nyquistNyquist-Antwort eines dynamischen Systems
nicholsNichols response of dynamic system
bandwidthFrequency response bandwidth
freqrespEvaluate system response over a grid of frequencies
marginAmplitudenrand, Phasenrand und Übergangsfrequenzen
chgFreqUnitChange frequency units of frequency-response data model
chgTimeUnitChange time units of dynamic system
frdfunApply a function to the frequency response value at each frequency of an frd model object
fselectSelect frequency points or range in FRD model
interpInterpolate FRD model
fcatConcatenate FRD models along frequency dimension
fnormPointwise peak gain of FRD 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

Beispiele

alle reduzieren

Erstellen Sie ein frd-Objekt aus Frequenzgangdaten.

Laden Sie für dieses Beispiel die für ein Wassertankmodell gesammelten Frequenzgangdaten.

load wtankData.mat

Diese Daten umfassen die Frequenzgangdaten, die für den Frequenzbereich 10-3 rad/s bis 102 rad/s erfasst wurden.

Erstellen Sie das Modell.

sys = frd(response,frequency)
sys =
 
    Frequency(rad/s)          Response     
    ----------------          --------     
          0.0010        1.562e+01 - 1.9904i
          0.0018        1.560e+01 - 2.0947i
          0.0034        1.513e+01 - 3.3670i
          0.0062        1.373e+01 - 5.4306i
          0.0113        1.047e+01 - 7.5227i
          0.0207        5.829e+00 - 7.6529i
          0.0379        2.340e+00 - 5.6271i
          0.0695        7.765e-01 - 3.4188i
          0.1274        2.394e-01 - 1.9295i
          0.2336        7.216e-02 - 1.0648i
          0.4281        2.157e-02 - 0.5834i
          0.7848        6.433e-03 - 0.3188i
          1.4384        1.916e-03 - 0.1740i
          2.6367        5.705e-04 - 0.0950i
          4.8329        1.698e-04 - 0.0518i
          8.8587        5.055e-05 - 0.0283i
         16.2378        1.505e-05 - 0.0154i
         29.7635        4.478e-06 - 0.0084i
         54.5559        1.333e-06 - 0.0046i
        100.0000        3.967e-07 - 0.0025i
 
Continuous-time frequency response.
Model Properties

Plotten Sie sys.

bode(sys)

MATLAB figure

Betrachten Sie in diesem Beispiel die folgenden zufällig generierten Antwortdaten und -Frequenzen.

Erstellen Sie ein komplexes Array mit den Dimensionen 3-mal-2-mal-7 und einen Frequenzvektor mit sieben Punkten zwischen 0,01 und 100 rad/s. Setzen Sie die Abtastzeit Ts auf 5 Sekunden.

rng(0)
r = randn(3,2,7)+1i*randn(3,2,7);
w = logspace(-2,2,7);
Ts = 5;

Erstellen Sie das Modell.

sys = frd(r,w,Ts)
sys =

  From input 1 to:

    Frequency(rad/s)         output 1           output 2           output 3    
    ----------------         --------           --------           --------    
          0.0100         0.5377 + 0.3192i   1.8339 + 0.3129i  -2.2588 - 0.8649i
          0.0464        -0.4336 + 1.0933i   0.3426 + 1.1093i   3.5784 - 0.8637i
          0.2154         0.7254 - 0.0068i  -0.0631 + 1.5326i   0.7147 - 0.7697i
          1.0000         1.4090 - 1.0891i   1.4172 + 0.0326i   0.6715 + 0.5525i
          4.6416         0.4889 - 1.4916i   1.0347 - 0.7423i   0.7269 - 1.0616i
         21.5443         0.8884 - 0.1924i  -1.1471 + 0.8886i  -1.0689 - 0.7648i
        100.0000         0.3252 - 0.1774i  -0.7549 - 0.1961i   1.3703 + 1.4193i

  From input 2 to:

    Frequency(rad/s)         output 1           output 2           output 3    
    ----------------         --------           --------           --------    
          0.0100         0.8622 - 0.0301i   0.3188 - 0.1649i  -1.3077 + 0.6277i
          0.0464         2.7694 + 0.0774i  -1.3499 - 1.2141i   3.0349 - 1.1135i
          0.2154        -0.2050 + 0.3714i  -0.1241 - 0.2256i   1.4897 + 1.1174i
          1.0000        -1.2075 + 1.1006i   0.7172 + 1.5442i   1.6302 + 0.0859i
          4.6416        -0.3034 + 2.3505i   0.2939 - 0.6156i  -0.7873 + 0.7481i
         21.5443        -0.8095 - 1.4023i  -2.9443 - 1.4224i   1.4384 + 0.4882i
        100.0000        -1.7115 + 0.2916i  -0.1022 + 0.1978i  -0.2414 + 1.5877i
 
Sample time: 5 seconds
Discrete-time frequency response.
Model Properties

Die angegebenen Daten resultieren in einem frd-Modell mit zwei Eingängen und drei Ausgängen.

Für dieses Beispiel erstellen Sie ein Frequenzgang-Datenmodell mit Eigenschaften, die von einem Transferfunktionsmodell geerbt wurden.

Erstellen Sie eine Transferfunktion sys1, deren Eigenschaft TimeUnit auf 'minutes' und deren Eigenschaft InputDelay auf 3 gesetzt ist.

numerator1 = [2,0];
denominator1 = [1,8,0];
sys1 = tf(numerator1,denominator1,'TimeUnit','minutes','InputDelay',3)
sys1 =
 
                 2 s
  exp(-3*s) * ---------
              s^2 + 8 s
 
Continuous-time transfer function.
Model Properties
propValues1 = {sys1.TimeUnit,sys1.InputDelay}
propValues1=1×2 cell array
    {'minutes'}    {[3]}

Erstellen Sie ein frd-Modell mit von sys1 geerbten Eigenschaften.

rng(0)
response = randn(1,1,7)+1i*randn(1,1,7);
w = logspace(-2,2,7);
sys2 = frd(response,w,sys1)
sys2 =
 
    Frequency(rad/minute)         Response    
    ---------------------         --------    
             0.0100           0.5377 + 0.3426i
             0.0464           1.8339 + 3.5784i
             0.2154          -2.2588 + 2.7694i
             1.0000           0.8622 - 1.3499i
             4.6416           0.3188 + 3.0349i
            21.5443          -1.3077 + 0.7254i
           100.0000          -0.4336 - 0.0631i
 
  Input delays (minutes): 3 
 
Continuous-time frequency response.
Model Properties
propValues2 = {sys2.TimeUnit,sys2.InputDelay}
propValues2=1×2 cell array
    {'minutes'}    {[3]}

Beachten Sie, dass das frd-Modell sys2 dieselben Eigenschaften wie sys1 aufweist.

Laden Sie für dieses Beispiel die für ein Wassertankmodell gesammelten Frequenzgangdaten.

load wtankData.mat

Das Modell weist einen Eingang, Spannung, und einen Ausgang, Wasserstand, auf.

Erstellen Sie ein frd-Modell und geben Sie die Namen für Eingang und Ausgang an.

sys = frd(response,frequency,'InputName','Voltage','OutputName','Height');

Plotten Sie den Frequenzgang.

bode(sys)

MATLAB figure

Die Namen des Eingangs und des Ausgangs werden auf dem Bode-Diagramm angezeigt. Die Eingänge und Ausgänge zu benennen, kann nützlich sein, wenn Sie mit den Antwortdiagrammen für MIMO-Systeme arbeiten.

Berechnen Sie in diesem Beispiel das frd-Modell des folgenden Zustandsraummodells:

A=[-2-11-2],B=[112-1],C=[10],D=[01]

Erstellen Sie ein Zustandsraummodell unter Verwendung der Zustandsraummatrizen.

A = [-2 -1;1 -2];
B = [1 1;2 -1];
C = [1 0];
D = [0 1];
ltiSys = ss(A,B,C,D);

Konvertieren Sie das Zustandsraummodell ltiSys in ein frd-Modell für die Frequenzen zwischen 0,01 und 100 rad/s.

w = logspace(-2,2,50);
sys = frd(ltiSys,w);

Vergleichen Sie die Frequenzgänge.

bode(ltiSys,'b',sys,'r--')

MATLAB figure

Die Antworten sind identisch.

Um Array aus frd-Modellen zu erstellen, können Sie ein mehrdimensionales Array der Frequenzgangdaten angeben.

Beispiel: Wenn Sie die Antwortdaten als numerisches Array mit Größe [NY NU NF S1 ... Sn] angeben, gibt die Funktion ein S1-mal-...-mal-Sn-Array aus frd-Modellen zurück. Jedes dieser Modelle weist NY Ausgänge, NU Eingänge und NF Frequenzpunkte auf.

Erstellen Sie ein 2-mal-3-Array aus zufälligen Antwortdaten mit Modellen mit einem Ausgang und zwei Eingängen mit 10 Frequenzpunkten zwischen 0,1 und 10 rad/s.

w = logspace(-1,1,10);
r = randn(1,2,10,2,3)+1i*randn(1,2,10,2,3);
sys = frd(r,w);

Extrahieren Sie das Modell bei Index (2,1) aus dem Modellarray.

sys21 = sys(:,:,2,1)
sys21 =

  From input 1 to:

    Frequency(rad/s)         output 1    
    ----------------         --------    
          0.1000         0.6715 + 0.0229i
          0.1668         0.7172 - 1.7502i
          0.2783         0.4889 - 0.8314i
          0.4642         0.7269 - 1.1564i
          0.7743         0.2939 - 2.0026i
          1.2915         0.8884 + 0.5201i
          2.1544        -1.0689 - 0.0348i
          3.5938        -2.9443 + 1.0187i
          5.9948         0.3252 - 0.7145i
         10.0000         1.3703 - 0.2248i

  From input 2 to:

    Frequency(rad/s)         output 1    
    ----------------         --------    
          0.1000        -1.2075 - 0.2620i
          0.1668         1.6302 - 0.2857i
          0.2783         1.0347 - 0.9792i
          0.4642        -0.3034 - 0.5336i
          0.7743        -0.7873 + 0.9642i
          1.2915        -1.1471 - 0.0200i
          2.1544        -0.8095 - 0.7982i
          3.5938         1.4384 - 0.1332i
          5.9948        -0.7549 + 1.3514i
         10.0000        -1.7115 - 0.5890i
 
Continuous-time frequency response.
Model Properties

Sie können negative Frequenzwerte in einem frd-Objekt angeben. Diese Funktion ist nützlich, wenn Sie die Frequenzgangdaten von Modellen mit komplexen Koeffizienten erfassen möchten.

Erstellen Sie einen Frequenzvektor mit positiven und negativen Werten.

w0 = sort([-logspace(-2,2,50) 0 logspace(-2,2,50)]);

Erstellen Sie ein Zustandsraummodell mit komplexen Koeffizienten.

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);

Konvertieren Sie das Modell in ein frd-Modell mit den angegebenen Frequenzen.

sys = frd(Gc,w0);

Plotten Sie den Frequenzgang der Modelle.

bode(Gc,'b',sys,'r--')

MATLAB figure

Die Diagrammantworten ähneln sich stark. Das Diagramm umfasst 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.

Versionsverlauf

Eingeführt vor R2006a