|
|
Wert von To Workspace zu GUI |
|
StudentET |
Forum-Fortgeschrittener
|
|
Beiträge: 70
|
|
|
|
Anmeldedatum: 09.02.10
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 27.09.2010, 13:01
Titel: Wert von To Workspace zu GUI
|
|
Hallo zusammen,
ich hab in meinem Simulink Modell eine To Workspace Block,wo mein Endwert (Das Ergebnis) gespeichert wird,und zwar am ende des Simulations.
im matlab kann ich das direkt auslesen,indem ich den Namen des Blocks eingebe,nämlich AMPLITUDENGANG als Beispiel.
doch jetzt habe ich ein Problem,und zwar,wie könnte ich eventuell diesen gespeicherten Wert über GUI auslesen,weil wenn ich nur den Namen des Blocks eingebe,bekomme ich Fehler:Undefined function or Variable.
Es wäre sehr sehr nett,wenn ich ne Hilfe bekommen könnte.
dafür bedanke ich mich im voraus.
|
|
|
|
|
Jan S |
Moderator
|
|
Beiträge: 11.057
|
|
|
|
Anmeldedatum: 08.07.10
|
|
|
|
Wohnort: Heidelberg
|
|
|
|
Version: 2009a, 2016b
|
|
|
|
|
|
Verfasst am: 27.09.2010, 13:10
Titel: Re: Wert von To Workspace zu GUI
|
|
Hallo StudentET,
Zitat: |
im matlab kann ich das direkt auslesen,indem ich den Namen des Blocks eingebe,nämlich AMPLITUDENGANG als Beispiel. |
Wo gibst Du diesen Namen "in Matlab" ein?
Zitat: |
doch jetzt habe ich ein Problem,und zwar,wie könnte ich eventuell diesen gespeicherten Wert über GUI auslesen,weil wenn ich nur den Namen des Blocks eingebe,bekomme ich Fehler:Undefined function or Variable. |
Was bedeutet für Dich "über GUI auslesen"? Wo gibst Du jetzt den Namen ein, um diesen Fehler zu erzeugen?
Gruß, Jan
|
|
|
StudentET |
Themenstarter
Forum-Fortgeschrittener
|
|
Beiträge: 70
|
|
|
|
Anmeldedatum: 09.02.10
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 27.09.2010, 13:19
Titel:
|
|
beim ertsen mal gebe ich den namen in matlab fenster ein(normale programmierung),als befehl
amplitudengang;
und im GUI gebe ich das in der m.file datei ein,und zwar auch genau sowie oben
amplitudengang;
|
|
|
Jan S |
Moderator
|
|
Beiträge: 11.057
|
|
|
|
Anmeldedatum: 08.07.10
|
|
|
|
Wohnort: Heidelberg
|
|
|
|
Version: 2009a, 2016b
|
|
|
|
|
|
Verfasst am: 27.09.2010, 14:35
Titel:
|
|
Hallo StudentET,
verstehe ich das richtig:
Du hast ein M-File, das AMPLITUDENGANG heißt. Wenn Du es aus einem anderen M-File aus aufrust, sagt Matlab Dir mit "Undefined function or Variable", dass es die Datei nicht findet.
Richtig?
Dann liegt sie wahrscheinlich nicht in einem Ordner des Matlab Pfades, siehe PATH. Wenn Du sie vorher manuell aber aufrufen konntest, lag sie wohl zu diesem Zeitpunkt im aktuellen Ordner.
Gruß, Jan
|
|
|
StudentET |
Themenstarter
Forum-Fortgeschrittener
|
|
Beiträge: 70
|
|
|
|
Anmeldedatum: 09.02.10
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 28.09.2010, 11:19
Titel:
|
|
Hallo noch mal,
das ist leider nicht so.es ist bisschen kompliziert zu erklären.
es ist letztendlich eine mdl datei,die von einer m file aufgerufen wird.
in der mdl file gibts die variable amplitudengang in einem To Workspace block gespeichert(ist das ergebnis der simulation).
und wenn ich die variablenname amplitudengang in der matlab fenster eintippe dann kommt der wert ja auch raus: z.B. amplitudengang
ans=1
aber wenn ich das selbe modell und den selben namen über GUI m file programmiere,und später in matlab eingebe,dann bekomme ich diesen Fehler angezeigt.
ich wundere mich auch wieso das ein mal geht und ein mal nicht!!!
wäre nett falls es euch was einfällt.
|
|
|
Jan S |
Moderator
|
|
Beiträge: 11.057
|
|
|
|
Anmeldedatum: 08.07.10
|
|
|
|
Wohnort: Heidelberg
|
|
|
|
Version: 2009a, 2016b
|
|
|
|
|
|
Verfasst am: 29.09.2010, 11:24
Titel:
|
|
|
|
|
Hallo StudentET,
jetzt wird es mir klarer. "To WorkSpace" bedeutet, dass die Variable im Base-Workspace gespeichert wird, genau so als würde man im Command-Window "A = 5" eingeben.
Wenn man danach im Command-Window "A" eingibt, erhält man "5" als Antwort.
Hat man aber irgendeine Funktion, z.B. als Callback in einem GUI oder sonst wo, kann man nicht einfach "Y = A" verwenden, weil "A" im aktuellen WorkSpace der Funktion ja gar nicht existiert.
Lösungen:
1. "To WorkSpace" ist ein sehr unpraktischer Weg um Variablen zu transportieren. Stell Dir vor, Du hast das MDL mehrfach offen und läßt alle fast gleichzeitig laufen. Dann kann niemand Dir mehr sagen, welche Funktion als letztes die Variable in den Base-WorkSpace über/ge-schrieben hat.
Wenn es aber nun unbedingt über "To WorkSpace" laufen soll, kannst Du (zur Not halt) "Y = evalin('base', 'A');" verwenden.
(Brrr. Ich warne immer davor.)
2. Kannst Du die Werte nicht anders, z.B. mit SAVE speichern?
Gruß, Jan
|
|
|
ALEX_ET |
Gast
|
|
Beiträge: ---
|
|
|
|
Anmeldedatum: ---
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 30.09.2010, 07:56
Titel: Wie Variable einer GUI übergeben
|
|
|
|
|
Hi, ich habe derzeit ein ähnliches Problem, selbigen Hintergrund.
Darum vorab die Frage: Wie kann ich eine Variable (bm) aus meinem Hauptprogramm (main.m) einer GUI übergeben, damit diese dann Unterfunktionen aufrufen kann die diese Variable benötigen? show_a(bm)
Hintergrund: Ich möchte mit der GUI benutzerfreundlich einige Grafiken anzeigen lassen. Habe dazu mehrere Funktionen geschrieben show_a.m, show_b.m etc. Über Checkboxen kann ich in der GUI auswählen welche Grafiken ich anzeigen, welche ich speichern möchte. Nur benötigen diese Funktionen die Variable bm (struct) als Input. Diese ist innerhalb der GUI jedoch nicht bekannt (Aufruf der Funktionen aus der main.m heraus war kein Problem).
Ich dachte ich könnte diese einfach übergeben grafik_gui(bm) - geht aber nicht. Ich weis derzeit nicht warum, aber ich bekomme damit immer die Fehlermeldung 'Undefined function or variable: bm' . Da ich mir sicher bin hier einfach einen grundlegenden Fehler zu machen z.B. mit varargin, varargout, bitte ich um Hilfe, wie man sauber in der Lage ist einer GUI eine Variable bekannt zu machen (Save/Load finde ich äußerst unbequem).
Besten Dank für die schnelle Antwort!
|
|
|
ALEX_ET |
Gast
|
|
Beiträge: ---
|
|
|
|
Anmeldedatum: ---
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 30.09.2010, 08:39
Titel: Variablen aus Workspace in GUI laden
|
|
Habe lange rumgegoogelt und konnte mir selber helfen.
% Mit der Funktion evalin holt man sich die Variable bm aus dem Basestack.
% Einzige mir bekannte Möglichkeit einer GUI etwas bekannt zu machen!
v = evalin('base', 'bm');
schreibt die im Workspace (base) gespeicherte Variable bm innerhalb der GUI in die Variable v
Grüße
|
|
|
Jan S |
Moderator
|
|
Beiträge: 11.057
|
|
|
|
Anmeldedatum: 08.07.10
|
|
|
|
Wohnort: Heidelberg
|
|
|
|
Version: 2009a, 2016b
|
|
|
|
|
|
Verfasst am: 30.09.2010, 19:52
Titel: Re: Variablen aus Workspace in GUI laden
|
|
Hallo ALEX_ET,
Zitat: |
Habe lange rumgegoogelt und konnte mir selber helfen.
% Mit der Funktion evalin holt man sich die Variable bm aus dem Basestack.
% Einzige mir bekannte Möglichkeit einer GUI etwas bekannt zu machen!
v = evalin('base', 'bm'); |
Offensichtlich habe ich doch noch nicht oft genug in diesem Forum die Nachteile von EVALIN, EVAL und ASSIGNIN betont - ansonsten hätte Google das ja irgendwie bemerkt haben müssen.
Ein sicherer Weg um Daten in einem GUI verfügbar zu machen ist es, sie einfach als Input-Parameter an eine Funktion zu geben, die sie als UserData oder ApplicationData in der Figure speichert. Dann kann man bequem von allen Callbacks darauf zugreifen.
Gruß, Jan
|
|
|
StudentET |
Themenstarter
Forum-Fortgeschrittener
|
|
Beiträge: 70
|
|
|
|
Anmeldedatum: 09.02.10
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 05.10.2010, 16:56
Titel:
|
|
Hallo noch mal,
hab mit evalin versucht,klappt ja aber nicht.
er erkennt die in To Workspace gespeicherte variable immer noch nicht.
gehts vielleicht anders?
|
|
|
|
|
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.
|
|