dlmwrite with a header

42 views (last 30 days)
Erdem Uguz
Erdem Uguz on 9 Jan 2016
Hello,
I am trying to write data to a file. I have no problem just writing the file but I want the header positions to match the columns
dlmwrite([savepath,'/myFile.txt'],[]) % save path is the path defined before I create an %empty file first.
fid = fopen([savepath,'/myFile.txt'],'wt');
fprintf(fid, '%s\t %s\t %s\n', 'x','y1','y2'); % header
dlmwrite([savepath,'/myFile.txt'],MyData,'delimiter','\t','precision',['%10.',num2str(12),'f'],'-append'); % MyData is the file.
fclose(fid);
I would appreciate it if you can point out my mistake.

Answers (1)

Walter Roberson
Walter Roberson on 9 Jan 2016
Edited: Walter Roberson on 10 Nov 2019
You need to fclose(fid) before you dlmwrite() to the file. Also, you do not need to dlmwrite() it before you fopen() it.
filename = fullfile(savepath, 'myFile.txt');
fid = fopen(filename, 'wt');
fprintf(fid, '%s\t%s\t%s\n', 'x','y1','y2'); % header
fclose(fid);
dlmwrite(filename,MyData,'delimiter','\t','precision',['%10.',num2str(12),'f'],'-append');
  8 Comments
Walter Roberson
Walter Roberson on 20 Aug 2020
What was the difficulty?
With the format you had, I do not see how you could have gotten the output you posted.
Turbulence Analysis
Turbulence Analysis on 20 Aug 2020
Hi, I did it in following way...
for k = 1:1:100
filename = sprintf('test%d.txt',k);
fid = fopen(filename,'w');
fprintf(fid, '#DaVis 8.4.0 2D-vector 8 92 112 "position" "mm" "position" "mm" "velocity" "m/s" \n');
fclose(fid);
end
for k = 1:1:100
UFF = X_filter(1:ni*nk,k);
VFF = X_filter(1+ni*nk:2*ni*nk,k);
UFF1 =reshape (UFF,ni,nk)';
VFF1 =reshape (VFF,ni,nk)';
UUFFF1 = reshape (UFF1, 10304,1);
VVFFF1 = reshape (VFF1,10304,1);
xxx = reshape (X,10304,1);
yyy = reshape (Y,10304,1);
fileName = sprintf('test%d.txt',k);
dlmwrite(fileName,[xxx yyy UUFFF1 VVFFF1],'delimiter','\t','-append');
end

Sign in to comment.

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!