|
|
schnellste Möglichkeit um Exceldateien einzulesen |
|
programmierferkel |

Forum-Anfänger
|
 |
Beiträge: 12
|
 |
|
 |
Anmeldedatum: 02.01.12
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 07.01.2012, 19:48
Titel: schnellste Möglichkeit um Exceldateien einzulesen
|
 |
Hallo liebe Leute,
ich wollte mal so fragen, was denn die schnellste Möglichkeit ist um in Matlab Exceldateien einzlesen. Es gibt ja z.b. den Befehl xlsread, aber für meine Anwendung, eine Tabelle mit ungefähr 40.000 x 5 Einträgen, ist die Funktion xlsread schon relativ langsam.
Gibt es andere Möglichkeiten auser xlsread um die Daten schneller einzulesen?
auf Anworten freut sich: Ferkel
|
|
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.501
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 07.01.2012, 21:15
Titel:
|
 |
Hallo,
"relativ langsam" ist eine sehr relative Aussage Sind es mehr als 2s?
ich habe das mal getestet: bei mir unterscheiden sich die Einlese-Zeiten für 400 Zeilen und 40000 Zeilen nur geringfügig. Bei Excel-Dateien benötigt meiner Erfahrung nach das Starten des Excel-Prozesses und das Öffnen der Datei die meiste Zeit.
Im Zweifel kann man immer auf File Exchange schauen, ob dort für spezielle Zwecke bessere Anwendungen zur Verfügung stehen - hier findet man z.B.
http://www.mathworks.com/matlabcent.....-for-faster-data-transfer
Grüße,
Harald
|
|
|
programmierferkel |
Themenstarter

Forum-Anfänger
|
 |
Beiträge: 12
|
 |
|
 |
Anmeldedatum: 02.01.12
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 07.01.2012, 21:46
Titel:
|
 |
Hi Harald,
Ich habe ein Excelfile, das aus 5 Tabellenblättern besteht. Jedes Blatt enthält ca. 40.000x5 Zellen.
Wenn ich z.b. das erste Blatt einlese benötige ich ca. 6s. Was ich aber will ist, jedes Blatt einlesen und überprüfen ob die Blätter sinnvolle Daten enthalten.
Für die fünf Blätter dauert das ca. 20s... was ich als relativ lange empfinde (im schlimmsten Fall werden das 30 Blätter, für jeden Tag im Monat-dann vielleicht bis zu 1min warten?) .
Das mit dem File exchange verstehe ich auf Anhieb nicht. Ich schaus mir mal genauer an, aber ich will eigentlich keine Daten austauschen...
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.501
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 07.01.2012, 23:07
Titel:
|
 |
Hallo,
Zitat: |
Was ich aber will ist, jedes Blatt einlesen und überprüfen ob die Blätter sinnvolle Daten enthalten. |
Gerade da könnte der Link nützlich sein, da Excel so nicht jedes Mal neu gestartet wird.
Zitat: |
überprüfen ob die Blätter sinnvolle Daten enthalten. |
Was sind sinnvolle Daten?
Zitat: |
Für die fünf Blätter dauert das ca. 20s... was ich als relativ lange empfinde (im schlimmsten Fall werden das 30 Blätter, für jeden Tag im Monat-dann vielleicht bis zu 1min warten?) . |
1 Minute? Kaffee holen, fertig. - Mit MATLAB werden auch Simulationen durchgeführt, die über mehrere Tage laufen.
File Exchange ist eine Plattform, auf der MATLAB-Nutzer ihre Dateien zur Verfügung stellen und andere sie herunterladen können. Im weitesten Sinne ein Newsgroup.
http://www.mathworks.com/matlabcentral/fileexchange/
Grüße,
Harald
|
|
|
Martin1986 |

Forum-Century
|
 |
Beiträge: 121
|
 |
|
 |
Anmeldedatum: 20.06.11
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: Win 2016b Linux 2016b
|
 |
|
|
 |
|
Verfasst am: 08.01.2012, 15:49
Titel:
|
 |
|
|
programmierferkel |
Themenstarter

Forum-Anfänger
|
 |
Beiträge: 12
|
 |
|
 |
Anmeldedatum: 02.01.12
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 10.01.2012, 19:54
Titel:
|
 |
Hallo!
Danke für den File Exchange tip, ich habe dort schon zwei hilfreiche Plotfunktionen gefunden.
Wie auch immer, xlsread1, die Funktion von
http://www.mathworks.com/matlabcent.....-for-faster-data-transfer
funktioniert leider nicht bei mir. Ich bekomme den Fehler:
??? Error using ==> evalin
Undefined function or variable 'Excel'.
Den Fehler hab ich auch wenn ich
durch
ersetze. Auch wenn ich einfach im Workspace Excel eingebe bekomme ich den Fehler.
Ich habe jetzt auch versucht xlsread1 mit Hilfe einer Funktion aufzurufen. Funktioniert auch nicht. Also weder von WS und Funktion mit 'base' oder 'caller' aufrufen -> klappt nicht.
Weiß vielleicht jemand eine Lösung. Falls das was hilft ich habe Excel 2007 und Matlab 2011a.
Zuletzt bearbeitet von programmierferkel am 10.01.2012, 20:10, insgesamt einmal bearbeitet
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.501
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 10.01.2012, 20:10
Titel:
|
 |
Hallo,
in dem Description-Abschnitt des Links steht beschrieben, was du der Reihe machen musst: du musst selber erst eine Verbindung zu Excel aufbauen und das Excel Sheet öffnen.
Grüße,
Harald
|
|
|
Martin1986 |

Forum-Century
|
 |
Beiträge: 121
|
 |
|
 |
Anmeldedatum: 20.06.11
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: Win 2016b Linux 2016b
|
 |
|
|
 |
|
Verfasst am: 10.01.2012, 22:19
Titel:
|
 |
was aber auch auf der seite so steht okay in englisch aber naja...
|
|
|
programmierferkel |
Themenstarter

Forum-Anfänger
|
 |
Beiträge: 12
|
 |
|
 |
Anmeldedatum: 02.01.12
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 10.01.2012, 23:20
Titel:
|
 |
Hi Martin und Harald!
Vielen, vielen Dank. Ich hab das irgendwie übersehen. Ich hab mir zwei andere Sachen von File Exchange heruntergeladen bei denen die Funktionen von sich aus auf Anhieb funktioniert haben. Deshalb hab ich nur in den Kommentaren nach Fehlerlösungen gesucht...
Auf jedenfall funzts jetzt und mein Code ist vier Mal schneller als vorher. -> 8 stat 32 Sekunden
LG
|
|
|
Martin1986 |

Forum-Century
|
 |
Beiträge: 121
|
 |
|
 |
Anmeldedatum: 20.06.11
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: Win 2016b Linux 2016b
|
 |
|
|
 |
|
Verfasst am: 10.01.2012, 23:23
Titel:
|
 |
Noch mal als allgemeien Tip wenn einem das Programm zulangsam ist, bietet sich auch immer die nutzung des Profilers an, da kann man meistens dann schon sehen wer einem da die Zeit klaut.
|
|
|
|
|
Einstellungen und Berechtigungen
|
|
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
| 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.
|
|