Verfasst am: 05.07.2011, 09:35
Titel: Zeilenvektoren einer for-Schleife untereinander in .txt schr
Hallo zusammen,
Ich habe noch wenig Erfahrung mit Matlab.
Ich habe eine komplizierte Funktion, in der ich nicht mit Vektoren arbeiten kann. Ist aber nicht so schlimm. Ich nehm ne for-Schleife.
Ich erhalte pro Schleifendurchlauf einen 1x6 Zeilenvektor M.
M=(... ... ... ... ... ...)
Ich möchte nun diese Vektoren M in ein Textfile .txt untereinanderschreiben.
also:
M=(... ... ... ... ... ...)
M=(... ... ... ... ... ...)
M=(... ... ... ... ... ...)
M=(... ... ... ... ... ...)
M=(... ... ... ... ... ...)
M=(... ... ... ... ... ...)
...
ohne das ständig der Wert für M überschrieben wird. Wie kann ich das machen? Das muss ja irgendwie mit fprintf gehen.
Hast du dir das schonmal angeschaut? Was hat da nicht geklappt? Was hast du versucht?Welche Fehlermeldungen gab es?
Oder liegt das Problem darin, dass du das nicht untereinander schreibst? Dazu müsstest du noch ein '\n' am Zeilenende immer einfügen.
_________________
Auf den ersten Blick würde ich sagen, es liegt daran, dass du jedesmal in der Schleife die Datei öffnest und wieder schließt. Somit weiß er nicht in welcher Zeile er ist und fängt immer von vorne an. Also müsste nur das letzte auftauchen.
Die Fehlermeldung ist geblieben. Ich finde es seltsam, das das so schwierig ist. Dieses Problem müsste doch eigentlich vielen Anwenderin in Matlab begegnen.
In dem txt.file steht der erste Zeilenvektor M als Spaltenvektor. D.h. während dem 2. Durchlauf wurde abgebrochen, obwohl ich die Ergebnisse des 2. Durchlaufs noch in der Kommandozeile sehen kann.
for b=1:607 ... fprintf(fid, '%d\n %d\n', M);
fclose(fid);
end
??? Error using ==> fprintf
Invalid file identifier. Usefopen to generate a valid file identifier.
Die Fehlermeldung ist geblieben...
Fällt dir irgendwas ein?
...
Die Fehlermeldung ist geblieben, weil du die Struktur nicht meinem Beispiel angepasst hast.
Dein Vorgehen:
1. Öffnen der Datei -> fid verweist auf die Datei
2. Beginn der Schleife
3. Schrieben in Datei -> fid verweist auf die Datei
4. Schließen der Datei -> fid verweist nichtmehr auf die Datei
5. Ende der Schleife.
Das heißt, dass du im zweiten Durchlauf kein Verweis auf die Datei mehr hast und somit ist der file identifier ungültig.
Wie gesagt: Öffnen(fopen) und Schließen (fclose) der Datei ausserhalb(!) der Schleife.
Weiterhin:
Auster23 hat Folgendes geschrieben:
In dem txt.file steht der erste Zeilenvektor M als Spaltenvektor.
ist das so gewollt der Spaltenvektor? Laut deinem ersten Post willst du einen Zeilenvektor. Dann müsstest du das so schreiben:
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
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.