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

Zeilenumbruch bei fwrite

 

schneidrian
Forum-Anfänger

Forum-Anfänger


Beiträge: 48
Anmeldedatum: 20.09.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 10.02.2010, 17:01     Titel: Zeilenumbruch bei fwrite
  Antworten mit Zitat      
Hallo zusammen,

ich versuche mich gerade an fwrite.

Mein Problem ist, ich habe einen beliebig langen Vektor und will diesen in ein txt file schreiben. Ich will, dass bei einem bestimmten Zeichen eine neue Zeile ausgeben wird. Z.B. alle Werte sind je durch ein Semikolon getrennt, die Zeilen durch ein Leerzeichen.

aktuell verwende ich
Code:

fid = fopen('test_001.xyz','w');
fwrite(fid,data15);
fclose(fid);
 


Hab schon vieles mit ' ', /n versucht... leider klappt das nicht so ganz...

Viele Grüße
Florian
Private Nachricht senden Benutzer-Profile anzeigen


denny
Supporter

Supporter



Beiträge: 3.853
Anmeldedatum: 14.02.08
Wohnort: Ulm
Version: R2012b
     Beitrag Verfasst am: 11.02.2010, 10:17     Titel:
  Antworten mit Zitat      
Hallo

was willst du denn für ein File am Ende haben? ASCII oder Binary?
Private Nachricht senden Benutzer-Profile anzeigen
 
schneidrian
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 48
Anmeldedatum: 20.09.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 11.02.2010, 11:41     Titel:
  Antworten mit Zitat      
Bitte entschuldige, habe ich vergessen zu schreiben. Ich brauche ein Ascii File.

Viele Grüße
Florian
Private Nachricht senden Benutzer-Profile anzeigen
 
denny
Supporter

Supporter



Beiträge: 3.853
Anmeldedatum: 14.02.08
Wohnort: Ulm
Version: R2012b
     Beitrag Verfasst am: 11.02.2010, 12:03     Titel:
  Antworten mit Zitat      
Dann ist fwrite falsch an dieser Stelle, stattdessen sollst du fprintf nutzen.
Du muss Ausgabe an deine Variable anpassen:
Code:

data15= round(rand(10)*10)
fid = fopen('test_001.xyz','w');
for k=1:size(data15,1)
  fprintf(fid,'%d\t',data15(k,:));
  fprintf(fid,'\n');
end
fclose(fid);
 



Wenn du aber nur eine Matrix hast,
kannst aber auch einfach save-Befehl nutzen

Code:

data15= round(rand(10)*10)
save('test_002.xyz','data15','-ascii');
 


oder vielleicht auch dlmwrite.

PS: In der Hilfe schauen welcher Befehl für dich besser passt.
Private Nachricht senden Benutzer-Profile anzeigen
 
schneidrian
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 48
Anmeldedatum: 20.09.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 11.02.2010, 13:18     Titel:
  Antworten mit Zitat      
Danke dir, war wohl die falsche Richtung... Ich mache es jetzt mit dem Array und über Save.

Vielen Dank für die Hilfe!
Private Nachricht senden Benutzer-Profile anzeigen
 
schneidrian
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 48
Anmeldedatum: 20.09.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 11.02.2010, 16:26     Titel: Zeilenweises Speichern
  Antworten mit Zitat      
Ich will jetzt auch noch einen Kopf erstellen.

Ich kann auch genau sagen, in welcher Zeile was stehen soll, bzw. kann es ausrechnen. Gibt es eine Möglichkeit zu schreiben:

In Zeile 1 kommt die Kopfzeile 1
.
.
.
In Zeile 10 kommt die Kopfzeile 10
In Zeile 11 bis 150 kommt das Datenarray
In Zeile 151 kommt das Schlusszeichen

Ich habe es bisher über eine Schleife gemacht, aber da ich extrem viele Zeilen habe, dauert das einfach zu lange. Gibt es da keinen anderen Befehl?
Private Nachricht senden Benutzer-Profile anzeigen
 
denny
Supporter

Supporter



Beiträge: 3.853
Anmeldedatum: 14.02.08
Wohnort: Ulm
Version: R2012b
     Beitrag Verfasst am: 22.02.2010, 01:13     Titel:
  Antworten mit Zitat      
Hallo,

nein es geht so nicht, das ASCII-File wird ja sequentiell aufgebaut. Somit brauchst du eine Schleife.
Aber ich verstehe nicht, warum bei 151 Zeilen es so lange dauert?
Hier stimmt einfach etwas nicht.

Probiere mal die beiden Code-Stücke gegeneinander.
Code:

data15= round(rand(10)*10)
fid = fopen('test_001.xyz','w');
for k=1:size(data15,1)
  fprintf(fid,'%d\t',data15(k,:));
  fprintf(fid,'\n');
end
fclose(fid);
 


Code:

data15 = round(rand(10)*10)
fid       = fopen('test_001.xyz','w');
str       ='';
for k=1:size(data15,1)
  str=sprintf('%s%d\t',str,data15(k,:));
  str=sprintf('%s\n',str);
end
fprintf(fid,'%s',str);
fclose(fid);
 
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 - 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.