Main Content

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

Schätzen von Modellen mithilfe von Frequenzdomänendaten

Mit der Software System Identification Toolbox™ können Sie Frequenzdomänendaten verwenden, um lineare Modelle über die Befehlszeile und in der App System Identification zu identifizieren. Sie können mithilfe von Frequenzdomänendaten sowohl zeitkontinuierliche als auch zeitdiskrete lineare Modelle schätzen. Dieser Abschnitt bietet einen Überblick über die Modellschätzung in der Toolbox mithilfe von Frequenzdomänendaten. Ein Beispiel für die Modellschätzung mithilfe von Frequenzdomänendaten finden Sie unter Frequency Domain Identification: Estimating Models Using Frequency Domain Data.

Es gibt zwei Arten von Frequenzdomänendaten:

  • Eingangs-/Ausgangsdaten aus der Frequenzdomäne: Diese Daten erhalten Sie, indem Sie Fourier-Transformationen der Signale des Zeitdomäneneingangs, u(t), und des Zeitdomänenausgangs, y(t), berechnen. Die Daten entsprechen der Menge von Signalen des Eingangs, U(ω), und Ausgangs, Y(ω), in der Frequenzdomäne. In der Toolbox werden Eingangs-/Ausgangsdaten aus der Frequenzdomäne mithilfe von iddata-Objekten dargestellt. Weitere Informationen finden Sie unter Darstellung von Frequenzdomänendaten in der Toolbox.

  • Frequenzgangdaten: Diese Daten werden auch als Frequenzfunktion oder Frequenzgangfunktion (Frequency-Response Function, FRF) bezeichnet und bestehen aus Transferfunktionsmessungen, G(), eines Systems bei einer diskreten Menge von Frequenzen ω. Frequenzgangdaten bei einer Frequenz ω informieren Sie darüber, wie ein lineares System auf ein sinusförmiges Eingangssignal derselben Frequenz reagiert. In der Toolbox werden Frequenzgangdaten mithilfe von idfrd-Objekten dargestellt. Weitere Informationen finden Sie unter Darstellung von Frequenzdomänendaten in der Toolbox. Frequenzgangdaten erhalten Sie wie folgt:

    • Durch direktes Messen der Frequenzgangdatenwerte, z. B. mithilfe eines Spektrumanalysators.

    • Durch Ausführen einer Spektralanalyse der Eingangs-/Ausgangsdaten aus der Zeitdomäne oder Frequenzdomäne (iddata-Objekte) mithilfe von Befehlen wie spa und spafdr.

    • Durch Berechnen des Frequenzgangs eines identifizierten linearen Modells mithilfe von Befehlen wie freqresp, bode und idfrd.

Der Workflow für die Modellschätzung mithilfe von Frequenzdomänendaten ist identisch mit dem für die Schätzung mithilfe von Zeitdomänendaten. Falls erforderlich, bereiten Sie zuerst die Daten für die Modellidentifikation vor, indem Sie Ausreißer entfernen und die Daten filtern. Anschließend schätzen Sie ein lineares parametrisches Modell anhand der Daten und validieren die Schätzung.

Vorteile der Verwendung von Frequenzdomänendaten

Die Verwendung von Frequenzdomänendaten hat folgende Vorteile:

  • Datenkomprimierung: Sie können lange Datenaufzeichnungen komprimieren, wenn Sie Zeitdomänendaten für die Frequenzdomäne konvertieren. Beispielsweise können Sie logarithmisch verteilte Frequenzen verwenden.

  • Ungleichmäßigkeit: Frequenzdomänendaten müssen nicht gleichmäßig verteilt sein. Ihre Daten können eine frequenzabhängige Auflösung aufweisen, sodass in den Frequenzbereichen von Interesse mehr Datenpunkte verwendet werden. Die Frequenzen von Interesse könnten die Bandbreite eines Systems sein oder in etwa den Resonanzen eines Systems entsprechen.

  • Vorfilterung: Die Vorfilterung der Daten in der Frequenzdomäne wird vereinfacht. Dies entspricht dem Zuweisen verschiedener Gewichtungen zu verschiedenen Frequenzen der Daten.

  • Zeitkontinuierliches Signal: Sie können zeitkontinuierliche Signale mithilfe von Frequenzdomänendaten darstellen und die Daten zur Schätzung verwenden.

Darstellung von Frequenzdomänendaten in der Toolbox

Vor der Modellschätzung geben Sie in der Toolbox Frequenzdomänendaten als Objekte an. Sie können sowohl zeitkontinuierliche als auch zeitdiskrete Frequenzdomänendaten angeben.

  • Eingangs-/Ausgangsdaten aus der Frequenzdomäne: Geben Sie diese als iddata-Objekt an. Im Objekt speichern Sie U(ω), Y(ω) und den Frequenzvektor ω. Die Eigenschaft Domain des Objekts ist 'Frequency', um anzugeben, dass das Objekt Frequenzdomänensignale enthält. Wenn U(ω), Y(ω) zeitdiskrete Fourier-Transformationen zeitdiskreter Signale sind, die mit dem Abtastintervall Ts abgetastet wurden, geben Sie das Abtastintervall im Objekt iddata an. Wenn U(ω), Y(ω) Fourier-Transformationen zeitkontinuierlicher Signale sind, geben Sie Ts als 0 im Objekt iddata an.

    Zum Plotten der Daten geben Sie in die Befehlszeile den Befehl plot ein.

    Beispielsweise können Sie Phase und Größenordnung der Eingangs-/Ausgangsdaten der Frequenzdomäne plotten.

    Laden Sie die Eingangs-/Ausgangsdaten aus der Zeitdomäne.

    load iddata1 z1

    Diese Zeitdomäneneingänge u und -ausgänge y werden in z1 gespeichert, einem iddata-Objekt, dessen Eigenschaft Domain auf 'Time' gesetzt ist.

    Führen Sie eine Fourier-Transformation für die Daten durch, um Eingangs-/Ausgangsdaten der Frequenzdomäne zu erhalten.

    zf = fft(z1);

    Die Eigenschaft Domain von zf ist auf 'Frequency' festgelegt und gibt an, dass es sich um Frequenzdomänendaten handelt.

    Plotten Sie die Größenordnung und Phase der Eingangs-/Ausgangsdaten aus der Frequenzdomäne.

    plot(zf)

    Figure contains 4 axes objects. Axes object 1 with title y1 contains an object of type line. This object represents zf. Axes object 2 contains an object of type line. This object represents zf. Axes object 3 with title u1 contains an object of type line. This object represents zf. Axes object 4 contains an object of type line. This object represents zf.

  • Frequenzgangdaten: Geben Sie diese als idfrd-Objekt an. Mit der Software Control System Toolbox™ können Sie die Daten auch als frd (Control System Toolbox)-Objekt angeben.

    Zum Plotten der Daten geben Sie in die Befehlszeile den Befehl bode ein.

    Beispielsweise können Sie den Frequenzgang eines Transferfunktionsmodells plotten.

    Erstellen Sie ein Transferfunktionsmodell Ihres Systems.

    sys = tf([1 0.2],[1 2 1 1]);

    Berechnen Sie den Frequenzgang des Transferfunktionsmodells, sys, an 100 Frequenzpunkten. Geben Sie als Frequenzbereich 0,1 rad/s bis 10 rad/s an.

    freq = logspace(-1,1,100);
    frdModel = idfrd(sys,freq);

    Plotten Sie den Frequenzgang des Modells.

    bode(frdModel)

    Figure contains 2 axes objects. Axes object 1 contains an object of type line. This object represents frdModel. Axes object 2 contains an object of type line. This object represents frdModel.

Weitere Informationen zu den Frequenzdomänendatentypen und wie Sie diese angeben, finden Sie unter Frequency-Domain Data Representation.

Sie können außerdem mithilfe der folgenden Befehle eine Transformation zwischen Frequenzdomänendaten und Zeitdomänendaten vornehmen.

Ursprüngliches DatenformatIn Zeitdomänendaten
(iddata-Objekt)
In Frequenzdomänendaten
(iddata-Objekt)
In Frequenzgangdaten
(idfrd-Objekt)
Zeitdomänendaten
(iddata-Objekt)
Verwenden Sie fft
  • Verwenden Sie etfe, spa oder spafdr.

  • Schätzen Sie ein lineares parametrisches Modell anhand des iddata-Objekts und verwenden Sie idfrd, um Frequenzgangdaten zu berechnen.

Frequenzdomänendaten
(iddata-Objekt)
Verwenden Sie ifft (funktioniert nur mit gleichmäßig verteilten Frequenzdomänendaten).
  • Verwenden Sie etfe, spa oder spafdr.

  • Schätzen Sie ein lineares parametrisches Modell anhand des iddata-Objekts und verwenden Sie idfrd, um Frequenzgangdaten zu berechnen.

Frequenzgangdaten
(idfrd-Objekt)
Nicht unterstütztVerwenden Sie iddata. Die Software erstellt ein iddata-Frequenzdomänenobjekt, dessen Verhältnis zwischen Ausgang und Eingang identisch ist mit dem der Frequenzgangdaten des idfrd-Objekts.
  • Verwenden Sie spafdr. Die Software berechnet Frequenzgangdaten mit einer Auflösung (Anzahl und Abstand der Frequenzen), die von der der ursprünglichen Daten abweicht.

Weitere Informationen zur Transformation zwischen Datentypen in der App oder über die Befehlszeile finden Sie auf der Seite zur Kategorie Transform Data.

Zeitkontinuierliche und zeitdiskrete Frequenzdomänendaten

Im Gegensatz zu Zeitdomänendaten kann die Abtastzeit Ts von Frequenzdomänendaten gleich null sein. Frequenzdomänendaten mit Ts gleich null werden zeitkontinuierliche Daten genannt. Frequenzdomänendaten mit Ts größer als null werden zeitdiskrete Daten genannt.

Zeitkontinuierliche Frequenzdomänendaten (Ts = 0) erhalten Sie wie folgt:

  • Generieren Sie die Daten aus bekannten zeitkontinuierlichen analytischen Ausdrücken.

    Angenommen, Sie wissen, dass der Frequenzgang Ihres Systems G(ω)=1/(b+jω) ist, wobei b eine Konstante ist. Weiterhin wird angenommen, dass die Zeitdomäneneingänge für Ihr System u(t)=eatsinw0t sind, wobei a eine Konstante größer als null und u(t) gleich null für alle Zeiten t kleiner als null ist. Sie können die Fourier-Transformation von u(t) berechnen, sodass Folgendes resultiert:

    U(ω)=ω0/[(a+jω)2+w02]

    Mithilfe von U(ω) und G(ω) ergibt sich dann der Frequenzdomänenausdruck für die Ausgänge:

    Y(ω)=G(ω)U(ω)

    Jetzt können Sie die analytischen Ausdrücke für Y(ω) und U(ω) über ein Raster von Frequenzwerten (ωgrid=ω1,ω2,...,ωn) auswerten, um einen Vektor der Eingangs-/Ausgangsdatenwerte aus der Frequenzdomäne (Ygrid,Ugrid) zu erhalten. Sie können die Eingangs-/Ausgangsdaten zu einem zeitkontinuierlichen iddata-Objekt zusammenfassen, indem Sie eine Abtastzeit Ts von null angeben.

    Ts = 0;
    zf = iddata(Ygrid,Ugrid,Ts,'Frequency',wgrid)
  • Berechnen Sie den Frequenzgang eines zeitkontinuierlichen linearen Systems in einem Frequenzraster.

    Beispielsweise generieren Sie im folgenden Code zeitkontinuierliche Frequenzgangdaten, FRDc, aus einem zeitkontinuierlichen Transferfunktionsmodell, sys, für ein Frequenzraster, freq.

    sys = idtf(1,[1 2 2]);
    freq = logspace(-2,2,100);
    FRDc = idfrd(sys,freq);
  • Messen Sie Amplituden und Phasen eines Versuchs mit sinusförmigen Signalen, wobei das Messsystem Antialiasing-Filter verwendet. Sie messen die Antwort des Systems auf sinusförmige Eingänge bei unterschiedlichen Frequenzen und fassen die Daten zu einem idfrd-Objekt zusammen. Beispielsweise sind Frequenzgangdaten, die mit einem Spektrumanalysator gemessen werden, zeitkontinuierliche Daten.

    Sie können auch einen Versuch mithilfe periodischer, zeitkontinuierlicher Signale (mehrere Sinuskurven) als Eingänge in Ihr System durchführen und die Antwort Ihres Systems messen. Anschließend fassen Sie die Eingangs- und Ausgangsdaten zu einem iddata-Objekt zusammen.

Zeitdiskrete Frequenzdomänendaten (Ts >0) erhalten Sie wie folgt:

  • Transformieren Sie die gemessenen Zeitdomänenwerte mithilfe einer diskreten Fourier-Transformation.

    Beispielsweise berechnen Sie im folgenden Code die diskrete Fourier-Transformation der Zeitdomänendaten, y, die an diskreten Zeitpunkten mit einer Abtastzeit von 0,01 Sekunden gemessen werden.

    t = 0:0.01:10;
    y = iddata(sin(2*pi*10*t),[],0.01);
    Y = fft(y);
  • Berechnen Sie den Frequenzgang eines zeitdiskreten linearen Systems.

    Beispielsweise generieren Sie im folgenden Code zeitdiskrete Frequenzgangdaten, FRDd, aus einem zeitdiskreten Transferfunktionsmodell, sys. Sie geben eine Abtastzeit ungleich null an, um das zeitdiskrete Modell zu erstellen.

    Ts = 1;
    sys = idtf(1,[1 0.2 2.1],Ts);
    FRDd = idfrd(sys,logspace(-2,2,100));

Sie können zeitkontinuierliche Frequenzdomänendaten verwenden, um ausschließlich zeitkontinuierliche Modelle zu identifizieren. Sie können zeitdiskrete Frequenzdomänendaten verwenden, um sowohl zeitdiskrete als auch zeitkontinuierliche Modelle zu identifizieren. Allerdings muss für die Identifikation zeitkontinuierlicher Modelle aus zeitdiskreten Daten das Verhalten der Daten zwischen den Abtastungen bekannt sein. Weitere Informationen finden Sie unter Schätzung zeitkontinuierlicher und zeitdiskreter Modelle.

Hinweis

Bei zeitdiskreten Daten ignoriert die Software während der Schätzung Frequenzdomänendaten über der Nyquist-Frequenz.

Vorverarbeiten der Frequenzdomänendaten für die Modellschätzung

Nachdem Sie Ihre Frequenzdomänendaten mithilfe der Objekte iddata oder idfrd dargestellt haben, können Sie die Daten für die Schätzung vorbereiten, indem Sie Stördaten entfernen und die Daten filtern.

Zum Anzeigen der Stördaten plotten Sie die Daten in der App oder verwenden Sie den Befehl plot (für iddata-Objekte) bzw. bode (für idfrd-Objekte). Nachdem die Stördaten im Diagramm identifiziert wurden, können Sie sie entfernen. Wenn Sie beispielsweise die Datenpunkte 20 bis 30 aus zf, einem iddata-Frequenzdomänenobjekt, entfernen möchten, verwenden Sie die folgende Syntax:

zf(20:30) = [];

Da Frequenzdomänendaten nicht mit einem gleichmäßigen Abstand angegeben werden müssen, ist ein Ersetzen der Ausreißer nicht erforderlich.

Sie können hochfrequentes Rauschen aus Ihren Daten auch vorab herausfiltern. Sie können Frequenzdomänendaten in der App vorab herausfiltern oder in die Befehlszeile den Befehl idfilt eingeben. Die Vorfilterung der Daten kann auch dazu beitragen, Abweichungen zu entfernen, bei denen es sich um niederfrequente Störungen handelt. Neben der Minimierung des Rauschens ermöglicht es Ihnen die Vorfilterung, Ihr Modell auf bestimmte Frequenzbänder zu fokussieren. Der Frequenzbereich von Interesse entspricht häufig einem Durchlassbereich über den Haltepunkten in einem Bode-Diagramm. Wenn Sie beispielsweise eine Anlage für Steuerungsentwicklungsanwendungen modellieren, können Sie die Daten vorab filtern, um die Frequenzen um die gewünschte Regelkreisbandbreite zu verbessern.

Weitere Informationen finden Sie unter Filtering Data.

Schätzen linearer parametrischer Modelle

Nachdem dem Vorverarbeiten der Frequenzdomänendaten können Sie diese zum Schätzen zeitkontinuierlicher und zeitdiskreter Modelle verwenden.

Unterstützte Modelltypen

Mithilfe von Frequenzdomänendaten können Sie die folgenden linearen parametrischen Modelle schätzen. Der Rauschanteil der Modelle wird, außer bei ARX-Modellen, nicht geschätzt.

ModelltypZusätzliche InformationenSchätzbefehleSchätzung in der App
Transfer Function Models Siehe Estimate Transfer Function Models in the System Identification App.
State-Space ModelsDie geschätzte Matrix K des Zustandsraummodells ist null.Siehe Estimate State-Space Models in System Identification App.
Process ModelsDas Störungsmodell wird nicht geschätzt.Siehe Estimate Process Models Using the App.
Input-Output Polynomial ModelsSie schätzen nur Ausgangsfehler- und ARX-Modelle.
Siehe Estimate Polynomial Models in the App.
Linear Grey-Box ModelsModellparameter, die nur mit der Rauschmatrix K in Beziehung stehen, werden nicht geschätzt.Grey-Box-Modellschätzung steht in der App nicht zur Verfügung.
Correlation Models
(Impulsantwort-Modelle)
 Siehe Estimate Impulse-Response Models Using System Identification App.
Frequency-Response Models
(Geschätzt als idfrd-Objekte)
 Siehe Estimate Frequency-Response Models in the App.

Vor dem Ausführen der Schätzung können Sie Schätzungsoptionen angeben, z. B. wie die Software mit den Anfangsbedingungen der Schätzdaten umgeht. Verwenden Sie hierfür in der Befehlszeile den Schätzungsoptionssatz, der dem jeweiligen Schätzungsbefehl entspricht. Angenommen, Sie möchten ein Transferfunktionsmodell aus Frequenzdomänendaten, zf, und zudem die Anfangsbedingungen der Daten schätzen. Geben Sie mithilfe des Optionssatzes tfestOptions die Schätzungsoptionen an und schätzen Sie anschließend das Modell.

opt = tfestOptions('InitialCondition','estimate');
sys = tfest(zf,opt);

sys ist das geschätzte Transferfunktionsmodell. Informationen zum Extrahieren geschätzter Parameterwerte aus dem Modell finden Sie unter Extracting Numerical Model Data. Nach dem Ausführen der Schätzung können Sie das geschätzte Modell validieren.

Hinweis

Wenn die Zeitdomänendaten eine Anfangsbedingung gleich null aufweisen, bedeutet dies nicht, dass auch die entsprechenden Frequenzdomänendaten eine Anfangsbedingung gleich null aufweisen. Wenn für Zeitdomänendaten die Anfangsbedingungen gleich null sind, wird davon ausgegangen, dass sich das System vor Beginn der Datenerfassung in einem Ruhezustand befindet. In der Frequenzdomäne können Anfangsbedingungen nur ignoriert werden, wenn die erfassten Daten periodischer Natur sind. Wenn Sie also Zeitdomänendaten mit Anfangsbedingungen gleich null erfassen und diese in Frequenzdomänendaten konvertieren, um ein Modell zu schätzen, müssen Sie auch die Anfangsbedingungen schätzen. Sie können sie nicht als null angeben.

Die folgenden Schätzungen können Sie nicht mithilfe von Frequenzdomänendaten durchführen:

Schätzung zeitkontinuierlicher und zeitdiskreter Modelle

Sie können alle unterstützten linearen Modelle, mit Ausnahme von Prozessmodellen, als zeitdiskrete Modelle schätzen. Prozessmodelle werden ausschließlich zeitkontinuierlich definiert. Zum Schätzen zeitdiskreter Modelle müssen Sie zeitdiskrete Daten verwenden.

Sie können alle unterstützten linearen Modelle, mit Ausnahme von Korrelationsmodellen, als zeitkontinuierliche Modelle schätzen (siehe impulseest). Sie können zeitkontinuierliche Modelle mithilfe von zeitkontinuierlichen und zeitdiskreten Daten schätzen. Informationen zu zeitkontinuierlichen und zeitdiskreten Daten finden Sie unter Zeitkontinuierliche und zeitdiskrete Frequenzdomänendaten.

Wenn Sie ein zeitkontinuierliches Modell mithilfe zeitdiskreter Daten schätzen, müssen Sie das Verhalten der Daten zwischen den Abtastungen angeben. Die Angabe des Verhaltens zwischen den Abtastungen hängt vom Typ der Frequenzdomänendaten ab.

  • Zeitdiskrete Eingangs-/Ausgangsdaten aus der Frequenzdomäne (iddata-Objekt): Geben Sie das Verhalten des Zeitdomänen-Eingangssignals u(t) zwischen den Abtastungen an, für das Sie eine Fourier-Transformation durchgeführt haben, um das Frequenzdomänen-Eingangssignal U(ω) zu erhalten.

  • Zeitdiskrete Frequenzgangdaten (idfrd-Objekt): Die Daten werden durch Berechnen des Frequenzgangs eines zeitdiskreten Modells generiert. Geben Sie das Verhalten zwischen den Abtastungen als Diskretisierungsmethode an, mit der das zeitdiskrete Modell aus einem zugrunde liegenden zeitkontinuierlichen Modell berechnet werden soll. Ein Beispiel hierzu finden Sie unter Angabe des Verhaltens zwischen den Abtastungen für zeitdiskrete Frequenzgangdaten.

Sie können das Verhalten zwischen den Abtastungen als stückweise konstant (Haltefunktion nullter Ordnung), zwischen den Abtastungen linear interpoliert (Haltefunktion erster Ordnung) oder als bandbegrenzt angeben. Wenn Sie die zeitdiskreten Daten aus Ihrem System als bandbegrenzt (also ohne Leistung oberhalb der Nyquist-Frequenz) angeben, behandelt die Software die Daten als zeitkontinuierlich, indem sie die Abtastzeit auf null setzt. Anschließend schätzt die Software ein zeitkontinuierliches Modell anhand der Daten. Weitere Informationen finden Sie unter Effect of Input Intersample Behavior on Continuous-Time Models.

Angabe des Verhaltens zwischen den Abtastungen für zeitdiskrete Frequenzgangdaten

Dieses Beispiel veranschaulicht die Auswirkungen des Verhaltens zwischen den Abtastungen auf die Schätzung zeitkontinuierlicher Modelle mithilfe zeitdiskreter Frequenzgangdaten.

Generieren Sie zeitdiskrete Frequenzgangdaten. Erstellen Sie dazu zunächst ein zeitkontinuierliches Transferfunktionsmodell, sys. Anschließend konvertieren Sie es mithilfe des Befehls c2d und der Methode First-Order Hold (FOH, Haltefunktion erster Ordnung) in ein zeitdiskretes Modell, sysd. Verwenden Sie das zeitdiskrete Modell sysd, um Frequenzgangdaten bei bestimmten Frequenzen, freq, zu generieren.

sys = idtf([1 0.2],[1 2 1 1]);
sysd = c2d(sys,1,c2dOptions('Method','foh'));
freq = logspace(-1,0,10);
FRdata = idfrd(sysd,freq);

FRdata entspricht den zeitdiskreten Daten. Die Software setzt die Eigenschaft InterSample von FRdata auf 'foh', also auf die Diskretisierungsmethode, die zum Abrufen von sysd aus sys verwendet wurde.

Schätzen Sie anhand der zeitdiskreten Daten eine zeitkontinuierliche Transferfunktion dritter Ordnung.

model1 = tfest(FRdata,3,1)
model1 =
        s + 0.2
  -------------------
  s^3 + 2 s^2 + s + 1
 
Continuous-time identified transfer function.

Parameterization:
   Number of poles: 3   Number of zeros: 1
   Number of free coefficients: 5
   Use "tfdata", "getpvec", "getcov" for parameters and their uncertainties.

Status:                                                   
Estimated using TFEST on frequency response data "FRdata".
Fit to estimation data: 100%                              
FPE: 2.223e-31, MSE: 6.619e-32                            
 

model1 ist ein zeitkontinuierliches Modell, geschätzt mithilfe von zeitdiskreten Frequenzgangdaten. Die zugrunde liegende zeitkontinuierliche Dynamik des ursprünglichen Modells dritter Ordnung, sys, wird in model1 abgerufen, weil das korrekte Verhalten zwischen den Abtastungen in FRdata angegeben ist.

Geben Sie jetzt das Verhalten zwischen den Abtastungen als Haltefunktion nullter Ordnung (ZOH) an und schätzen Sie ein Transferfunktionsmodell dritter Ordnung.

FRdata.InterSample = 'zoh';
model2 = tfest(FRdata,3,1)
model2 =
          -15.49 s - 3.294
  ---------------------------------
  s^3 - 30.03 s^2 - 6.825 s - 17.04
 
Continuous-time identified transfer function.

Parameterization:
   Number of poles: 3   Number of zeros: 1
   Number of free coefficients: 5
   Use "tfdata", "getpvec", "getcov" for parameters and their uncertainties.

Status:                                                   
Estimated using TFEST on frequency response data "FRdata".
Fit to estimation data: 94.71%                            
FPE: 0.004856, MSE: 0.001619                              
 

model2 erfasst nicht die Dynamiken des ursprünglichen Modells sys. Daher kann die Modellschätzung abtastungsbedingte Fehler enthalten, wenn das Verhalten zwischen den Abtastungen nicht korrekt angegeben ist.

Konvertierung eines Frequenzgangdatenmodells in eine Transferfunktion

Dieses Beispiel veranschaulicht die Konvertierung eines Frequenzgangdatenmodells (Frequency-Response Data Model, FRD-Modell) in ein Transferfunktionsmodell. Sie verwenden das FRD-Modell als Schätzdaten und schätzen anschließend die Transferfunktion.

Rufen Sie ein FRD-Modell ab.

Verwenden Sie beispielsweise bode, um die Größenordnung und die Phasengangdaten für das folgende System fünfter Ordnung abzurufen:

G(s)=s+0.2s5+s4+0.8s3+0.4s2+0.12s+0.04

Verwenden Sie 100 Frequenzpunkte zwischen 0,1 rad/s und 10 rad/s, um das FRD-Modell abzurufen. Verwenden Sie frd, um ein Frequenzgang-Modellobjekt zu erstellen.

freq = logspace(-1,1,100);
sys0 = tf([1 0.2],[1 1  0.8  0.4  0.12  0.04]);
[mag,phase] = bode(sys0,freq);
frdModel = frd(mag.*exp(1j*phase*pi/180),freq);

Sie erhalten die beste Approximation dritter Ordnung an die Systemdynamiken, indem Sie eine Transferfunktion mit 3 Nullstellen und 3 Polstellen schätzen.

np = 3;
nz = 3;
sys = tfest(frdModel,np,nz);

sys ist die geschätzte Transferfunktion.

Vergleichen Sie die Antwort des FRD-Modells und des geschätzten Transferfunktionsmodells.

bode(frdModel,sys,freq(1:50));

Figure contains 2 axes objects. Axes object 1 contains 2 objects of type line. These objects represent frdModel, sys. Axes object 2 contains 2 objects of type line. These objects represent frdModel, sys.

Das FRD-Modell wird aus dem System fünfter Ordnung, sys0, generiert. Während sys, eine Approximation dritter Ordnung, nicht die gesamte Antwort von sys0 erfasst, wird die Antwort bis etwa 0,6 rad/s dennoch ordnungsgemäß erfasst.

Validieren des geschätzten Modells

Nach dem Schätzen eines Modells für Ihr System können Sie validieren, ob es das Systemverhalten innerhalb akzeptabler Grenzwerte reproduziert. Es wird empfohlen, separate Datensätze für die Schätzung und die Validierung Ihres Modells zu verwenden. Sie können Zeitdomänen- oder Frequenzdomänendaten verwenden, um ein Modell zu validieren, das mithilfe von Frequenzdomänendaten geschätzt wurde. Wenn Sie zum Validieren des geschätzten Modells Eingangs-/Ausgangsvalidierungsdaten verwenden, können Sie die simulierte Modellantwort mit dem gemessenen Validierungsdatenausgang vergleichen. Wenn es sich bei Ihren Validierungsdaten um Frequenzgangdaten handelt, können Sie diese mit dem Frequenzgang des Modells vergleichen. Um beispielsweise den Ausgang eines geschätzten Modells, sys, mit gemessenen Validierungsdaten, zv, zu vergleichen, verwenden Sie die folgende Syntax:

compare(zv,sys);

Sie können auch eine Residuenanalyse durchführen. Weitere Informationen finden Sie unter Validating Models After Estimation.

Fehlerbehebung bei der Frequenzdomänenidentifikation

Wenn Sie ein Modell mithilfe von Frequenzdomänendaten schätzen, minimiert der Schätzalgorithmus eine Verlustfunktion (Kosten). Wenn Sie beispielsweise ein lineares SISO-Modell anhand von Frequenzgangdaten, f, schätzen, minimiert der Schätzalgorithmus die folgende Kleinste-Quadrate-Verlustfunktion:

minimizeG(ω)k=1Nf|W(ωk)(G(ωk)f(ωk))|2

Hier ist W eine frequenzabhängige Gewichtung, die Sie angeben, G ist das zu schätzende lineare Modell, ω ist die Frequenz und Nf ist die Anzahl der Frequenzen, bei denen die Daten verfügbar sind. Die Größe (G(ωk)f(ωk)) ist der Frequenzgangfehler. Bei Eingangs-/Ausgangsdaten aus der Frequenzdomäne minimiert der Algorithmus die gewichtete Norm des Ausgangsfehlers anstelle des Frequenzgangfehlers. Weitere Informationen finden Sie unter Loss Function and Model Quality Metrics. Während der Schätzung können falsche oder nicht erfasste Dynamiken in Ihren Daten die Verlustfunktion beeinträchtigen und zu einer unbefriedigenden Modellschätzung führen.

  • Unerwartete, falsche Dynamiken: Diese treten in der Regel auf, wenn Daten der oberen Größenordnungen ein geringes Signal-Rausch-Verhältnis aufweisen. Der Anpassungsfehler um diese Datenteile hat einen großen Anteil an der Verlustfunktion. Daher kann der Schätzalgorithmus möglicherweise zu einer Überanpassung führen und dem Rauschen in diesen Bereichen unerwartete Dynamiken zuweisen. So beheben Sie dieses Problem:

    • Verbessern Sie das Signal-Rausch-Verhältnis: Sie können mehrere Datensätze erfassen und diese mitteln. Wenn Eingangs-/Ausgangsdaten aus der Frequenzdomäne vorliegen, können Sie mithilfe des Befehls merge mehrere Datensätze zusammenfassen. Verwenden Sie diese Daten für die Schätzung, um ein verbessertes Ergebnis zu erhalten. Alternativ können Sie den Datensatz filtern und für die Schätzung verwenden. Verwenden Sie beispielsweise einen Filter für gleitenden Mittelwert, um die Daten der gemessenen Antwort zu glätten. Wenden Sie den Glättungsfilter nur in Datenbereichen an, von denen Sie sicher wissen, dass die ungeglätteten Daten auf Rauschen und nicht auf die Systemdynamiken zurückzuführen sind.

    • Verringern Sie die Auswirkungen bestimmter Datenbereiche auf die Verlustfunktion: Sie können eine frequenzabhängige Gewichtung angeben. Wenn Sie beispielsweise ein Transferfunktionsmodell schätzen, geben Sie die Gewichtung in der Option WeightingFilter des Schätzungsoptionssatzes tfestOptions an. Geben Sie in Frequenzbereichen, in denen unerwünschte Dynamiken vorliegen, eine geringe Gewichtung an. Alternativ verwenden Sie um diesen Frequenzbereich weniger Datenpunkte.

  • Nicht erfasste Dynamiken: Diese treten in der Regel auf, wenn die Größenordnung der zu erfassenden Dynamiken im Vergleich zu den übrigen Daten nur gering ist. Da eine schlechte Anpassung an Daten geringer Größenordnung weniger zur Verlustfunktion beiträgt, ignoriert der Algorithmus diese Dynamiken möglicherweise, um Fehler bei anderen Frequenzen zu verringern. So beheben Sie dieses Problem:

    • Geben Sie eine frequenzabhängige Gewichtung an: Geben Sie eine hohe Gewichtung für den Frequenzbereich an, in dem Sie Dynamiken erfassen möchten.

    • Verwenden Sie um diesen Bereich mehr Datenpunkte.

Ein Beispiel für diese Fehlerbehebungsmaßnahmen finden Sie unter Troubleshoot Frequency-Domain Identification of Transfer Function Models.

Wenn sich mit diesen Fehlerbehebungsmaßnahmen kein zufriedenstellendes Modell erzielen lässt, probieren Sie eine andere Modellstruktur oder einen anderen Schätzalgorithmus aus.

Nächste Schritte nach dem Identifizieren eines Modells

Nach dem Schätzen eines Modells können Sie Modelltransformationen durchführen, Modellparameter extrahieren und die Modellantwort simulieren und vorhersagen. Beispiele für Aufgaben, die Sie ausführen können:

Verwandte Themen