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

Mehrere Excel Tabellen einlesen

 

marjus87
Forum-Newbie

Forum-Newbie


Beiträge: 3
Anmeldedatum: 19.03.15
Wohnort: ---
Version: 2014b
     Beitrag Verfasst am: 19.03.2015, 21:23     Titel: Mehrere Excel Tabellen einlesen
  Antworten mit Zitat      
Hallo zusammen,

ich schätze so ein ähnliches Problem gab es schon. Aber ich finde bei meiner Suche einfach nichts!

Folgendes:
Ich habe 100 Messungen von denen immer 3 bis 5 zusammengehören.
Ziel ist es aus den 5 Messungen einen Durchschnittswert zu generieren und diesen mit den anderen Messreihen zu vergleichen.
Hierzu möchte ich die 3-5 Messungen, welche als xlsx vorliegen, in Matlab einlesen und aus diesen eine Tabelle generieren.

Jetzt habe ich mir folgendes überlegt.

1. Es wird gefragt wie viele Messungen eingelesen werden sollen.
->Benutzer Eingabe: 3 oder 4 oder 5
2. Die erste Datei kann ausgewählt werden
3. Das Skript startet mit dem Einlesen der ersten xlsx und schreibt die benötigten Werte in eine Tabelle (Spalte A und B)
4. Die zweite Datei kann ausgewählt werden
5. Werte werden in die selbe Tabelle (Spalte C und D) oder eine andere Tabelle (Spalte A und B) geschrieben
5. Dritte Datei kann ausgewählt werden
.
.
.
.
n. 3 oder 4 oder 5 Dateien wurden ausgewählt und in Tabellen geschrieben
n+1. Auswertung kann beginnen

Hierzu sieht mein Skript wie folgt aus:

Code:

promt = 'Wie viele Messungen sollen eingelesen werden?'

i = input(promt);
j = 1;
k = 0;

while j <= i
[filename, pathname] = uigetfile('*.xlsx','*.xlsx','Messdatei auswählen');
if isequal(filename, 0)
disp('User selected ''Cancel''')
else
disp(['User selected ', fullfile(pathname, filename)])
end

messungen(j) = readtable(filename,'Range','G:H', 'ReadVariableNames', '1');

j = j+1;
end
 


Bis "Messungen(j)" funktioniert das ganze super!
Was ich mit dem (j) andeuten möchte ist, dass der Wert Messungen nach jeder Dateiauswahl um 1 erhöht wird. Sprich ich am Ende so viele Messungen als Tabelle habe, wie ich vorher im promt eingegeben habe.

Wie kann ich bei Matlab die Funktion Messungen pro Durchlauf der Schleife um 1 erhöhne.
Sprich ich möchte bei 3 einzulesenden xlsx am Ende Messung1, Messung2, Messung3 als Tabelle eingelesen haben.

Hoffe das ist verständlich.
Wenn jemand für das Problem eine andere super einfache und bessere Lösung hat, immer her damit. Ich verzweifle etwas 😊

Gruß
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.499
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 19.03.2015, 21:34     Titel:
  Antworten mit Zitat      
Hallo,

du kannst das z.B. als Cell Array von Tables darstellen:
Code:
messungen{j} =


Wenn die Dateien üblicherweise im selben Verzeichnis liegen, kann man sie mit der 'MultiSelect' Option auch auf einmal auswählen lassen.

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

Forum-Newbie

Forum-Newbie


Beiträge: 3
Anmeldedatum: 19.03.15
Wohnort: ---
Version: 2014b
     Beitrag Verfasst am: 19.03.2015, 21:50     Titel:
  Antworten mit Zitat      
Ok, das war simpel 😃 Mein Gedanke war also richtig, nur die falschen klammern.

An MultiSelect habe ich auch schon gedacht. Bekomme aber immer folgenden Fehlermeldung:

Zitat:

Error using readtable (line 129)
Input must be a row vector of characters.

Error in ReadXLSX (line 14)
messungen{j} = readtable(filename,'Range','G:H', 'ReadVariableNames', '1');
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.499
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 19.03.2015, 21:56     Titel:
  Antworten mit Zitat      
Hallo,

readtable kann nur eine Datei auf einmal importieren.
Den readtable-Befehl musst du also schon in einer Schleife laufen lassen, aber eben nicht den Dialog.
Falls du readtable schon in der Schleife verwendest, bitte mal noch angeben, was filename jetzt ist.

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

Forum-Newbie

Forum-Newbie


Beiträge: 3
Anmeldedatum: 19.03.15
Wohnort: ---
Version: 2014b
     Beitrag Verfasst am: 20.03.2015, 13:11     Titel:
  Antworten mit Zitat      
Also das einlesen funktioniert gut.
Gibt es auch die Möglichkeit den Namen der Variable jeweils um 1 in jeden schleifendurchlauf zu erhöhen?
Wenn ich alle Messungen in das Array packe kommt man da später wieder ziemlich schwer dran um sie auszuwerten. Habe dann eine cell, die aus 5 Tabellen besteht, die wiederum 8 cells haben.

Super wäre messung1, Messung2, messungn die alle eine Tabelle mit 8 cells haben.

Ich erwarte auch keine Patentlösung mit fertigem Code. Weiß leider nicht genau nach was ich suche soll. Ein Stoß in die richtige Richtung reixht vollkommen 😊
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


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

Zitat:
Super wäre messung1, Messung2, messungn die alle eine Tabelle mit 8 cells haben.

Da muss ich widersprechen: das wäre alles andere als super, da es genau dann sehr schwierig ist, diese Variablen systematisch weiterzuverarbeiten.

Ich könnte mir da eher eine Struktur vorstellen

Code:
messungen(1).ersteMessung = ...
messungen(1).zweiteMessung = ...
...
messungen(2).ersteMessung = ...
messungen(2).zweiteMessung = ...


oder wenn es keine Namen in dem Sinn gibt ein 2D-Cell Array
Code:
messungen{1,1} = ...
messungen{1,2} = ...
...
messungen{2,1} = ...
messungen{2,2} = ...


bzw. wenn es nicht immer 8 Messungen sind ein geschachteltes Cell Array
Code:
messungen{1}{1} = ...
messungen{1}{2} = ...
...
messungen{2}{1} = ...
messungen{2}{2} = ...


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.