Hallo,
im Rahmen meines Praktikums habe ich jetzt begonnen mich mit MatLab auseinander zu setzen. Bisher lief das ganz gut (Dank Internet und Programm-Hilfe), aber jetzt weiß ich nicht weiter.
Es geht darum, dass ich Daten aus 2 verschiednen Quellen ploten will.
Zum einen lasse ich eine Simulation laufen und ich mächte Daten aus einer Excel Datei importieren.
Es geht jetzt darum, dass er die Plots auch zeichen soll, wenn zum Beispiel die Simulation noch nicht gelaufen ist (t,tf2 würden fehlen) oder die Vergleichswerte nicht importiert wurden (tmess,tfmess würden fehlen).
Momentan habe ich beim Aufrufen der Variablen über evalin die Alternative '0' drin:
Die Plots werden zwar nun angezeigt, aber dadurch, dass die Werte für den 2. Graphen dann 0 annehmen, ist die Skalierung der Achsen nicht sehr vorteilhaft.
Vllt weiß jemand, wie ich das besser lösen kann.
.................................................................................................................
Noch eine Frage:
Ich habe in meinem GUI 4 Axes die ich mit den unterschiedlichen Variablen versorge. (siehe ganz Code oben)
Ich habe nun das Problem, dass ich die alle hintereinander zeichne, aber zum Beispiel die Achsenbezichnungen nicht so hinbekomme wie ich das möchte. Ich habe versucht die Formatierung vor dem nächsten Plot auszuführen, aber scheinbar wird das so nicht gehandhabt.
Ich könnte zwar abfragen, ob die jeweilige Variable vorhanden ist und gegebenenfalls eine Plot ohne diese erstellen lasse, aber wenn ich das für alle mache, wird der Code ewig lang. Das kann ja eigentlich nicht der Weisheit letzter Schluss sein.
evalin sollte man generell vermeiden, siehe diverse Threads dazu.
In GUIs beispielsweise kann man schön getappdata/setappdata/isappdata verwenden, um Daten zu verwalten.
Du verwendest evalin in einer (zumindest in 2013b) nicht dokumentierten Syntax (3. Argument), was noch weniger gut ist. Wenn du aber schon ein drittes Argument verwendest, dann nimm doch NaN - das wird beim Plotten ignoriert.
Eine andere Möglichkeit wäre, den plot-Befehl in ein try-catch zu packen. Wenn das Plotten nicht funktioniert, dann kannst du das so selbst abfangen.
Bei xlabel und ylabel kannst du als erstes Argument das Koordinatensystem, auf das sie angewendet werden sollen, angeben.
Hallo
Danke für die Antwort
Das mit evalin wusste ich nicht...bei meiner Suche bein ich immer nur auf diesen Befehl gestoßen. Ich werd mal schauen, wie ich mit den anderen umgehen kann.
Den nicht dokumentierten Syntax hab ich mal irgendwo in einem Forum gefunden =)
Ich schau mal was ich hinbekomme und meld mich nochmal
So hab jetzt mal geschaut wie die neuen Funktionen funktionieren.
Bei settappdata und co hab ich so meine Probleme. Ich nutze ja das evalin um Variablen der Simulation aus dem Workspace ins Gui zu holen. Für setappdata muss ich doch, aber die Variable schon im GUI aufgerufen haben um sie dort zu "speichern".
Oder hab ich hier was falsch verstanden?
Um beim zeweiten mal plotten nicht nochmal die Variablen aus dem WS holen zu müssen würde es gehen, aber ist fast mehr Aufwand. Was genau ist das Problem mit evalin?
Wenn ich bei evalin das von die erwähnte 'NaN' nutze, wird so geplottet wie ich das gehofft hatte.
Die Variable wird dann beim Plotten quasi ignoriert
Danke nochmal
Leider verstehe ich noch nicht genau wie ich das mache.
Ich starte meine Simulation aus dem GUI (ist ein Simulink Modell), dieses hat mehrere Scopes, die ihre Daten in den Workspace speichern.
Kann man das auch direkt ins GUI speichern?
Oder wie könnte, dass Beispiel für tmess aussehen?
die Option war mir nicht bekannt.
Zumindest unter 2012b werden die Variablen dann aber doch automatisch im Funktions-Workspace gespeichert und nicht im Base Workspace?
Falls das bei 2011b anders ist, versuchs mal über die Option DstWorkspace.
Ich kenne nur einen Workspace, aber ich nehme an, dass es der base-WS ist (da ich die Variablen dann bei evalin ja mit 'base' importiere)
Im Anhang hab ich mal einen Ausschnitt, der Zeigt, die die Daten abgelegt werden. Wenn man auf die Kataloge klickt, öffnet sich der variableneditor und man sieht die "Unterordner" in denen sich dann Neben Zeit und Messwertten auch noch andere Sachen zu den Scope eigenschaften verbergen.
jede Funktion, insbesondere also die Callbacks von GUIs, hat einen eigenen Workspace. In diesem Workspace befinden sich die lokalen Variablen der Funktion.
Grüße,
Harald
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
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.