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

Tabelleneinträge in Plot über Callback verwenden

 

Fragensteller01
Forum-Newbie

Forum-Newbie


Beiträge: 7
Anmeldedatum: 19.02.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 31.05.2017, 14:54     Titel: Tabelleneinträge in Plot über Callback verwenden
  Antworten mit Zitat      
Hallo zusammen,

ich habe folgendes Anliegen:

Ich habe über eine Datenbank eine Tabelle "Daten" in Matlab eingelesen. Diese besitzt 15 Spalten wovon zwei Spalten (Datum und Messwerte) als Variablen für einen Plot wie folgt dargestellt werden sollen:
Code:
plot(Daten.Datum, Daten.Messwerte)


Der Plot soll über ein Button in der GUI abgerufen werden und in einem vorgegeben Grafikobjekt dargestellt werden.
Wie muss der Callback-Befehl erweitert werden, dass ich die Spalten als Variablen verwenden kann?

Code:
function pushbutton1_callback(hObject, eventdata, handles)
varZeit = get (Daten.Datum, 'datetime');
varMesswerte = get (Daten.Messwerte, 'double')

handles.axis1=plot(varZeit, varMesswerte);
guidata (hObject, handles);


Vielen Dank im Voraus!
Private Nachricht senden Benutzer-Profile anzeigen


Fragensteller01
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 7
Anmeldedatum: 19.02.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 02.06.2017, 08:05     Titel: Variablen definieren
  Antworten mit Zitat      
Vielleicht habe ich mich etwas zu umständlich ausgedrückt. Ich bin beim Thema GUI leider noch absoluter Anfänger.

Daher die Frage:
Wie definiere ich Variablen im Workspace bzw. in der Callback-Funktion, die ich dann über einen Button plotten lassen kann?
Die Variablen sollen Spalteneinträge der eingelesenen Tabelle sein.

Variablen als global zu deklarieren kann da zu Schwierigkeiten führen?

Vielen Dank!
Private Nachricht senden Benutzer-Profile anzeigen
 
Fragensteller01
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 7
Anmeldedatum: 19.02.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 08.06.2017, 10:12     Titel:
  Antworten mit Zitat      
Kann mir keiner weiterhelfen?
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: 08.06.2017, 21:24     Titel: Re: Variablen definieren
  Antworten mit Zitat      
Hallo Fragensteller01,

Die Frage ist ein wenig unklar, aber ich versuche es mal.
Zitat:
Variablen als global zu deklarieren kann da zu Schwierigkeiten führen?

Globale Variablen sind immer ein fieser Klotz am Bein. Sowie irgendein anderes Programm die gleichen Variablen-Namen verwendet, ist das Chaos undurchdringlich.
Matlab biete für die Speicherung von Daten in einem GUI den "handles" Struct an. Es ist zwar verwirrend, dass der "handles" heißt und auch Handles enthält. Zudem bin ich nie sicher, ob die Version in den Input-Argumenten des Callbacks tatsächlich die aktuellen Werte enthält, oder ob es die Version ist, die während der Erstellung des Callbacks gültig war. Darum ziehe ich immer ein aktuelles Update vor:

Code:
function pushbutton1_callback(hObject, eventdata, handles)
handles = guidata(hObject);  % Get current value from figure


Nun habe ich keine Ahnung, was dieser Code bewirkt:
Code:
varZeit = get (Daten.Datum, 'datetime');
varMesswerte = get (Daten.Messwerte, 'double')

Der get -Befehl benötigt einen Handle als ersten Input. "Daten.Datum" ist aber wahrscheinlich etwas anderes. Nämlich was?
Vielleicht sind das die Daten, die Du aus dem Excel-File eingelesen hast? Geschah das auch in einem Callback des GUIs? Wenn ja, wie?

Ich rate mal:
Code:
function pushbutton1_callback(hObject, eventdata, handles)
handles = guidata(hObject);  % Get current value from figure

handles.axes1=plot(handles.Daten.Datum, handles.Daten.Messwerte);
guidata(hObject, handles);[/code]
Jetzt geht es noch darum, wie die Daten denn in den handles Struct kopiert werden.

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
Fragensteller01
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 7
Anmeldedatum: 19.02.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 12.06.2017, 15:48     Titel:
  Antworten mit Zitat      
Vielen Dank Jan!
eine Frage habe ich allerdings noch.

über
Code:

varZeit = get (Daten.Datum, 'datetime');
varMesswerte = get (Daten.Messwerte, 'double')
 


wollte ich die Spalten einer Excel-File als Variablen definieren.
Habe es jetzt über die load-Funktion wie folgt gelöst:
Code:

datentabelle = load('daten.mat');
x= datentabelle.DatumUhrzeit  %DatumUhrzeit ist dabei eine Spalte in der Excelfile;
y= datentabelle.qKfz;
plot(x,y);
 


Wie kann ich in dem Plot jetzt nach einzelnen Tagen filtern, wenn die Einträge in der Excelfile für DatumUhrzeit über mehrere Wochen und Monate gehen?

Besten Dank!
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 - 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.