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

Gui Datenübergabe zwischen Funktionen

 

Dagnabit
Forum-Century

Forum-Century


Beiträge: 244
Anmeldedatum: 23.04.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 15.05.2009, 08:46     Titel:
  Antworten mit Zitat      
Servus Axel

Was bedeutet
Zitat:
da ich diesen Code auch wieder in eine zweite Funktion schreibe habe ich wieder den gleichen Fehler -.-
?

Wenn Du den Code meines letzten Beitrags in die opening_Fcn oder output_Fcn schreibst, wirst Du mit jedem Programmstart aufgefordert Deine Excel- files zu wählen (Du musst, wenn Du neue Daten holen willst das Programm neu starten).

Wenn Du den Code zusätzlich in einen Button_Callback steckst, kannst Du ggf. neue Daten laden (nicht vergessen die alte Variable vorher löschen).

Wenn die Sache mit den handles (+guidata) nicht richtig läuft (für was ich keine Erklärung habe), verwende doch setappdata(...)/ getappdata(...). Das klappt sicher.
_________________

lg
Martin
Private Nachricht senden Benutzer-Profile anzeigen


MasterofDesaster
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 60
Anmeldedatum: 17.04.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 15.05.2009, 09:06     Titel:
  Antworten mit Zitat      
Hallo Martin,

ich möchte diese Funktion nicht in die Opening Funktion schreiben, da ich die Daten erst später auswählen kann.

Daher erstelle ich eine eigene Funktion die nur das einlesen der Daten beherbergt. Muss ich hier am Anfang die bestehenden handles löschen? Um sie danach neu zu erstellen?

Mit setappdata bekomme ich es nicht so richtig hin, weil er mit immer sagt, dass es sich um eine undefinierte Variable handelt die er nicht beschreiben kann...

Code:
setappdata(Daten,'Daten_In',xlsread(['C:\Dokumente und Einstellungen\Werte.csv'],'a2:a50000');


Gruß und sry für meine Fragen
Private Nachricht senden Benutzer-Profile anzeigen
 
Dagnabit
Forum-Century

Forum-Century


Beiträge: 244
Anmeldedatum: 23.04.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 15.05.2009, 09:44     Titel:
  Antworten mit Zitat      
Servus Axel

Zitat:
Muss ich hier am Anfang die bestehenden handles löschen?

VORSICHT: Lösche niemals die gesamte handles- structure. Wenn Du handles manipulierst, löscht/ überschreibst Du u.U. handles zu GUI-Elementen. Matlab selbst verwendet die handles- structure bei mit guide erstellten GUI´s. Das kann fatale Folgen haben! (Deswegen bin ich Anhänger von appdata).

So wie Du setappdata verwendet hast, kanns auch nicht funktionieren, da das erste Inputargument ein handle sein muss! Mit appdata speicherst Du Daten in einem GUI-Element oder figure-Element.
Wenn Du ein Hauptfenster hast, ist es zweckmäßig die Daten im Hauptfenster zu speichern. Das handle zum Hauptfenster erhälts Du mit
Code:


Umgelegt auf Deinen Versuch also
Code:
setappdata( gcf, 'Daten_In', xlsread(['C:\Dokumente und Einstellungen\Werte.csv'],'a2:a50000');


Beim Abrufen der Daten verwende dann
Code:
Daten_In = getappdata( gcf, 'Daten_In');


Näheres findest Du in der Hilfe zu den Befehlen
_________________

lg
Martin
Private Nachricht senden Benutzer-Profile anzeigen
 
MasterofDesaster
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 60
Anmeldedatum: 17.04.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 15.05.2009, 09:54     Titel:
  Antworten mit Zitat      
Hallo Martin,

jetzt funktioniert es. Vielen Dank!

Ich bin zur handles Struktur gekommen, weil ich das zu erst in der Hilfe gefunden habe Wink
Aber muss ich einzelne handles erst löschen bevor ich sie wieder beschreiben kann? Oder überschreibt er sie einfach?


Gruß
Axel
Private Nachricht senden Benutzer-Profile anzeigen
 
Dagnabit
Forum-Century

Forum-Century


Beiträge: 244
Anmeldedatum: 23.04.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 15.05.2009, 10:02     Titel:
  Antworten mit Zitat      
Sehr gut- endlich klappt mal was Wink

Prinzipiell wird Deine Variable in handles überschrieben.

Aber nehmen wir mal an Du liest 4 .xls- files ein.
Diese werden dann in Daten gespeichert. Daten ist dann ein Cellarray der Dimension [1 x 4].
Die nächste Berechnung benötigt nur 3 .xls- files. Daten hätte dann die Größe [1 x 3].
Nachdem aber Daten{1,4} nie entfernt wurde, bleibt die Dimension der Daten bei [1 x 4].
Verstehen Sie? Cool
_________________

lg
Martin
Private Nachricht senden Benutzer-Profile anzeigen
 
MasterofDesaster
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 60
Anmeldedatum: 17.04.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 15.05.2009, 10:15     Titel:
  Antworten mit Zitat      
JA Idea

Danke DIR Laughing


Habe durch den Support von Mathworks auch gerade die Lösung für das handle-Problem gefunden:

Code:
handles = guidata(hObject); % Aktualisieren der Handle-Variablen


dieser Code fehlte...dann funktioniert es auch. Nochmal Alles:

Code:
function Daten_Import_Callback(hObject, eventdata, handles)
   
    handles.Daten= xlsread(['C:\Dokumente und Einstellungen\Werte.csv'],'a2:a50000');
       
Ergebnis1 = handles
guidata(hObject, handles);


% --- Executes on button press in pushbutton1.
function pushbutton1_Callback(hObject, eventdata, handles)

  Daten_Import_Callback(hObject, eventdata, handles);
  handles = guidata(hObject);  % Aktualisieren der Handle-Variablen
  a = handles.Daten;

Ergebnis2 = handles


Gruß
Axel
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen

Gehe zu Seite Zurück  1, 2

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.