dlmwrite with two row header
3 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Orkun OZENER
am 1 Jan. 2014
Kommentiert: Orkun OZENER
am 1 Jan. 2014
Hi, I am trying to use dlm write with two row header.(Datanames and headers) I made it for one row header. But For additional header it did not work? I could not write the second row header I would be pleased for any help.
% the data
fnam='stop3.txt'; % <data file
hdr={'Var_no','Acc','Dcc','Vcrs','Fcs','Vmax','Sure'}; % First header
hdr2={'No','m/s2','m/s2','km/h','kg', 'm/s','s'}; % Second Header
m=magic(7) %data
% the engine
txt=sprintf('%s\t %s\r\t',hdr{:},hdr2{:});
txt(end)='';
dlmwrite(fnam,txt,'');
dlmwrite(fnam,m,'-append','delimiter','\t');
% the result
type(fnam)
The first row is ok. Bur for secodn row..It did not work. The data should be formatted like this as tab delimited txt file.
Var_No Acc Dcc VCrs FCs Vmax sure
No m/s2 m/s2 km/h kg m/s s
64 1,4 -2 40 0,145529778 11,46442127 50
50 1,2 -2 40 0,15172966 11,46151161 61
57 1,3 -2 40 0,151792581 11,49402332 60
36 1 -2 40 0,15426373 11,43154716 61
Kind Regards. Orkun ÖZENER
0 Kommentare
Akzeptierte Antwort
Jan
am 1 Jan. 2014
Bearbeitet: Jan
am 1 Jan. 2014
The creation of txt does not do, what you expect. Simply check the contents of this string:
disp(txt)
Suggestion:
fmt = repmat('%s\t ', 1, length(hdr));
fmt(end:end+1) = '\n';
txt = sprintf(fmt, hdr{:},hdr2{:});
But then dlmwrite inserts an additional line break after the header. What about:
fmt = repmat('%s\t ', 1, length(hdr));
fmt(end:end+1) = '\n';
fid = fopen(fnam, 'w');
fprintf(fid, fmt, hdr{:});
fprintf(fid, fmt, hdr2{:});
fclose(fid);
dlmwrite(fnam,m,'-append','delimiter','\t');
Why struggeling with the high-level and smart dlmwrite when you can write to the file directly?
Weitere Antworten (0)
Siehe auch
Kategorien
Mehr zu Text Files finden Sie in Help Center und File Exchange
Produkte
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!