schreiben von Daten in Excel nach jeder Schleife
Ich habe eine 6x7 matrix(A) und eine operation ich mache es für k=1:50 (Anzahl der Schleifen).
Ich weiß, dass, um zu schreiben, ein single-matrix in eine excel-Datei, die ich brauche:
xlswrite('Filename.xls', A, 'A1')
Wie ist es möglich, schreiben Sie die Informationen nach jeder Schleife, so dass jede Schleife beginnt an der position A1+((k-1)*6+1) in Excel, und ich habe alle Ergebnisse der Matrix(A) aufgeführten einer nach dem anderen.
Danke!
InformationsquelleAutor kojikurac | 2011-10-03
Du musst angemeldet sein, um einen Kommentar abzugeben.
Bei der Verwendung der XLSWRITE - Funktion, können Sie vermeiden, zu berechnen, Excel-Zellbereiche jeder Zeit, unter Angabe sheet-Nummer und range, wobei der Bereich nur die erste Zelle zu starten.
Es ist besonders nützlich, wenn die matrix ändert die Größe jeder iteration; wir nehmen Sie einfach die Letzte Zelle verwendet, und verschieben Sie Sie, indem Sie die Anzahl der Zeilen der matrix.
Beispiel:
dieser erstellt eine Excel-Datei mit dem folgenden Inhalt:
Beachten Sie, dass eine Verbindung zu Excel dann geschlossen XLSWRITE genannt wird. Dies hat einen erheblichen Mehraufwand bedeutet.
Ein besserer Ansatz wäre, um Excel zu öffnen einmal, und die Wiederverwendung der gleichen Sitzung zu schreiben, alle Ihre Daten, schließen Sie es dann, sobald wir fertig sind. Jedoch, Sie müssen rufen Sie die Office-Interop-Funktionen selbst.
Seit dem trick den ich oben erwähnt habe, funktionieren nicht jetzt, ich werde mich mit der "Berechnen Excel-Bereich" Funktion zum berechnen der Zelle reicht (es gibt noch viele weitere Implementierungen von FEX).
Hier ist der code (Wiederverwendung von code aus einem Vorherige Antwort):
In der Tat, ich lief sowohl die version mit 50 Iterationen und timings im Vergleich mit TIC/TOC:
auch möchte ich erwähnen, dass ich Macintosh, weiß nicht, ob diese Effekte das Verfahren?!
COM/ActiveX-Technologie ist nicht für Macs verfügbar, so ist die zweite Lösung ist für Windows-only. Außerdem denke ich, dass XLSWRITE fällt zurück, um über das CSV-format auf Mac-und Linux-laut dieser Seite: mathworks.com/support/solutions/en/data/1-2SJUON/... . Also entweder läuft der code auf einem Windows-Rechner oder wechseln Sie zu einem anderen Datei-format, um die Daten zu exportieren (vielleicht einfache text-Dateien)...
Buhu :(Ist es Weg, mit diesem Text-Formate, so dass Excel Lesen kann?
Just-stick mit CSV-Dateien sind einfach text-Dateien (Werte in jeder Zeile sind durch Komma getrennt), plus Excel erkennt Sie. Sie können die Suche hier auf SO für Beispiele, wie die Arbeit mit CSV: stackoverflow.com/questions/tagged/matlab+csv
InformationsquelleAutor Amro
Ich denke, dass
xlswrite
wird eine vorhandene Datei überschreiben, so dass Sie besser dran sammeln alle Daten, dann schreiben Sie es in einem gehen. Auch, schreiben es alle in einem Rutsch schneller sein wird da es sich um das öffnen und schließen von Excel nur einmal.Jedoch, wenn Sie wirklich wollen, schreiben Sie es in einer Schleife, das folgende sollte funktionieren (vorausgesetzt du meinst die gehen nach unten):
Beachten Sie, dass diese nicht automatisch anpassen, wenn Eine änderung der Größe.
Dass die Fehlermeldung, die bedeutet, dass ndims(M) > 2. Ich habe auch überprüft die syntax der
xlswrite
Befehl, und der range-Angabe ist falsch, also ich werde das update jetzt. Beachten Sie, dass der code soll ausgeführt werden, innerhalb der Schleife.das überschreiben beiseite, Sie werden wahrscheinlich möchten schreiben 1 gehen, denn excel muss geöffnet und geschlossen werden bei jedem schreiben, die Einführung von großen overhead in deiner iteration.
Vereinbart. Ich werde hinzufügen, dass die Antwort.
InformationsquelleAutor Nzbuu