|
|
GUI mit Nested Functions: Werte an BaseWorkspace uebergeben |
|
Supertyp |

Forum-Fortgeschrittener
|
 |
Beiträge: 85
|
 |
|
 |
Anmeldedatum: 09.06.08
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: R2014a
|
 |
|
|
 |
|
Verfasst am: 08.10.2014, 16:33
Titel: GUI mit Nested Functions: Werte an BaseWorkspace uebergeben
|
 |
Ich verzweifle bald an einer banalen Aufgabe: Ich möchte zu einem vorhandenen Skript eine GUI aufsetzen, die übersichtlich Parameter und Vektoren entgegennimmt. Die mache ich über nested functions mit
und
Nach Abschluss der Eingabe sollen die Werte an den Base-Workspace uebergeben und die GUI geschlossen werden.
Das funktioniert auch.
Wenn dann aber das Skript noch weitere Variablen im Base-Workspace anlegen will bekomme ich folgende Fehlermeldung:
Zitat: |
Attempt to add "<var_name>" to a static workspace. See MATLAB Programming, Restrictions on Assigning to Variables for details. |
Wie kann man den Fehler umgehen? Die GUI ist geschlossen und wird nicht mehr benötigt. Anschliessend benötige ich den Workspace ohne jegliche Einschränkungen für das Skript.
|
|
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.499
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 08.10.2014, 20:10
Titel:
|
 |
|
|
Supertyp |
Themenstarter

Forum-Fortgeschrittener
|
 |
Beiträge: 85
|
 |
|
 |
Anmeldedatum: 09.06.08
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: R2014a
|
 |
|
|
 |
|
Verfasst am: 09.10.2014, 08:51
Titel:
|
 |
Ich möchte kein Daten in GUIs verwalten, sondern die Daten die das Skript im Workspace erwartet sollen übersichtlich durch eine GUI-Eingabemaske in den Workspace abgelegt werden. Wie kann man das denn ohne assignin und eval machen?
Mein Ziel ist einfach:
GUI
- Werte engegennehmen und in den Workspace schreiben, GUI schliessen
Skript
- Berechnung ausführen und Eergebnisse anzeigen
|
|
|
Supertyp |
Themenstarter

Forum-Fortgeschrittener
|
 |
Beiträge: 85
|
 |
|
 |
Anmeldedatum: 09.06.08
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: R2014a
|
 |
|
|
 |
|
Verfasst am: 09.10.2014, 14:17
Titel:
|
 |
Ist meine Frage zu kompliziert oder zu doof? Bin für jeden Hinweis dankbar!
Harald, ich habe mir den Link angesehn, aber da gehts nur darum Werte innerhalb der GUI oder zwischen 2 GUIS auszutauschen. Oder ich habs nicht verstanden.
Wie kriege ich aber Daten in der Form die ich haben will (Struct) im Workspace abgelegt? Welchen der Wege im Link kann man so umbiegen, das das Ergebnis im Base- Worksapce landet?
Ich kann nicht glauben das es dafür keine Lösung gibt...
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.499
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 09.10.2014, 15:08
Titel:
|
 |
|
|
Supertyp |
Themenstarter

Forum-Fortgeschrittener
|
 |
Beiträge: 85
|
 |
|
 |
Anmeldedatum: 09.06.08
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: R2014a
|
 |
|
|
 |
|
Verfasst am: 09.10.2014, 16:21
Titel:
|
 |
Okay, also OuputFcn Vielen Dank. Aber das Mathworks-Beispiel ist mir wieder mal zu zu kurz, ich krieg es einfach nicht hin...
Nehmen wir an meine GUI.function heisst "MeineGUI.m" und dort werden die Werte aus Textfeldern entgegen genommen:
und
Wie kriege ich diese Werte in den Workspace? Mir fehlt einfach so ein ganz konkretes Beispiel.
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.499
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 09.10.2014, 16:30
Titel:
|
 |
Hallo,
ganz unten steht's:
In der MeineGUI_OutputFcn
Wenn du zwei Argumente zurückhaben willst, dann entsprechend
Aufruf dann:
Man kann wohl auch bei 1 zu zählen anfangen und dann beim Aufruf das h weglassen.
Grüße,
Harald
|
|
|
Supertyp |
Themenstarter

Forum-Fortgeschrittener
|
 |
Beiträge: 85
|
 |
|
 |
Anmeldedatum: 09.06.08
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: R2014a
|
 |
|
|
 |
|
Verfasst am: 10.10.2014, 13:07
Titel:
|
 |
Vielen Dank für deine Bemühungen. Mit dem letzten Vorschlag werden auch nur wieder die definierten Variablen übergeben aber nicht im Workspace abgelegt. Das ist alles nicht das was ich brauche:
1. Benutzer tippt Variable in GUI ein
2. GUI legt Variable unter dem definierten Namen im Workspace ab
3. GUI startet ein Skript das anschliessend ohne Einschränkungen auf den Workspace zugreifen kann
Ich merke das Matlab die direkte Möglichkeit unbedingt verbauen will.
Das Skript erwartet einfach bestimmte Variablen im Workspace und ich möchte am Skript nichts ändern d.h. die GUI soll nur "draufgesetzt" werden mit der Schnittstelle Base-Workspace.
Ich schau mir mal die Möglichkeiten von
an.
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.499
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 10.10.2014, 19:51
Titel:
|
 |
Hallo,
wenn du ein Skript aus einer GUI heraus startest, dann läuft das Skript meines Wissens im momentanen Workspace, also im Workspace des Callbacks der GUI.
Dann geht es darum, die Daten zwischen den Workspaces der Callback Functions hin- und herzuschieben, womit wieder der von mir gepostete Link relevant wird.
Ich kann nur empfehlen, das Aufrufen von Skripten aus Funktionen zu vermeiden. global, evalin und assignin mögen zwar kurzfristig Probleme lösen, schaffen aber langfristig nur noch mehr Probleme.
Grüße,
Harald
|
|
|
Jan S |

Moderator
|
 |
Beiträge: 11.057
|
 |
|
 |
Anmeldedatum: 08.07.10
|
 |
|
 |
Wohnort: Heidelberg
|
 |
|
 |
Version: 2009a, 2016b
|
 |
|
|
 |
|
Verfasst am: 11.10.2014, 12:09
Titel:
|
 |
Hallo,
Zitat: |
Ich kann nur empfehlen, das Aufrufen von Skripten aus Funktionen zu vermeiden. global, evalin und assignin mögen zwar kurzfristig Probleme lösen, schaffen aber langfristig nur noch mehr Probleme. |
Dem stimme ich ganz herzlich zu!
Gruß, Jan
|
|
|
Supertyp |
Themenstarter

Forum-Fortgeschrittener
|
 |
Beiträge: 85
|
 |
|
 |
Anmeldedatum: 09.06.08
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: R2014a
|
 |
|
|
 |
|
Verfasst am: 13.10.2014, 09:14
Titel:
|
 |
Okay, dann eben so: Wie kann man den Workspace einer Function aus der Function als Mat-File abspeichern? Das "save" Command liefert die Fehlermeldung:
|
|
|
Supertyp |
Themenstarter

Forum-Fortgeschrittener
|
 |
Beiträge: 85
|
 |
|
 |
Anmeldedatum: 09.06.08
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: R2014a
|
 |
|
|
 |
|
Verfasst am: 15.10.2014, 16:48
Titel: Die Dogmatiker hier wird es nicht freuen...
|
 |
Ich habe meinen Workaround gefunden. Innerhalb des GUI-Callbacks das Skript nicht so aufrufen:
sondern so:
|
|
|
|
|
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 - 2025
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.
|
|