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 mit mehreren Spalten einlesen mit xlsread

 

Knille
Forum-Newbie

Forum-Newbie


Beiträge: 5
Anmeldedatum: 04.12.13
Wohnort: ---
Version: R2013a
     Beitrag Verfasst am: 04.12.2013, 19:14     Titel: Excel Datei mit mehreren Spalten einlesen mit xlsread
  Antworten mit Zitat      
Hallo Leute,

ich habe in der Uni ein Projekt bekommen, indem ich mit Matlab eine Auswerteroutine schreiben muss. Das Problem ich hatte 2 Wochen Zeit um mich in Matlab einzuarbeiten, um dann mit dem Programmieren zu beginnen. Habe mir also Bücher besorgt, mich eingelesen und eingearbeitet mithilfe von Tutorien. Bin dabei auch auf dieses Forum gestoßen und habe hier nach einer Lösung meines Problems gesucht aber nicht wirklich etwas gefunden was mir weiter geholfen hat.

Nun das kleine (für mich große Wink )Problem:


Ich habe eine Excel-Tabelle mit mehreren Spalten bekommen. Diese soll nun in meinem Script eingelesen werden (was eigentlich mit xlsread funktioniert, wie ich gelesen habe) damit ich dann eine Auswertung der vorhandenen Daten machen kann. Desweiteren sollen die Spaltennamen (wie z.B. Zeit und HEG_Ratio) als Variablennamen benutzt werden.
Dies funktioniert super, solange ich das alles über den Button Data Import im Command Window mache. Allerdings soll der Benutzer nichts machen außer, nach Aufforderung des Programmes die entsprechende Excel Datei auswählen. Den Rest soll meine Funktion alleine machen.

Es wäre absolut super, wenn mir jemand helfen kann, wie ich meine/n Funktion/Code schreiben muss, damit ich jede Spalte einzeln als Matrix habe und die Spaltennamen meine Variablen sind damit ich dann mit jeder Spalte weiterrechnen kann.

Vielen Dank schonmal im Vorraus für Antworten

Gruß vom Anfänger
Knille
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 05.12.2013, 00:02     Titel:
  Antworten mit Zitat      
Hallo,

hast du denn mal versucht, den xlsread zu verwenden?
Wenn ja, wie?
Auf welche Probleme bist du dabei gestoßen?

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Seban
Forum-Meister

Forum-Meister


Beiträge: 600
Anmeldedatum: 19.01.12
Wohnort: ---
Version: ab R2014b
     Beitrag Verfasst am: 05.12.2013, 09:43     Titel:
  Antworten mit Zitat      
Hallo Knille,

Ergänzend ein paar hilfreiche Befehle:
File wählen:
http://www.mathworks.de/de/help/matlab/ref/uigetfile.html

Daten lesen:
http://www.mathworks.de/de/help/matlab/ref/xlsread.html
Tipp: [num,txt,raw] = xlsread(...)

Auf Bereiche einer Matrix zugreifen:
http://www.mathworks.de/de/help/matlab/ref/colon.html

MfG,
Seban
Private Nachricht senden Benutzer-Profile anzeigen
 
Knille
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 5
Anmeldedatum: 04.12.13
Wohnort: ---
Version: R2013a
     Beitrag Verfasst am: 05.12.2013, 12:05     Titel:
  Antworten mit Zitat      
Hallo,

vielen Dank schonmal an euch beiden für die schnellen Antworten.

@Harald ja das habe ich schon versucht und bin dann auf folgendes Problem gestoßen, dass ich eine große Matrix bekomme anstelle von vielen einzelen Spaltenvektoren. Und mit der großen Matrix bekomme ich es dann nicht hin z.b. aus der Zeit-Spalte und der HEG_Ratio-Spalte einen Graphen zu zeichnen, wenn ich diese beiden als Variablen für die x und y-Werte eingebe.

Code:
%Auswählen der auszuwertenden Datei
[FileNames,PathName] = uigetfile('*.xls','Open xls files (*.xls)','MultiSelect','on');
cd(PathName);

%Einlesen der Datei
[nums, txt] = xlsread(FileNames);
%Bestimmen der Spaltenüberschriften=Variablenname
varNames = char(txt(7,:));

mkdir('Data');
save(strcat(cd,'\Data\','Imported data'));
disp('Import complete');
 


So habe ich das bisher versucht, da ich das so verstanden habe, dass die funktion xlsread genau so funktioniert wie der Daten Import im Command Window.
Private Nachricht senden Benutzer-Profile anzeigen
 
BlackDread
Forum-Century

Forum-Century


Beiträge: 212
Anmeldedatum: 11.05.11
Wohnort: ---
Version: 2015a
     Beitrag Verfasst am: 05.12.2013, 13:40     Titel:
  Antworten mit Zitat      
Hallo Knille,

wenn du die Variablen so im Workspace erstellen willst, ist das z.B. per eval möglich. Der Vorteil darin ist, dass egal in welcher Spalte eine Variable steht, du die richtige Variable zur Hand hast.
Du solltest allderings, falls du das Excelsheet vorher mit Matlab erstellst, in Betracht ziehen die Variablen einfach als mat-File abzuspeichern.

Code:
for idx = 1:numel(txt)
   eval([txt{idx} '=nums(:,' num2str(idx) ');'])
end
 


Als Anmerkung: eval-Konstruktionen können manchmal hilfreich sein, meistens aber sorgen sie für einen Code der schwerer zu debuggen ist. Außerdem kann bei automatisierter Erstellung von Variablen der spätere Zugriff erheblich erschwert sein. In dem Fall bieten sich dann Cell-Arrays an.

Viele Grüße
Chris
_________________

--> Kapieren statt Kopieren <---
____________________________________________________
FAQs sind dazu da, FAQs zu beantworten Wink
Richtig fragen!
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


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

eine schöne Alternative ist die Verwendung von Tables (neu in 2013b, in Standard-MATLAB) bzw. Dataset Arrays (gibt es schon länger, in der Statistics Toolbox).

Damit hat man dann Daten, die auch Spaltennamen haben.
Code:


Grüße,
Harald
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 - 2025 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.