MATLAB Answers

How to apply fprinf for matrix

2 views (last 30 days)
Ali
Ali on 27 May 2016
Commented: Ali on 27 May 2016
I would like to use fprintf for Writing data to a text file. I want to apply fprintf on the following matrix. I have a matrix with n rows and 3 columns. please help with this issue. thanks a lot. for instance.
0.0000 0.0000 0.0000
0.0000 0.1000 0.0000
0.0643 0.0675 0.0000
0.1000 0.0000 0.0000
0.0000 0.2000 0.0000
0.2000 0.0000 0.0000
0.0725 0.1500 0.0000
0.1488 0.0873 0.0000
0.0726 0.2501 0.0000
0.0000 0.3000 0.0000
0.0000 0.4000 0.0000
0.3000 0.0000 0.0000
0.4000 0.0000 0.0000
  1 Comment
Stephen Cobeldick
Stephen Cobeldick on 27 May 2016
Don't use a loop! See my answer to know how.

Sign in to comment.

Accepted Answer

Stephen Cobeldick
Stephen Cobeldick on 27 May 2016
Edited: Stephen Cobeldick on 27 May 2016
This is MATLAB, so there really is no point in using an ugly loop when you can do it much faster and simpler with just one csvwrite call:
csvwrite('test.csv',M)
or with one fprintf call (no loop is required!):
M = [...
0.0000,0.0000,0.0000;...
0.0000,0.1000,0.0000;...
0.0643,0.0675,0.0000;...
0.1000,0.0000,0.0000;...
0.0000,0.2000,0.0000;...
0.2000,0.0000,0.0000;...
0.0725,0.1500,0.0000;...
0.1488,0.0873,0.0000;...
0.0726,0.2501,0.0000;...
0.0000,0.3000,0.0000;...
0.0000,0.4000,0.0000;...
0.3000,0.0000,0.0000;...
0.4000,0.0000,0.0000];
%
fid = fopen('test.csv','wt');
fprintf(fid,'%f,%f,%f\n',M.')
fclose(fid);
  1 Comment
Ali
Ali on 27 May 2016
Thanks a lot for helping me to solve this issue.

Sign in to comment.

More Answers (3)

Stalin Samuel
Stalin Samuel on 27 May 2016
%example code
s = rand(10,3);
fileID = fopen('a.txt','w');
for i=1:length(s)
fprintf(fileID,'%g\t%g\t%g \r\n',s(i,:));
end
fclose(fileID);
  1 Comment
Ali
Ali on 27 May 2016
Many thanks for your help.

Sign in to comment.


TastyPastry
TastyPastry on 27 May 2016
fh = fopen('newFile.txt','w');
for i=1:size(myData,1)
fprintf(fh,'%d %d %d\n',a(i,1),a(i,2),a(i,3))
end
  1 Comment
Ali
Ali on 27 May 2016
Thanks a lot for your code.

Sign in to comment.


Guillaume
Guillaume on 27 May 2016
Why not simply use dlmwrite?
dlmwrite('test.csv', M, 'delimiter', ' ');
or if you want to specify the precision
dlmwrite('test.csv', M, 'delimiter', ' ', 'precision', '%6.4f');
  1 Comment
Ali
Ali on 27 May 2016
Thank you very much Guillaume.

Sign in to comment.

Community Treasure Hunt

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

Start Hunting!