How to specify number of decimals in table2word or writematrix
31 views (last 30 days)
Show older comments
Is it possible to write a double-valued matrix/array to a Word (or comma-separated text file) table with a specified format, e.g. a fixed-point notation with a specified number of decimals?
By default, writematrix seems to use "longg (15 digits of precision)" (see Guillaume's comment in
).
Function table2word seems to produce a fixed-point notation with 6 decimal digits, for example 0.999763. Four decimals would be enough for me, to limit the table size in the Word document.
0 Comments
Accepted Answer
Voss
on 23 Aug 2023
Edited: Voss
on 23 Aug 2023
A random matrix:
M = rand(10,10); % matrix to write to file
fn = 'example.csv'; % file to write to
disp(M); % show the matrix for reference
One way to write the file:
fid = fopen(fn,'w');
fprintf(fid,[repmat('%.4f,',1,size(M,2)) '\n'],M.');
fclose(fid);
type(fn); % check the file
Another way:
C = compose('%.4f,',M.');
C(end+1,:) = {newline()};
fid = fopen(fn,'w');
fprintf(fid,'%s',C{:});
fclose(fid);
type(fn); % check the file
0 Comments
More Answers (2)
Daniel Bengtson
on 23 Aug 2023
Edited: Daniel Bengtson
on 23 Aug 2023
You can use fprintf to do that.
fid1 = fopen('filename.csv', 'w');
fprintf(fid1,'%.4f',0.999763425634234234);
Walter Roberson
on 23 Aug 2023
For the case of a text file, dlmwrite supports a Precision parameter that can be number of digits or can be a format specification.
See Also
Categories
Find more on Text Files in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!