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

xlsxread

 

markuman
Forum-Guru

Forum-Guru


Beiträge: 320
Anmeldedatum: 14.12.12
Wohnort: ---
Version: 2013a/2013b, Octave 3.6.4, 3.7.7
     Beitrag Verfasst am: 05.04.2013, 15:10     Titel: xlsxread
  Antworten mit Zitat      
xlsread unter Octave gibt es nur, wenn Java auf dem PC installiert ist, und ausserdem noch die beiden Octave-Forge Packages octave-io und octave-java.
Dann braucht man noch diverse .jar Dateien von poi-apache oder Libreoffice (Unter Windows würde auch octave-io und eine Excel Installation reichen. Sicher bin ich mir da aber nicht).
Dann ist es schnarch Langsam.
Ein Kollege hat mit seinem core2duo 6320 @ 1.86GHz und 8GB RAM 1071 Sekunden für ein 1024x1024 Excel-Sheet zum einlesen benötigt.
Also hab ich mir mal selber eine xlsxread Funktion geschrieben.

http://git.osuv.de/Octave/tree/functions/xlsxread.m

Das ist allerdings quick&dirty und hat für ein 1234x1234 Excel-Sheet auf meinem AMD E-450 @1.65GHz und 8GB RAM 926 Sekunden gebraucht. Nicht wirklich schneller, dafür braucht es kein Java, kein octave-io und kein octave-java.
Zum vergleich, Matlab hat 102 Sekunden hierfür benötigt (siehe Screenshot).
Ca. um den faktor 9 schneller. Ich vermute mal, wenn man meinen code etwas optimiert, und ein rewrite in C macht, erreicht man die selbe Geschwindigkeit, vlt auch etwas schneller.

Allerdings muss man auch sagen, dass meine xlsxread Funktion hart limitiert ist (specs hab ich auch nicht gelesen, alles reverse engineered in den xml Dateien Very Happy ), es keine großartigen Optionen gibt, ausser die Sheetnr-Auswahl und auch nur xlsx Dateien gelesen werden können, keine xls Dateien!
Ranges oder Berechnungen wie =sum(A1:B3) gibts nicht bzw würden in einem Error enden oder Sinnlose Zahlen liefern (Hab ich nie getestet).
Wenn das sheet ausserdem keine Strings enthält, muss man den Stringanalyse-Part auskommentieren, sonst failed es ebenfalls.

Keine Ahnung ob ich das jemals weiter entwickel, ich hab es eigentlich nur quick&dirty anhand meiner Anforderungen entwickelt Smile Vielleicht kann es hier ja der ein oder andere auch noch gebrauchen.

Und nein, ein Umweg über libreoffice->csv oder ähnlichem ist keine Option (LibreOffice kann ausserdem nur 1024 Spalten lesen). Das kann man für 1-2 Sheets machen, aber nicht wenn man etwas automatisiert braucht.

xlsxreadmatch.png
 Beschreibung:

Download
 Dateiname:  xlsxreadmatch.png
 Dateigröße:  165.89 KB
 Heruntergeladen:  1382 mal

_________________

DIY OR DIE Cool

entropie=char(floor(94*rand(1, round(100.*rand)) + 32))
https://github.com/markuman
Private Nachricht senden Benutzer-Profile anzeigen


markuman
Themenstarter

Forum-Guru

Forum-Guru


Beiträge: 320
Anmeldedatum: 14.12.12
Wohnort: ---
Version: 2013a/2013b, Octave 3.6.4, 3.7.7
     Beitrag Verfasst am: 04.06.2013, 12:32     Titel:
  Antworten mit Zitat      
Ein rewrite und 2 Versionen später liegt xlsxread jetzt auf github und ist schneller als Matlab (und damit auch deutlich schneller als die Java Version).
Allerdings maximal rudimentär. Also falls jemand mitentwickeln möchte Smile
https://github.com/markuman/xlsxread/
_________________

DIY OR DIE Cool

entropie=char(floor(94*rand(1, round(100.*rand)) + 32))
https://github.com/markuman
Private Nachricht senden Benutzer-Profile anzeigen
 
markuman
Themenstarter

Forum-Guru

Forum-Guru


Beiträge: 320
Anmeldedatum: 14.12.12
Wohnort: ---
Version: 2013a/2013b, Octave 3.6.4, 3.7.7
     Beitrag Verfasst am: 22.09.2013, 13:52     Titel:
  Antworten mit Zitat      
It's stable now Cool
https://github.com/markuman/xlsxread
_________________

DIY OR DIE Cool

entropie=char(floor(94*rand(1, round(100.*rand)) + 32))
https://github.com/markuman
Private Nachricht senden Benutzer-Profile anzeigen
 
markuman
Themenstarter

Forum-Guru

Forum-Guru


Beiträge: 320
Anmeldedatum: 14.12.12
Wohnort: ---
Version: 2013a/2013b, Octave 3.6.4, 3.7.7
     Beitrag Verfasst am: 25.11.2013, 20:44     Titel:
  Antworten mit Zitat      
Mein Code ist in das Octave-Forge Package IO eingeflossen. Cool Das sollte den Aufwand für xlsread mit Octave ohne Excel Installation signifikant vereinfachen und beschleunigen.
http://wiki.octave.org/IO_package#OCT_interface
Mehr oder weniger wird das Github-Repository nicht mehr weitergepflegt.
_________________

DIY OR DIE Cool

entropie=char(floor(94*rand(1, round(100.*rand)) + 32))
https://github.com/markuman
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 - 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.