|
|
'To Workspace' Block mit Struktur als Variablenname |
|
Anus+ |
Forum-Newbie
|
|
Beiträge: 1
|
|
|
|
Anmeldedatum: 28.09.07
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 28.09.2007, 21:06
Titel: 'To Workspace' Block mit Struktur als Variablenname
|
|
|
|
|
Guten wach!
Ich rufe mein Simulink-Modell über sim() aus Matlab heraus auf, Paramter übergebe ich über den Matlab Workspace und diese werden in Simulink über "From Workspace", etc. eingelesen.
Nun möchte ich auch Werte aus Simulink zurückführen, und zwar in eine Struktur.
Vereinfacht dargestellt habe ich eine Struktur in Matlab die folgendermaßen aussieht:
Kein Problem, ich kann die Variablennamen simParams.param1 etc. problemlos überall einfügen.
Möchte ich nun aber einen Wert mittels des "To Workspace"-Blocks aus SimuLink in den Matlab-Workspace schreiben, quittiert er den Versuch der Eingabe von 'simRetParams.param1' mit einer Fehlermeldung.
Ich kann mir kaum vorstellen, dass dies nicht möglich ist. Evtl. muss ich den Variablennamen lediglich anders schreiben (womöglich wg. dem "." im Namen - aber der muss ja sein, es handelt sich um eine Struktur), aber ich bin noch nirgendwo fündig geworden wie ich das bewerkstelligen kann.
Hat jemand Rat parat? Bin für jede Hilfe dankbar!
Ich verwende Matlab 7.1 mit SimuLink 6 soweit ich das in erinnerung habe.
Gruß, Anus+
|
|
|
|
|
Titus |
Forum-Meister
|
|
Beiträge: 871
|
|
|
|
Anmeldedatum: 19.07.07
|
|
|
|
Wohnort: Aachen
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 21.02.2008, 16:04
Titel:
|
|
Hallo,
nicht wirklich. Der ToWorkspace Block kann tatsächlich nur in Variablen schreiben (deshalb z.B. lässt er auch nur feste Namen zu, nicht wie die meisten anderen Blöcke auch Variablen (also Variablen, die den Namen der zu schreibenden Variable tragen würden)).
Da Du aber sowieso die Simulation über sim startest, könntest Du das Speichern in die Struktur im Nachhinein selber machen...
Titus
|
|
|
mojojo |
Forum-Anfänger
|
|
Beiträge: 13
|
|
|
|
Anmeldedatum: 25.03.08
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 31.03.2008, 17:09
Titel:
|
|
Hallo,
möchte den Beitrag nochmal hochziehen, weil ich das gleiche Problem habe. Außerdem würde ich mir gerne noch eine Erweiterung wünschen, die der "To Workspace"-Block nicht bietet.
Und zwar habe ich sämtliche Zustandsgrößen meines Modells in einem Bus zusammengeführt, diesen Bus kann ich zwar über to Workspace in ein Structure speichern, aber leider nur die Werte, nicht jedoch die Namen der Variablen, die ja im Bus definiert sind.
Hat jemand dafür vielleicht eine selbstprogrammierte Lösung?
Hintergrund ist, dass ich die Simulationsergebnisse über ein Gui auswerten möchte, das sämtliche Zustandsgrößen auflistet und man dann bestimmte Größen zum Plotten auswählen kann.
Wäre super, wenn da jemand weiter weiß.
Beste Grüße
mojojo
_________________
Das Chaos beherrscht die Ordnung,
weil es besser organisiert ist.
|
|
|
Tim |
Forum-Century
|
|
Beiträge: 140
|
|
|
|
Anmeldedatum: 03.11.07
|
|
|
|
Wohnort: Stuttgart
|
|
|
|
Version: 2011b+aktuellstes Release
|
|
|
|
|
|
Verfasst am: 31.03.2008, 19:35
Titel:
|
|
Hmmmm, das resultierende Signal sollte also schon auch eine Struktur sein? Also Aufbau a la:
simout.signal1
simout.signal2
etc.
Oder würde es auch reichen wenn nachher nur
signal1
signal2
etc.
im Workspace stehen würden?
Zu ersterem könnte man eine StopFcn-Callback schreiben (wäre imho aber nicht sonderlich sauber). Diese würde Anhand des "ToWorkspace"-Blocks herausfinden welche Signale (bzw. deren Namen) auf dem bus liegen und die (nichtbenamte) Struktur zu schönifizieren.
Zu letzterem könnte man mit ein wenig Aufwand einen allgemeingültigen (gemaskten) Block bauen der aus n-"ToWorkspace"-Blöcken besteht, wobei n die Zahl der Signale auf dem Bus ist.
|
|
|
mojojo |
Forum-Anfänger
|
|
Beiträge: 13
|
|
|
|
Anmeldedatum: 25.03.08
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 01.04.2008, 08:51
Titel:
|
|
Hallo Tim,
schon mal danke für deine Antwort. Schöner wäre ein Struct, ich käme aber auch mit vielen Einzelvariablen klar. Wichtig ist mir, dass ich nichts an der Struktur verändern muss (z.B. für jedes neue Signal einen neuen To-Workspace block integrieren), sondern dass es reicht ein benamtes Signal auf den Bus zu legen, damit es in der Ausgabe vorhanden ist.
Beste Grüße
mojojo
_________________
Das Chaos beherrscht die Ordnung,
weil es besser organisiert ist.
|
|
|
racer79 |
Forum-Newbie
|
|
Beiträge: 4
|
|
|
|
Anmeldedatum: 31.03.08
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 03.04.2008, 12:36
Titel:
|
|
Der sim() command gibt doch die Werte von den Rootlevel Outputports zurueck (Left Side Argument). Das heisst du musst nur alle Variablen von interesse auf den Rootlevel bringen. Das geht zBsp mit From-Goto.
|
|
|
mojojo |
Forum-Anfänger
|
|
Beiträge: 13
|
|
|
|
Anmeldedatum: 25.03.08
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 04.04.2008, 14:06
Titel:
|
|
|
|
|
Hallo Racer,
danke für deine Antwort. Mein Problem ist bzw. war es nicht die Werte auszulesen, sondern die im Modell zu den Signalen gehörenden Namen. Ich habe sämtliche Signale im Root auf einem Bus zusammengeführt.
Mein Wunsch war es, dem Bus zusätzliche Signale hinzuzufügen und diese dann gleich mit Namen in meiner Ausgabestructur wiederzufinden.
Ich habe das ganze Jetzt mal so gelöst, dass ich im "StopFcn" Callback eines "Bus Selector" Blocks, der mit meinem Hauptbus verbunden ist, eine Funktion aufrufe, die mit:
die Namen ausliest und aus der gespeicherten Struktur des "To Workspace"-Blockes und den ausgelesenen Namen eine neue Struktur bildet, in der ich meine Daten speichern kann.
Das funktioniert mittlerweile auch, würde es aber nicht als endgültig ellegante Lösung bezeichnen.
@ Tim. Mir ist es nicht gelungen die Signalnamen aus dem "To Workspace" auszulesen. Ich brauche immer einen "Bus Selector". Hast du vielleicht noch einen Vorschlag?
Beste Grüße
mojojo
PS: Bei Bedarf poste ich gerne auch den kompletten Quelltext. Ist aber nicht ganz trivial, da meine Lösung immer noch anwendungsbezogen ist und ich hier nicht das ganze Modell veröffentlichen kann.
_________________
Das Chaos beherrscht die Ordnung,
weil es besser organisiert ist.
|
|
|
Tim |
Forum-Century
|
|
Beiträge: 140
|
|
|
|
Anmeldedatum: 03.11.07
|
|
|
|
Wohnort: Stuttgart
|
|
|
|
Version: 2011b+aktuellstes Release
|
|
|
|
|
|
Verfasst am: 04.04.2008, 18:36
Titel:
|
|
mojojo hat Folgendes geschrieben: |
@ Tim. Mir ist es nicht gelungen die Signalnamen aus dem "To Workspace" auszulesen. Ich brauche immer einen "Bus Selector". Hast du vielleicht noch einen Vorschlag? |
Mach das als StopFcn des ToWorkspace Blocks, darin dann (sinngemäß):
...
edit: Wenn du allerdings Busse als Signale in einem Bus hast, dann geht es nur so natürlich auch nicht mehr.
|
|
|
tigger007 |
Forum-Newbie
|
|
Beiträge: 2
|
|
|
|
Anmeldedatum: 13.11.09
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 13.11.2009, 19:53
Titel:
|
|
genau das gleiche suche ich auch ^^
signal.y.signal1
signal.y.signal2
signal.y.signal3...
geht das jetzt irgendwie?
|
|
|
genuile |
Forum-Newbie
|
|
Beiträge: 3
|
|
|
|
Anmeldedatum: 26.04.12
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 31.10.2013, 15:08
Titel:
|
|
Ich weiß, Thread ist schon sehr alt. Aber ich antworte für andere, die diese Frage evtl. noch haben (werden). Bin nämlich selber durch diese Problematik auf diesen Thread gestoßen.
Ab Matlab R2012a gibt es dieses Problem nicht mehr, da der "To Workspace" Block standardmäßig in den "Timeseries" Format speichert. Busse inkl. der Signalnamen werden dort als Structure gespeichert, wobei auch jeweils die Zeit dazugespeichert wird.
Vor R2012a gibt es diese Möglichkeiten:
http://www.mathworks.de/support/sol.....=ML&solution=1-E24ODG
|
|
|
krza |
Gast
|
|
Beiträge: ---
|
|
|
|
Anmeldedatum: ---
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 16.05.2017, 06:29
Titel: Auch mit 2014b noch nicht möglich.
|
|
Also ich arbeite gerade mit 2014b und habe immernoch das gleiche Problem. Es scheint also nicht so zu sein, dass sich ab 2012a diesbezüglich etwas geändert hätte.
|
|
|
|
|
Einstellungen und Berechtigungen
|
|
Du kannst Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen. Du kannst Dateien in diesem Forum posten Du kannst Dateien in diesem Forum herunterladen
|
|
Impressum
| Nutzungsbedingungen
| Datenschutz
| FAQ
| RSS
Hosted by:
Copyright © 2007 - 2024
goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks
MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.
|
|