How to apply fprinf for matrix

4 vues (au cours des 30 derniers jours)
Ali
Ali le 27 Mai 2016
Commenté : Ali le 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 commentaire
Stephen23
Stephen23 le 27 Mai 2016
Modifié(e) : Stephen23 le 27 Mai 2016
Don't use a loop! See my answer to know how.

Connectez-vous pour commenter.

Réponse acceptée

Stephen23
Stephen23 le 27 Mai 2016
Modifié(e) : Stephen23 le 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 commentaire
Ali
Ali le 27 Mai 2016
Thanks a lot for helping me to solve this issue.

Connectez-vous pour commenter.

Plus de réponses (3)

Stalin Samuel
Stalin Samuel le 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);
  1 commentaire
Ali
Ali le 27 Mai 2016
Many thanks for your help.

Connectez-vous pour commenter.


TastyPastry
TastyPastry le 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
  1 commentaire
Ali
Ali le 27 Mai 2016
Thanks a lot for your code.

Connectez-vous pour commenter.


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

Connectez-vous pour commenter.

Catégories

En savoir plus sur Characters and Strings dans Help Center et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by