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
Forum-Anfänger

Forum-Anfänger


Beiträge: 29
Anmeldedatum: 17.04.18
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 19.04.2018, 18:08     Titel: Excel Datei in GUI laden
  Antworten mit Zitat      
Hallo lieber Forenuser.
Ich habe als blutiger MatLab beginner ein Problem mit GUI.
Ich bekomme aus der Uni etliche Excel Dateien mit über 15 Spalten und ca. 15.000 Zeilen.
Meine GUI soll eine Datei laden und in dem linken Koordinatensystem die ersten ca. 120 Spalten der 9. Spalte darstellen (ergibt eine Ellipse).
Im rechten Koordinatensystem soll die nächste Ellipse mit einem Drop-Down Menü ausgewählt und dargestellt werden.


Das ist mein Code des pusbuttons:

[code]% Programm
function pushbuttonLoadXLSX_Callback(hObject, eventdata, handles)
% hObject handle to pushbuttonLoadXLSX (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
loadedData = uigetfile('*.xlsx', 'Wähle xlsx datei: ');
handles.fileName = xlsread(loadedData,1,'I2:J113');
guidata(hObject, handles); [/code]

Mit Hilfe des Debuggers habe ich herausgefunden, das kurzzeitig die Daten in "fileName" gespeichert werden, danach aber weg sind.
Ich muss gestehen, ich weiß nicht was handles etc ist, das ist alles try and error und gaaanz viel youtube.

Brauche dringend Hilfe, da es für eine Abschlussarbeit gedacht ist.
MfG

mainGui.fig
 Beschreibung:

Download
 Dateiname:  mainGui.fig
 Dateigröße:  29.26 KB
 Heruntergeladen:  447 mal
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: 24.04.2018, 08:43     Titel:
  Antworten mit Zitat      
Hola
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.495
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 24.04.2018, 08:46     Titel:
  Antworten mit Zitat      
Hallo,

in diesem Codeteil sehe ich keine Probleme.
Ein reproduzierbares Beispiel wäre hilfreich (.m + .fig).

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: 24.04.2018, 10:10     Titel:
  Antworten mit Zitat      
Danke für deine Antwort !

Im Anhang die beiden Dateien.
MfG


Edit:
Also wie gesagt, kurzzeitig sind die Werte in fileName gespeichert und im Workspace zu sehen. Dann aber wieder weg.

Für später:
Ist es möglich (bzw. für MICH möglich) zu Programmieren, das zusätzlich noch Xcenter, Ycenter, der Winkel der Regression Phi und Xdim und Ydim dort angezeigt werden?
Ich habe mir fit_ellipse bereits rutnergeladen und soweit modifiziert, das ich die Werte alle korrekt erhalte. Mir fehlt "nur" noch die Schnittstelle zum GUI.
Aber das hat ja noch Zeit, die Lösung meines 1. Problems ist aktuell wichtiger ^^'
Danke

mainGui.fig
 Beschreibung:

Download
 Dateiname:  mainGui.fig
 Dateigröße:  29.26 KB
 Heruntergeladen:  418 mal
mainGui.m
 Beschreibung:

Download
 Dateiname:  mainGui.m
 Dateigröße:  4.84 KB
 Heruntergeladen:  431 mal
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


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

die handles-Struktur ist für GUI-interne Daten gedacht. Nach jetzigem Stand versuchst du nicht, die Daten in einem anderen Callback zu verwenden. Das wäre aber die Idee davon. Auf dieser Seite ist das genauer beschrieben:
https://de.mathworks.com/help/matla.....data-among-callbacks.html

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: 30.04.2018, 12:47     Titel:
  Antworten mit Zitat      
Hallo Harald,
danke für den Link.
Ich muss aber gestehen, das er mir nicht weiterhilft.
Warum sind die Werte nur kurzzeitig gespeichert, und dann wieder weg?
Wie kann ich darauf zugreifen?
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


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

Zitat:
Warum sind die Werte nur kurzzeitig gespeichert, und dann wieder weg?

Dem ist nicht so. Die Werte bleiben in der Handles-Struktur abgespeichert. Diese ist lediglich nicht im Base Workspace zu sehen, sondern nur in den Callbacks.

Zitat:
Wie kann ich darauf zugreifen?

Innerhalb der Callbacks mit handles.fileName.

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: 01.05.2018, 17:05     Titel:
  Antworten mit Zitat      
1000 Dank Harald,
Die erste Ellipse wird genau so geplottet, wie sie soll!!!
Jetzt noch 2-3 Sachen, wo ich ebenfalls auf deine Hilfe hoffe ^^'

1. Ich habe die Graphen mit xlabel und ylabel umgenannt. Sobald er aber eine Datei einliest und plottet verschwindet die Beschriftung

[code]
function mainGui_OpeningFcn(hObject, eventdata, handles, varargin)
% This function has no output args, see OutputFcn.
% hObject handle to figure
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% varargin command line arguments to mainGui (see VARARGIN)

% Choose default command line output for mainGui
handles.output = hObject;

% Update handles structure
guidata(hObject, handles);
axes(handles.axes1);
xlabel('Absolute Position [rad]')
ylabel('Drehmoment [Nm]')

axes(handles.axes2);
xlabel('Absolute Position [rad]')
ylabel('Drehmoment [Nm]')

% UIWAIT makes mainGui wait for user response (see UIRESUME)
% uiwait(handles.figure1);
[/code]

2. Der Nutzer meines Programms soll mit Hilfe des Pop-Up Menü's den x-ten Lastwechsel auswählen und dann zeichnen lassen. Hier bin ich endgültig am Ende meines Lateins. Wird das dann im Callback des Pop-Ups geschrieben? und auch dort mit Handles.FileName ?

3. Im Anhang findet ihr eine gekürzte Version meiner Excel Dateien, hier sind nur die Zeiten zu sehen. Anhand der Zeiten lassen sich die Lastwechsel bestimmen. Ein "Block" stellt dabei einen Lastwechsel dar.
ca. Zeile 1-112 sind Lw 1, Zeile 113-224 Lw 2, usw. usw.!
Wie kann ich das in dem Pop-Up Menü unterbringen? Es sind leider nicht immer 110 Zeilen, sondern variiert. Ich hatte mal an eine If-Anweisung gedacht. Also falls der Nutzer Lastwechsel Nr 141 haben möchte, wird nur der Bereich von 141 geplottet.
Ich hoffe ihr versteht wie ich das meine, schwierig in Worte zu fassen.

Danke bis hierhin Smile!
MfG
Fabian

MatLabForum.xls
 Beschreibung:

Download
 Dateiname:  MatLabForum.xls
 Dateigröße:  583.5 KB
 Heruntergeladen:  417 mal
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: 02.05.2018, 09:27     Titel:
  Antworten mit Zitat      
Das Problem der verschwindenden Beschriftung habe ich mit "hold on" gelöst!
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


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

zu 3.: mit
Code:

solltest du den Anfang eines neuen Blocks finden können.

zu 2.
Zitat:
Wird das dann im Callback des Pop-Ups geschrieben? und auch dort mit Handles.FileName ?

Ja. Du musst abfragen, was ausgewählt wurde, und basierend darauf die passenden Daten extrahieren und verarbeiten.

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: 02.05.2018, 10:34     Titel:
  Antworten mit Zitat      
Danke Harald, werde mich gleich mal daran machen.

Jetzt noch meine, hoffentlich, letzt Frage: ich habe fit_ellipse als template heruntergeladen und soweit bearbeitet, das es die Werte ausgibt, die ich brauche.
Dies sind Xcenter, Ycenter, Xdim, Ydim und Phi!

Ich habe fit_ellipse jetzt einfach mit in mein GUI kopiert (wrsl sehr unsauber, aber für mich am einfachsten). Siehe Anhang.

Die Ergebnisse von fit_ellipse werden in einer Structure gespeichert.
Wie kann ich die im GUI in einer Tabelle darstellen?


Edit: Kannst du mir beim popupmenuLw_Callback etwas mehr Hilfestellung geben?
Ich weiß da nicht weiter. Wenn der Nutzer auf das Popupmenu drückt, soll dort eine Liste mit Zahlen stehen. Diese sind aktuell aber nicht in der Excel Datei angegeben, sondern nur die Zeiten, wie ich sie dir geschickt habe.
Ich weiß schlicht und eifnach nicht, wie ich find(diff(t)>100) anwenden soll :/

mainGui.m
 Beschreibung:

Download
 Dateiname:  mainGui.m
 Dateigröße:  8.59 KB
 Heruntergeladen:  415 mal
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, 10:11     Titel:
  Antworten mit Zitat      
Hallo!
Ich bin wieder ein kleines Stückchen weitergekommen.
ellipse_t war ein struct, und mit struct2cell(ellipse_t) habe ich daraus einen Spaltenvektor erzeugt. Diesen habe ich transponiert und somit meinen Zeilenvektor erhalten.
Jetzt habe ich die uiTable soweit formatiert, das die Spalten und Zeilen beschriftet sind.
Die erste Spalte heißt "Lastwechsel". Die erste Zeile 1. Die 1 soll aber unter "Lastwechsel" stehen.
Wenn ich diesen teil "manipuliere" bekomme ich nur Fehlermeldungen.

[code] ellipse_t = struct( ...
'Xcenter',X0_in,...
'Ycenter',Y0_in,...
'Xdim',Xdimx,...
'Ydim',Ydimy,...
'phi',orientation_degree,...
'status','' );
[/code]

mainGui.m
 Beschreibung:

Download
 Dateiname:  mainGui.m
 Dateigröße:  8.78 KB
 Heruntergeladen:  389 mal
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


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

Zitat:
Wenn ich diesen teil "manipuliere" bekomme ich nur Fehlermeldungen.

Wie "manipulierst" du, und welche Fehlermeldung bekommst du?

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, 12:48     Titel:
  Antworten mit Zitat      
Hallo,
wie gesagt, ich lese fit_ellipse durch und versuche mit logischem überlegen, es für mich anzupassen. MatLab ist einfach schon zu lange her für mich.

aus:
[code] ellipse_t = struct( ...
'Xcenter',X0_in,...
'Ycenter',Y0_in,...
'Xdim',Xdimx,...
'Ydim',Ydimy,...
'phi',orientation_degree,...
'status','' );[/code]

wollte ich zb. das Status,' ' löschen, und über Xcenter,X0_in,... die lastwechsel einfügen.
zb. so
[code] Lw = 1
% pack ellipse into a structure
ellipse_t = struct( ...
'Lastwechsel', Lw, ...
'Xcenter',X0_in,...
'Ycenter',Y0_in,...
'Xdim',Xdimx,...
'Ydim',Ydimy,...
'phi',orientation_degree,...
);
[/code]

Dann bekomme ich den fehler
Error: File: mainGui.m Line: 193 Column: 9
Unbalanced or unexpected parenthesis or bracket.

wenn ich " ); " hinter "phi' orientation_degree,... schreibe, kommt
Error: File: mainGui.m Line: 193 Column: 5
Expression or statement is incorrect--possibly unbalanced (, {, or [.
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


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

letzte beiden Zeilen zusammenfassen zu:
Code:
'phi',orientation_degree);


Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen

Gehe zu Seite 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.