Using fprintf with matrices with rational entries

2 views (last 30 days)
I'm currently using the following code to write the entries of matrix X onto a .txt file:
fprintf(fileID,['%12.6f %12.6f \r\n'],X);
As is, the .txt file stores the entries as decimals. I'm looking for a way to store the entries as fractions instead of decimals. I've been trying to use the rats function for the matrix X but haven't found a solution.
For example, X = [1.250000 0.333333; 0 0.142857]. I want to store this as
5/4 1/3
0 1/7
in my .txt file. Would appreciate help.
Thanks in advance!

Accepted Answer

dpb
dpb on 22 Feb 2015
Have to switch to string representation to do so or use the related rat function instead...
[n d]=rat(x);
for i=1:size(x,1)
for j=1:size(x,2)
if d(i,j)==1
fprintf('%5d',n(i,j))
else
fprintf('%5d/%5d',n(i,j), d(i,j))
end
end
fprintf('\n')
end
For rats
ra=arrayfun(@rats,x,'uniformoutput',0);
for i=1:size(x,1)
for j=1:size(x,2)
fprintf('%8s',char(strtrim(ra(i,j))))
end
fprintf('\n')
end

More Answers (0)

Categories

Find more on Characters and Strings 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!