|
Clausius_Rankine |

Forum-Newbie
|
 |
Beiträge: 8
|
 |
|
 |
Anmeldedatum: 04.11.13
|
 |
|
 |
Wohnort: Oberhausen
|
 |
|
 |
Version: R2010b
|
 |
|
|
 |
|
Verfasst am: 25.11.2013, 15:49
Titel: xlswrite Fehlermeldung
|
 |
|
 |
|
Hallo zusammen,
ich bin mal wieder total ratlos. Ich möchte, dass am Ende meines Programms, nach erfolgreichem Schleifendurchlauf, das "Ergebnis" Cell-Array in eine Excel Datei exportiert/abgespeichert wird. Das habe ich bisher immer erfolgreich mit dem Befehl xlswrite gemacht.
Nun habe ich mein Programm ein wenig ausgebaut (es ist noch eine äußere Schleife dazu gekommen) wodurch das Cell-Array deutlich größer geworden ist. Das Cell-Array ist Daten = cell(35039,850). Vorher hatte dieser Array lediglich 25 Spalten. Damit hat alles einwandfrei funktioniert. Mit den aktuellen 850 Spalten erhalte ich beim Verwenden von xlswrite ständig die Fehlermeldung:
Ich habe das Internet bereits durchforstet und versucht herauszufinden welche Ursache hinter dieser Meldung steckt. Das einzig annähernd gleiche Problem wird in diesem englisch sprachigen Forum diskutiert:
http://www.mathworks.com/matlabcentral/answers/101631
Das einzige was meiner Meinung nach zutreffen könnte wäre die Problematik mit der Spaltenzahl. Ich habe allerdings Excel 2010 und Matlab R2010b installiert. Also sollte ich weit mehr als 256 Spalten mit xlswrite übertragen können.
Ich begreife auch nicht genau was MATLAB mit dem Hinweis "Für diesen Vorgang ist nicht genügend Speicher verfügbar" aussagen möchte? Mein Speicher reicht dafür definitiv aus.
Oder suche ich grad in der komplett falschen Richtung??
Ein lauffähiges Minimalbeispiel habe ich auch hochgeladen.
Vielen Dank und viele Grüße
Stefan
Beschreibung: |
|
 Download |
Dateiname: |
Gebaeudemodell_for_2_1b_auto_Beispiel.m |
Dateigröße: |
6.04 KB |
Heruntergeladen: |
313 mal |
|
|
|
|
|
Andreas Goser |

Forum-Meister
|
 |
Beiträge: 3.654
|
 |
|
 |
Anmeldedatum: 04.12.08
|
 |
|
 |
Wohnort: Ismaning
|
 |
|
 |
Version: 1.0
|
 |
|
|
 |
|
Verfasst am: 25.11.2013, 16:10
Titel:
|
 |
|
 |
|
Ich denke die richtige Übersetzung is
. Ich habe hier einen Artikel gefunden der am Schluss Tipps hat:
---------------------
I am trying to execute the following code snippet on MATLAB R2012b 64 bit using 32 bit Excel 2010.
I get the following error:
My system has 24 GB RAM and a lot of free memory on my Hard disk as well. The same code works if I reduce the number of colmuns to 990. Also, I tried the same code snippet on a second machine for which it worked without any errors.
I would like to be able to execute the above mentioned code without any errors.
Answer:
This error can be observed if a large amount of data is being written at once to an Excel file using a single XLSWRITE command.
This issue seems to be more related to storage availability and memory allocation taking place within the Excel Application outside the MATLAB environment. It does not relate directly to the large RAM or free disk space availability.
In the above code snippet, around 1.2 GB of data is being written at once to the Excel application.
As a workaround:
1. Try writing the same data in parts (in iterations) by calling XLSWRITE multiple times rather than trying to write the data all at once.
2. Try using 64 bit version of Excel 2010 application.
3. Also try disabling the Excel Add-ins if present and check if it resolves the issue.
Andreas
|
|
|
Clausius_Rankine |
Themenstarter

Forum-Newbie
|
 |
Beiträge: 8
|
 |
|
 |
Anmeldedatum: 04.11.13
|
 |
|
 |
Wohnort: Oberhausen
|
 |
|
 |
Version: R2010b
|
 |
|
|
 |
|
Verfasst am: 25.11.2013, 17:18
Titel:
|
 |
|
 |
|
Hallo Andreas,
danke für die schnelle Antwort. Der Artikel ist sehr interessant, da es genau mein Problem beschreibt.
Zu den Lösungsvorschlägen des Artikels:
1) Leider arbeite ich hier nicht an meinem eigenen Rechner und habe deshalb nicht die Berechtigung die 64 bit Version von Excel 2010 zu installieren. Derzeit ist die 32 bit Version drauf und das lässt sich leider nicht ändern.
2) Die Add-ins sind bereits alle Inaktiv.
3) Ich habe den xlswrite - Befehl in die äußerste Schleife eingebaut, sodass nicht mehr alles auf einmal in Excel übertragen wird. Auf diese Weise sollte nach jedem Durchlauf der äußeren Schleife (insgesamt 34 mal) mit xlswrite der aktuelle Inhalt des Cell-Array in Excel übertragen werden. D.h. Excel würde 34 mal geöffnet und gespeichert werden, in der Hoffnung, dass Excel mit diesen kleineren Datenmengen besser zurecht kommt.
Aber leider erhalte ich immernoch genau die gleiche Fehlermeldung.
Das muss doch irgendwie funktionieren ?!
Viele Grüße
Stefan
|
|
|
Winkow |

Moderator
|
 |
Beiträge: 3.842
|
 |
|
 |
Anmeldedatum: 04.11.11
|
 |
|
 |
Wohnort: Dresden
|
 |
|
 |
Version: R2014a 2015a
|
 |
|
|
 |
|
Verfasst am: 25.11.2013, 18:28
Titel:
|
 |
hmm irgendwo war doch mal was mit java speicher oder sowas einstellen. der war noch irgendwie nur 64 mb eingestellt .... ich weis net mehr genau. kannst ja mal danach suchen. ich guck selber mal wenn ich was finde meld ich mich. das war hir irgendwo im forum.
_________________
richtig Fragen
|
|
|
markuman |

Forum-Guru
|
 |
Beiträge: 320
|
 |
|
 |
Anmeldedatum: 14.12.12
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: 2013a/2013b, Octave 3.6.4, 3.7.7
|
 |
|
|
 |
|
Verfasst am: 25.11.2013, 21:32
Titel:
|
 |
Der default maximum jave heap ist bei Java 1.6 bei 196mb.
In die Datei $MATLABROOT/bin/$ARCH/java.opts muss man -Xmx1024m für 1024mb schreiben (nur bei Java 1.6). Bei älteren Java Versionan ist das -Xms oder so? Je nach Arbeitsspeicher würde ich es einfach mal auf die hälfte des verfügbaren setzen.
Also
Und Matlab neustarten. Aber ob es hilft?
_________________
DIY OR DIE
entropie=char(floor(94*rand(1, round(100.*rand)) + 32))
https://github.com/markuman
|
|
|
Andreas Goser |

Forum-Meister
|
 |
Beiträge: 3.654
|
 |
|
 |
Anmeldedatum: 04.12.08
|
 |
|
 |
Wohnort: Ismaning
|
 |
|
 |
Version: 1.0
|
 |
|
|
 |
|
Verfasst am: 26.11.2013, 10:30
Titel:
|
 |
"Nicht am eigenen Rechner" arbeiten heisst also der Rechner des Betreuers oder ein Laborrechner? Und es iast also ein 64 bit Rechner mit 64 Bit Windows und 64 Bit MATLAB und 32 Bit Office/Excel?
Andreas
|
|
|
Clausius_Rankine |
Themenstarter

Forum-Newbie
|
 |
Beiträge: 8
|
 |
|
 |
Anmeldedatum: 04.11.13
|
 |
|
 |
Wohnort: Oberhausen
|
 |
|
 |
Version: R2010b
|
 |
|
|
 |
|
Verfasst am: 26.11.2013, 12:15
Titel:
|
 |
Also die Sache mit dem Java Heap Memory habe ich kurz nochmal recherchiert und auch probiert. Allerdings nicht auf die Weise wie markuman es beschrieben hat, sondern einfach über
File > Preferences > General > Java Heap Memory.
Da kann man dann in dem Kästchen die Heap Memory einstellen. War vorher auf 128 MB und ich hab ihn auf die Hälfte des verfügbaren gesetzt, also auf 1065 MB.
Ich denke mal, damit bewirke ich genau das gleiche wie markuman vorgeschlagen hat ?!
Ich bekomme immernoch die exakt die gleiche Fehlermeldung, allerdings deutlich schneller !! Also wirklich viel schneller. Vorher hat er erstmal 20 min gerechnet bis die Meldung kam und nun dauerts nur noch 2 Minuten
Ja genau, so ähnlich. Es ist ein Rechner im Hiwi-Raum des Lehrstuhls und hier kann alles nur über die IT installiert/eingestellt werden.
Richtig, ich hab hier Windows 7 64 bit mit 64 bit MATLAB und 32 bit Excel
Viele Grüße
Stefan
|
|
|
markuman |

Forum-Guru
|
 |
Beiträge: 320
|
 |
|
 |
Anmeldedatum: 14.12.12
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: 2013a/2013b, Octave 3.6.4, 3.7.7
|
 |
|
|
 |
|
Verfasst am: 26.11.2013, 12:32
Titel:
|
 |
Clausius_Rankine hat Folgendes geschrieben: |
Also die Sache mit dem Java Heap Memory habe ich kurz nochmal recherchiert und auch probiert. Allerdings nicht auf die Weise wie markuman es beschrieben hat, sondern einfach über
File > Preferences > General > Java Heap Memory.
Da kann man dann in dem Kästchen die Heap Memory einstellen. War vorher auf 128 MB und ich hab ihn auf die Hälfte des verfügbaren gesetzt, also auf 1065 MB.
Ich denke mal, damit bewirke ich genau das gleiche wie markuman vorgeschlagen hat ?! |
Vermutlich. Ich benutze die GUI selten
Die Änderung kannst du ja einfach mit >> java.lang.Runtime.getRuntime.maxMemory
überprüfen.
Dann setz die heap size doch einfach mal auf das Maximum. Wobei ich über die Datei auch einen größeren heap einstellen kann als Matlab vorgibt.
_________________
DIY OR DIE
entropie=char(floor(94*rand(1, round(100.*rand)) + 32))
https://github.com/markuman
|
|
|
Clausius_Rankine |
Themenstarter

Forum-Newbie
|
 |
Beiträge: 8
|
 |
|
 |
Anmeldedatum: 04.11.13
|
 |
|
 |
Wohnort: Oberhausen
|
 |
|
 |
Version: R2010b
|
 |
|
|
 |
|
Verfasst am: 26.11.2013, 16:22
Titel:
|
 |
Ich hab die Heap Size aufs Maximum von 2000 MB gesetzt. Hilft leider noch immer nichts! Gleiche Fehlermeldung.
Mit
erhalte ich diesen Wert 1.9262e+009 als Antwort. Keine Ahnung was für eine Einheit das sein soll. Aber die 2000 MB sinds ja nich ganz ^^
Bei der Verwendung von
bekomme ich folgende Fehlermeldung:
Damit wollte ich nämlich einfach mal 4000 MB ausprobieren, da ich 8000 MB Arbeitsspeicher habe, aber dein Code haut bei mir nicht ganz hin.
Also es kann doch echt nicht sein, dass das einfach nicht funktioniert. Irgendeinen Weg muss es doch geben einen so großen Cell-Array problemlos in Excel reinzupacken...
Viele Grüße
Stefan
|
|
|
|
|
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.
|
|