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

Schreiben deiner Datei mit Header und Zahlenwerten

 

lukel
Forum-Anfänger

Forum-Anfänger


Beiträge: 39
Anmeldedatum: 27.08.15
Wohnort: ---
Version: R2015b
     Beitrag Verfasst am: 27.01.2016, 15:50     Titel: Schreiben deiner Datei mit Header und Zahlenwerten
  Antworten mit Zitat      
Hallo,

ich habe einen Vektor d mit Zahlen den ich bisher mit Hilfe der save-Funktion im ascii-Format (.asc) gespeichert habe.

Nun möchte ich aber in dieser Datei vor den Zahlenwerten einen Header aus mehreren Zeilen Text schreiben.

Das habe ich jetzt mit der fprintf Funktion probiert:

Code:


d=[1;4;7;87];
header1='Beginn\n'
header2='Zeile2\n'
header3='Ende\n'

fid=fopen('text.asc','w');

fprintf(fid,'%s',header1)
fprintf(fid,'%s',header2)
fprintf(fid,'%s',header3)

fprintf(fid,'%d',d)
 


In der Ascii-Datei steht dann in einem hintereinanderweg:

Beginn\nZeile2\nEnde\n14787

Ich möchte aber, dass das so aussieht:


Beginn
Zeile2
Ende
1
4
7
87


Danke

Gruß lukel
Private Nachricht senden Benutzer-Profile anzeigen


Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 28.01.2016, 00:16     Titel: Re: Schreiben deiner Datei mit Header und Zahlenwerten
  Antworten mit Zitat      
Hallo lukel,

Die Escape-Sequenz \n gehört in den Format-String, nicht in den Text:
Code:

d = [1;4;7;87];
header1='Beginn'
header2='Zeile2'
header3='Ende'

fid=fopen('text.asc','w');

fprintf(fid,'%s\n',header1)
fprintf(fid,'%s\n',header2)
fprintf(fid,'%s\n',header3)

fprintf(fid,'%d\n',d)
fclose(fid);


Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
lukel
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 39
Anmeldedatum: 27.08.15
Wohnort: ---
Version: R2015b
     Beitrag Verfasst am: 28.01.2016, 09:11     Titel:
  Antworten mit Zitat      
Hallo Jan,

das funktioniert leider nicht. Steht immer noch alles in einer Zeile.

LG

lukel
Private Nachricht senden Benutzer-Profile anzeigen
 
lukel
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 39
Anmeldedatum: 27.08.15
Wohnort: ---
Version: R2015b
     Beitrag Verfasst am: 28.01.2016, 09:56     Titel:
  Antworten mit Zitat      
Ok

ich hab grad in einem alten Beitrag von dir gelesen dass es an dem Windows Editor liegt und er das nicht richtig anzeigt. Mit Word sind die Zeilenumbrüche da.

Aber wenn ich andere Dateien öffne die schon einen Header haben, dann zeigt mir der Editor doch auch die Absätze an?!?
Private Nachricht senden Benutzer-Profile anzeigen
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 28.01.2016, 15:43     Titel:
  Antworten mit Zitat      
Hallo lukel,

Aha, der Windows Editor! Ja, der ist bekannt dafür, dass er im Gegensatz zu allen anderen editoren Zeilenumbrüche nicht ordentlich darstellen kann.
Es gibt die alten DOS-Umbrüche \r\n und den Unix-Stil \n. Der Matlab-Editor ist vor etwa 10 Jahren auf den \n-Standard umgestiegen.

Man kann DOS Umbrüche erzwingen:
Code:
fid = fopen(FileName, 't')   % Text-Mode
fprintf('%s\n', 'Hallo');
fclose(fid);

Das kann aber tückisch sein, denn im Text-Mode wirken z.B. auch Backspace-Sequenzen als Buchstaben-Löscher und ^Z erzeugt ein File-Ende. Die Anzahl der "Zeichen" ist dann nicht mehr unbedingt die Länge des Files in Byte.
Deshalb halte ich dies für sicherer:
Code:
fid = fopen(FileName)   % Ohne 't' ist es Binär-Mode
fprintf('%s\r\n', 'Hallo');
fclose(fid);

Die DOS-Linebreaks werden also explizit gesetzt, der Rest bleibt aber ohne Seiteneffekte und "Tricks".
Noch praktischer ist es aber, den blöden Windows editor nicht mehr zu verwenden, sondern z.B. Notepad++ als Standard-Text-Viewer einzutragen.

Gruß, Jan


ich hab grad in einem alten Beitrag von dir gelesen dass es an dem Windows Editor liegt und er das nicht richtig anzeigt. Mit Word sind die Zeilenumbrüche da.

Aber wenn ich andere Dateien öffne die schon einen Header haben, dann zeigt mir der Editor doch auch die Absätze an?!?[/quote]
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.