Step-Response-Datenextraktion aus Response-Daten eines Modells (Simulink)?

Ich möchte einen PID-Regler mit der Sprungantwortmethode entwerfen, also musste ich die Sprungantwort meines Modells in Simulink im Arbeitsbereich (Vout) mit gespeichertem Format speichern: Struktur mit Zeit, ich habe den Zeitwert mit dem Befehl extrahiert

t=Vout.time 

und Signalwert als:

y=Vout.signals

Führen Sie dann den Befehl aus, um die Daten nach Matlab zu extrahieren:

load StepInfoData t y

also kann ich es analysieren, indem ich die Funktion aufrufe plot(t,y)und S1 = stepinfo(y,t,0.4)es zeigt den folgenden Fehler

Warnung: Variable 'y' nicht gefunden.

Warnung: Variable 't' nicht gefunden.

und dasselbe für die Plot-Funktion. Tatsächlich bin ich mir nicht sicher, ob der Arbeitsbereich die richtige Methode zum Speichern der Daten ist. Link: https://se.mathworks.com/help/control/ref/stepinfo.html#mw_cab22a5a-b8ef-49fd-b071-3e7888430c00 das Modell sieht so aus: Geben Sie hier die Bildbeschreibung eindanke

Sie sollten den Block "To Workspace" in Simulink verwenden. Ich glaube, Sie haben das Beispiel falsch verstanden.
Ich habe genau "to workspace" verwendet und t und y in andere Variablen wie a und b geändert und funktioniert immer noch nicht. (Ich habe den Beitrag bearbeitet)
Aber warum verwenden Sie dann "load StepInfoData t y"? Sie müssen nur die Simulation ausführen und die Daten plotten. plot(Vout) sollte es tun.
Ich habe es verwendet, weil in dem Link steht, dass Sie die Daten speichern und dann die Befehle "load StepInfoData t y" aufrufen. Ich führe jetzt den Befehl Plot(Vout) aus und erhalte diesen Fehler:>> plot(Vout) Error using plot Not enough input arguments.
Verwenden Sie statt "Struktur mit Zeit" die Option "Zeitreihe". Es funktioniert gut mit Timeseries, gerade getestet. Auch diese Zeile "load ..." im Link bezieht sich speziell auf dieses Beispiel und macht in Ihrem Kontext keinen Sinn.
Der Plot (Vout) funktioniert für Zeitreihen, ich habe denselben Befehl aus diesem Beispiel verwendet, aber ich habe versucht, ihnen Zeit und Werte zuzuweisen, damit ich sie direkt verwenden kann. Trotzdem habe ich versucht, die Namen in a und b zu ändern, ich musste den Zeitwert vom Signalwert trennen. bei timeseries kann ich die funktion von stepinfo nicht nutzen:>> S1 = stepinfo(Vout,0.015) undefinierte funktion 'isfinite' für eingangsargumente vom typ 'timeseries'. Ich habe es auch mit dem Namen meines Modells versucht, aber ein falsches Ergebnis geliefert
und >> b = Vout.Signale; Keine geeignete Methode, Eigenschaft oder Feld 'Signale' für die Klasse 'Timeseries'.
Verwenden Sie einfach "y = Vout.Data" und "t = Vout.Time".
danke, Vicente Cunha, es hat funktioniert, ich möchte diese Frage als beantwortet markieren, aber ich kann nicht finden, wo?
Ich werde eine Antwort schreiben und Sie können sie akzeptieren.

Antworten (1)

Um Signale von Simulink in den Matlab-Arbeitsbereich zu exportieren, verwenden Sie den Block "To Workspace". Eine der relevanteren Optionen des Blocks ist die Angabe des Formats der exportierten Variablen. Bei Verwendung des Timeseries-Formats zum Exportieren einer Variablen mit dem Namen simout können Daten wie folgt dargestellt werden:

plot(simout)

Um Daten- und Zeitarrays aus Timeseries in separate Variablen abzurufen, verwenden Sie:

data = simout.Data
time = simout.Time