How to apply fprinf for matrix

2 ビュー (過去 30 日間)
Ali
Ali 2016 年 5 月 27 日
コメント済み: Ali 2016 年 5 月 27 日
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 件のコメント
Stephen23
Stephen23 2016 年 5 月 27 日
編集済み: Stephen23 2016 年 5 月 27 日
Don't use a loop! See my answer to know how.

サインインしてコメントする。

採用された回答

Stephen23
Stephen23 2016 年 5 月 27 日
編集済み: Stephen23 2016 年 5 月 27 日
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 件のコメント
Ali
Ali 2016 年 5 月 27 日
Thanks a lot for helping me to solve this issue.

サインインしてコメントする。

その他の回答 (3 件)

Stalin Samuel
Stalin Samuel 2016 年 5 月 27 日
%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 件のコメント
Ali
Ali 2016 年 5 月 27 日
Many thanks for your help.

サインインしてコメントする。


TastyPastry
TastyPastry 2016 年 5 月 27 日
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 件のコメント
Ali
Ali 2016 年 5 月 27 日
Thanks a lot for your code.

サインインしてコメントする。


Guillaume
Guillaume 2016 年 5 月 27 日
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 件のコメント
Ali
Ali 2016 年 5 月 27 日
Thank you very much Guillaume.

サインインしてコメントする。

カテゴリ

Help Center および File ExchangeText Data Preparation についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by