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

Übergabe von Variablen zwischen Funktionen

 

Frischfleisch

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 24.02.2008, 23:15     Titel: Übergabe von Variablen zwischen Funktionen
  Antworten mit Zitat      
Hi,

mein Anliegen ist vermutlich gar nicht weiter tragisch, doch ich programmiere erst seit ein paar Tagen mit Matlab und stehe irgendwie auf dem Schlauch, auch die Suche hat bisher nicht geholfen.

Ich hab ein UI erstellt, es sollen ein paar Werte eingelesen, grafisch dargestellt, verändert und dann nochmal in einem zweiten Graphen angezeigt werden.
Hab einen Load-Button mit dem ich die Daten einlese und in zwei Arrays X und Y schreibe, darüber hinaus stelle ich unter selber Load_Callback-Funktion diese auch gleich in Graph_1 dar.

Nun will ich eigentlich erstmal nur über einen zweiten Button dieselben Daten in Graph_2 darstellen, doch scheitere ich bei der einfachen Übergabe der Daten aus den beiden Arrays in die Callbackfunktion des zweiten Buttons.

Habe versucht die Arrays global zu definieren, aber damit hats auch nicht geklappt.

Die grobe Codestruktur sieht so aus:


Code:


% --- Executes on button press in Load.
function Load_Callback(hObject, eventdata, handles)

[filename,filepath] = uigetfile('*.dat', 'Bitte gewünschten Datensatz auswählen');

% Algorithmus der die binären Daten umwandelt und in X und Y schreibt

axes(handles.original);

plot(X, Y,'r');

% --- Executes on button press in denoise.
function changed_Callback(hObject, eventdata, handles)

axes(handles.changed);

plot(X, Y,'b');

 


Frischfleisch

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 24.02.2008, 23:19     Titel:
  Antworten mit Zitat      
Nicht wundern dass die axes auf die Buttons verweisen, das ist ein Übertragungsfehler. Konnte den Beitrag leider nicht editieren weil noch nicht registriert.

Die Darstellung des geladenen Datensatzes funktioniert auch super, nur die zweite gar nicht weil die Werte fehlen.
 
Frischfleisch

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 25.02.2008, 10:33     Titel:
  Antworten mit Zitat      
Ok also das Problem mit der globalen Variable habe ich in den Griff bekommen. Hatte nur vergessen die Variable in der zweiten Buttonfunktion erneut zu initialisieren. Die globale Lösung dazu ist ja aber nicht wirklich schön.

Wäre schön wenn jemand noch einen besseren Vorschlag hätte Crying or Very sad
 
Bijick
Ehrenmitglied

Ehrenmitglied



Beiträge: 914
Anmeldedatum: 18.06.07
Wohnort: Nürnberg
Version: R2006b, R2008b
     Beitrag Verfasst am: 25.02.2008, 11:27     Titel:
  Antworten mit Zitat      
Hallo Frischfleisch,

das funktioniert mit der handles-Struktur und guidata:

Code:
% --- Executes on button press in Load.
function Load_Callback(hObject, eventdata, handles)

[filename,filepath] = uigetfile('*.dat', 'Bitte gewünschten Datensatz auswählen');
% Algorithmus der die binären Daten umwandelt und in X und Y schreibt
axes(handles.original);
plot(X, Y,'r');

handles.X=X;
handles.Y=Y;
guidata(hObject,handles)

% --- Executes on button press in denoise.
function changed_Callback(hObject, eventdata, handles)
axes(handles.changed);

plot(handles.X, handles.Y,'b');
 


Herzliche Grüße
Bijick
_________________

>> why
Private Nachricht senden Benutzer-Profile anzeigen E-Mail senden
 
Frischfleisch

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 25.02.2008, 13:53     Titel:
  Antworten mit Zitat      
Ohja, das ist natürlich sehr viel eleganter Very Happy !

Vielen lieben Dank !
 
fdff

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 18.07.2013, 08:23     Titel:
  Antworten mit Zitat      
Hallo ,

genauso habe ich das mit den Variablen auch geloest, das hat auch funktioniert als ich noch die alte Matlab Version R2011a benutzt habe.
Jetzt nutze ich die aktuelle Version Matlab R2013a 8.8.1.0.604 und die Variablen werden trotz handles.Variable nicht mehr erkannt.
Weiss jemand woran das liegt?
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 18.07.2013, 11:03     Titel:
  Antworten mit Zitat      
Hallo fdff,

Bitte hänge Deine Frage nicht an eine andere an. Denn dann kann man nicht mehr wissen, auf welche Frage sich eine Antwort bezieht und der "beantwortet"-Status wird sinnfrei.

Leider kann ich Deine Frage aber auch nicht in ein neues Thema verschieben, weil sie dann vollkommen inhaltsfrei wird. Bitte stelle die Frage deshalb selbst nochmal neu und erkläre mit dem entsprechenden Code, was "genauso habe ich das mit den Variablen auch geloest" genau bedeutet.

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
fdff

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 18.07.2013, 11:06     Titel:
  Antworten mit Zitat      
HI Jan,

ja habe ich schon gemacht =)
siehe Thread ' R2013a Variablenuebergabe zwischen Callbackfunktionen'
Danke =)
 
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 - 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.