How to apply fprinf for matrix

5 Ansichten (letzte 30 Tage)
Ali
Ali am 27 Mai 2016
Kommentiert: Ali am 27 Mai 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 Kommentar
Stephen23
Stephen23 am 27 Mai 2016
Bearbeitet: Stephen23 am 27 Mai 2016
Don't use a loop! See my answer to know how.

Melden Sie sich an, um zu kommentieren.

Akzeptierte Antwort

Stephen23
Stephen23 am 27 Mai 2016
Bearbeitet: Stephen23 am 27 Mai 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 Kommentar
Ali
Ali am 27 Mai 2016
Thanks a lot for helping me to solve this issue.

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (3)

Stalin Samuel
Stalin Samuel am 27 Mai 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);

TastyPastry
TastyPastry am 27 Mai 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

Guillaume
Guillaume am 27 Mai 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 Kommentar
Ali
Ali am 27 Mai 2016
Thank you very much Guillaume.

Melden Sie sich an, um zu kommentieren.

Community Treasure Hunt

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

Start Hunting!

Translated by