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

Excel Datei in GUI laden

 

Nester
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 29
Anmeldedatum: 17.04.18
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 03.05.2018, 14:00     Titel:
  Antworten mit Zitat      
Hi,

prima. Danke dir Harald, das funktioniert.
Also das Programm ist zumindest in der Lage, immer den ersten Lastwechsel darzustellen.

Kannst du mir noch bei den auszuwählenden Lastwechseln helfen?
find(diff(t)>100) verstehe ich prinzipiell, ich weiß aber nicht, wo das hignehört und was t ist. Klar, es ist die zeit. aber definiere ich t hier vorher? oder muss die Spalte in Excel t heißen?
Und wie wird das in dem Popup Menü geregelt? Da müssen dann ja die ganzen Lastwechseln stehen.

Da stehe ich komplott aufm Schlauch...
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.448
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 03.05.2018, 14:17     Titel:
  Antworten mit Zitat      
Hallo,

t sind die Zeitdaten, z.B. mit xlsread importiert.

Zitat:
Und wie wird das in dem Popup Menü geregelt? Da müssen dann ja die ganzen Lastwechseln stehen.

Bitte die Frage konkretisieren.
Weißt du nicht, wie man etwas ins Popup Menü einträgt?
Oder geht es darum, wie etwas bestimmtes eingetragen wird? Falls es das ist, was und in welcher Form?
Ich würde die Form einfach halten, weil du damit auch wieder im Callback arbeiten musst.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Nester
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 29
Anmeldedatum: 17.04.18
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 03.05.2018, 14:30     Titel:
  Antworten mit Zitat      
Hallo,
aber wenn ich im Popup-menu_callback einfach find(diff(t) > 100) eingebe, kriege ich, logischerweise, den fehler "undefinied variable t" oder so ähnlich.

Zum konkretisieren: Naja, die Prüfmaschine fährt x-tausend Lastwechsel und der Nutzer meines Programms soll mitHilfe des Dropdownmenüs einen Lastwechsel auswählen können, der ihm dann geplottet wird und in der guitable2 werden ihm dann die Werte (Xcenter etc.) angezeigt.

So der Plan.
Und am Ende kann man dann auf einen Blick sehen, wie sich die Ellipse im Vergleich zum ersten Lastwechsel (der dauerhaft links geplottet wird) verändert.

Aber, wie gesagt, mit dem Dropdownmenü (bzw. Popupmenu) komme ich überhaupt nicht weiter :/!

MfG
Fabian
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.448
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 03.05.2018, 15:38     Titel:
  Antworten mit Zitat      
Hallo,

Zitat:
aber wenn ich im Popup-menu_callback einfach find(diff(t) > 100) eingebe, kriege ich, logischerweise, den fehler "undefinied variable t" oder so ähnlich.

Wie gesagt: t sind die Zeitdaten, z.B. mit xlsread importiert. Vielleicht willst du auch in der handles-Struktur abgespeicherte Daten verwenden? Das kann ich nicht wissen.

Zitat:
Aber, wie gesagt, mit dem Dropdownmenü (bzw. Popupmenu) komme ich überhaupt nicht weiter :/!

Das beantwortet nicht meine Frage. Was genau hast du versucht und welche Probleme sind dabei aufgetreten?

Zitat:
der Nutzer meines Programms soll mitHilfe des Dropdownmenüs einen Lastwechsel auswählen können

Ja, aber wie soll das denn angegeben werden? LW1, LW2, ...? Oder Teil start1-end1, Teil start2-end2, ...? Oder ganz anders?

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Nester
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 29
Anmeldedatum: 17.04.18
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 03.05.2018, 17:05     Titel:
  Antworten mit Zitat      
Hi,
[quote]Das beantwortet nicht meine Frage. Was genau hast du versucht und welche Probleme sind dabei aufgetreten? [/quote]
Naja, im Endeffekt ist MatLab ja auch eine Sprache, die ich leider nicht spreche.
Kurzum: ich weiß nicht wo und wie ich anfangen soll. Ich kenne schlichtweg die Befehle nicht. Und durch googlen verstehe ichs nicht unbedingt.

Wenn der Nutzer auf das PopupMenu drückt, soll dort "1 2 3 4 5 6 7 bis x" stehen.
Oder "Lw1 Lw2 Lw3" etc. Das ist nicht so wichtig. Aber er soll halt dort einen Lastwechsel auswählen. Wenn er dies getan hat, soll der entsprechende Bereich in der Excel Datei ausgelesen und geplottet werden.

Eben so wie das Programm das für den ersten Lastwechsel tut, aber eben über die Benutzereingabe.
Private Nachricht senden Benutzer-Profile anzeigen
 
Nester
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 29
Anmeldedatum: 17.04.18
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 04.05.2018, 14:20     Titel:
  Antworten mit Zitat      
Hallo Harald und co,
ich habe heute noch einmal mit meinem Betreuer gesprochen. Das GUI soll nun etwas anders aussehen: Nur ein Koordinatensystem und nur eine Tabelle.

In der Tabelle sollen alle werte dargestellt werden, die ich zuvor in Fit_ellipse berechne. In dem Koordinatensystem soll ich mit Hilfe des Popupmenüs (3 popupmenüs) 3 lastwechsel auswählen können die dann geplottet werden.

Ich wäre euch für eure Hilfe extrem dankbar, da das Programm nächste Woche laufen soll.
Für Erfassung der ganzen Lastwechsel Bereiche habe ich an eine For-Schleife gedacht, die in etwa so aussieht.

[code]endzeile = 1
For j = 1 to 2
For i = endzeile+1 to 100000
startzeile = endzeile +1
If D(i+1) - D(i) > 50 Then
endzeile = i
End For
End if
Next[/code]

Dann müsste das: [code]handles.Daten = xlsread(loadedData,'I2:J113');
guidata(hObject, handles);
% Plotten
axes(handles.axes1);
x = handles.Daten(:,1);
y = handles.Daten(:,2);
plot(x,y)[/code]

dementsprechend angepasst werden.
Hilfe ?! ^^'
MfG
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.448
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 04.05.2018, 14:45     Titel:
  Antworten mit Zitat      
Hallo,

wenn du Schwierigkeiten mit der MATLAB-Sprache / Syntax hast, schau dir bitte das MATLAB Onramp an: https://matlabacademy.mathworks.com/

Damit solltest du zumindest mal einen Anfang machen können. Wenn es dann Probleme in der Syntax gibt, helfen wir gerne.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Nester
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 29
Anmeldedatum: 17.04.18
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 08.05.2018, 10:45     Titel:
  Antworten mit Zitat      
Hallo Harald,
ich bin jetzt noch einmal einen großen Schritt weitergekommen.
Inzwischen werden alle Ellipsen korrekt geplottet und die Werte in einer Tabelle ausgegeben.
[code]tableT = nan(1,6);

handles.files = xlsread(handles.loadedData);
Time = handles.files(:,4);
handles.groupends = find(diff(Time)>100); %Gruppenenden
handles.groupends = [0; handles.groupends];
handles.ngroups = length(handles.groupends);

for i = 1:handles.ngroups-1
%handles.Daten = xlsread(loadedData,'I2:J113');
handles.Daten = handles.files(handles.groupends(i)+1:handles.groupends(i+1),[9 10])
guidata(hObject, handles);[/code]

hat mit find(diff()) sehr gut funktioniert, danke für den Tipp!

Jetzt fehlt "nur" noch eine Sachen.
Undzwar plottet er jetzt in jedem Schleifendurchlauf eine Ellipse und wenn er fertig ist wird die Tabelle gefüllt.
Ich habe aber 3. Popupmenu Buttons, die alle jeweils beim betätigen die gesamten Lastwechsel anzeigen sollen.
Sprich: die Tabelle ist immer mit allen Werten gefüllt, lediglich der Graph lässt sich durch die Popupmenus aktualisieren. Es sollen nämlich nicht immer ALLE Ellipsen geplottet werden, sondern immer nur die 3, die man über die Popupmenus auswählt.
Als Beispiel: 1. Lw 10, 2. Lw 90, 3. Lw 114.

Ich habe mir schon ein Video von Doug Hull angesehen, aber dem konnte ich nicht richtig folgen.
Wo fange ich da an? Schreibe ich den Code in die Callbacks der 3 popupmenu-buttons?
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.448
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 08.05.2018, 18:59     Titel:
  Antworten mit Zitat      
Hallo,

in die Callbacks der Popupmenüs schreibst du jeweils das, was beim Ändern der Auswahl in diesem Popupmenü passieren soll. Das kann das Hinzufügen, aber auch das Entfernen von Plots sein. Um Plots entfernen zu können, ist es hilfreich, sich die Handles darauf abzuspeichern.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Nester
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 29
Anmeldedatum: 17.04.18
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 08.05.2018, 19:48     Titel:
  Antworten mit Zitat      
Hallo Harald.
Sry für die dreist wirkende Frage, aber kannst du mir irgendwie ein bisschen genauer helfen? Also ein Code Beispiel oder so? Wo ich anfangen kann.
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.448
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 08.05.2018, 22:24     Titel:
  Antworten mit Zitat      
Hallo,

mir ist das konkrete Problem (nicht in Lastwechseln, sondern hinsichtlich dem was zu programmieren ist) nicht klar. Deswegen kann ich dir auch nicht weiterhelfen.
Wo liegt das Problem? Zugriff auf Daten? Daten auswählen? Plot erstellen? Plot entfernen?

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Nester
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 29
Anmeldedatum: 17.04.18
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 09.05.2018, 09:48     Titel:
  Antworten mit Zitat      
Ok.
Also: Derzeit befindet sich der Plot-Befehl innerhalb der for-schleife. Sprich: für jeden Durchlauf der Schleife wird eine Ellipse geplottet. Nachdem die Schleife beendet ist sind dementsprechend ca 120 Ellipsen geplottet worden.
Ich möchte aber nicht, das jede Ellipse geplottet wird. Ich möchte praktisch die Ellipsen "abspeichern" und über die 3 Popupmenu's jeweils auswählen, welche geplottet werden sollen.
Laienhaft ausgedrückt (so wie ich mir das vorstelle): Ich habe eine Matrix, in der mit Hilfe der for-schleife die Ellipsen-Parameter abgespeichert werden und mit Hilfe der Popupmenu's kann ich dann immer 3 Ellipsen darstellen lassen.

Also ich drücke auf das erste Popupmenu, das öffnet sich, und dort stehen eben alle 120 Lastwechsel. Dann drücke ich z.B. auf 24 und die 24. Ellipse wird geplottet.
Beim 2. Popupmenu sind ebenfalls alle 120 Ellipsen hinterlegt. Dort drücke ich z.B. auf 57. Jetzt sind sowohl die 24 Ellipse als auch die 57. zu sehen.
Beim 3. Popupmenu drücke ich auf 113 und nun sieht man eben die 24., 57. und 113. Ellipse.
Am liebsten wäre es mir, wenn man dann beim z.B. ersten Popupmenu einfach auf z.B. 10 drückt, und dann eben die 24. verschwindet und die 10. Ellipse dargestellt wird.
Ich habe aber auch schon einen "clear figure" button hinzugefügt, mit dem ich die Figure löschen kann. Das "feature" wäre also nicht soo wichtig.

Hilft dir das weiter?
Private Nachricht senden Benutzer-Profile anzeigen
 
Goraker
Forum-Anfänger

Forum-Anfänger


Beiträge: 30
Anmeldedatum: 04.04.18
Wohnort: ---
Version: R2016b
     Beitrag Verfasst am: 09.05.2018, 11:14     Titel:
  Antworten mit Zitat      
Ich resete beim starte die plots in den axes immer mit

cla reset;

Für deine direkte Auswahl der Ellipsen versuch es doch mal mit
Code:

auswahl=24;

plot( x(anzahl,:), y(anzahl,:))
 

auserhalb der Schleife.

Kann sein, das ich die Reihenfolge vertauscht habe (dann x(:,anzahl))
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.448
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 09.05.2018, 11:25     Titel:
  Antworten mit Zitat      
Hallo,

und wo genau ist nun das Problem in der Umsetzung?
So, wie du das Schritt für Schritt beschreibst, könntest du das doch auch Schritt für Schritt umsetzen?

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Nester
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 29
Anmeldedatum: 17.04.18
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 09.05.2018, 12:14     Titel:
  Antworten mit Zitat      
Ich hatte den totalen Denkfehler.
Ich dachte das er nach jedem Durchlauf und Zeichnung die Daten der vorherigen Schleife überschreibt...
Ok, also in meiner "variablen" tableT ist die gesamte Tabelle gespeichert. Also Xcenter, Ycenter, Xdim, Ydim und phi.
Jetzt meine Fragen:
1. Wie kann ich daraus eine Ellipse plotten.
2. Wie und Wo kann ich die popupmenu's mit den Lw füllen (also 1-123). Diese stehen in der ersten Spalte von tableT
3. Wie und wo schreibe ich dann den Code. In die Callbacks aller 3 Popupmenus ?
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen

Gehe zu Seite Zurück  1, 2, 3  Weiter

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.