WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Wert von To Workspace zu GUI

 

StudentET
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 70
Anmeldedatum: 09.02.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 27.09.2010, 13:01     Titel: Wert von To Workspace zu GUI
  Antworten mit Zitat      
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.
Private Nachricht senden Benutzer-Profile anzeigen


Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 27.09.2010, 13:10     Titel: Re: Wert von To Workspace zu GUI
  Antworten mit Zitat      
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
Private Nachricht senden Benutzer-Profile anzeigen
 
StudentET
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 70
Anmeldedatum: 09.02.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 27.09.2010, 13:19     Titel:
  Antworten mit Zitat      
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;
Private Nachricht senden Benutzer-Profile anzeigen
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 27.09.2010, 14:35     Titel:
  Antworten mit Zitat      
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
Private Nachricht senden Benutzer-Profile anzeigen
 
StudentET
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 70
Anmeldedatum: 09.02.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 28.09.2010, 11:19     Titel:
  Antworten mit Zitat      
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.
Private Nachricht senden Benutzer-Profile anzeigen
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 29.09.2010, 11:24     Titel:
  Antworten mit Zitat      
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
Private Nachricht senden Benutzer-Profile anzeigen
 
ALEX_ET

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 30.09.2010, 07:56     Titel: Wie Variable einer GUI übergeben
  Antworten mit Zitat      
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: ---
     Beitrag Verfasst am: 30.09.2010, 08:39     Titel: Variablen aus Workspace in GUI laden
  Antworten mit 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');

schreibt die im Workspace (base) gespeicherte Variable bm innerhalb der GUI in die Variable v

Grüße
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 30.09.2010, 19:52     Titel: Re: Variablen aus Workspace in GUI laden
  Antworten mit Zitat      
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
Private Nachricht senden Benutzer-Profile anzeigen
 
StudentET
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 70
Anmeldedatum: 09.02.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 05.10.2010, 16:56     Titel:
  Antworten mit Zitat      
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?
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

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 | goMatlab RSS Button 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.