fprintf table
128 views (last 30 days)
Show older comments
TheSpaceGuy
on 22 Oct 2011
Commented: Walter Roberson
on 6 Apr 2023
Hi guys! I am having trouble making this table using only fprintf commands (NO LOOPS allowed). This is my code for the data that is supposed to be in the table
t = [40 35 30 25 20 15 10 5 0 -5 -10 -15 -20 -25 -30 -35 -40 -45];
v = [5 10 15 20 25 30 35 40 45 50 55 60]';
[T,V] = meshgrid(t,v);
Tc = 35.74 + 0.6215*T - 35.75*(V.^.16) + 0.4275*T .* (V.^.16)
Tchill = round(Tc)
This is how the table should look like: http://www.flickr.com/photos/45889511@N03/6269967871/in/photostream
All the help I can get will be appreciated!
0 Comments
Accepted Answer
Walter Roberson
on 22 Oct 2011
The secret to fprintf() to print tables, is to construct a single array in which all of the numeric values appear row by row in the same order they would appear on the screen -- and then pass the transpose of that table as the fprintf() argument after the format string.
2 Comments
Walter Roberson
on 6 Apr 2023
My previous answer was written in 2011.
These days, I would probably instead use something like
fprintf(FID, '%s\n', join(compose("%4d", Tchill)))
The key difference here is that while fprintf() and sprintf() go "down" columns, compose() is happy to go across rows.
Tchill = [1 2; 3 4]
fprintf('%4d %4d\n', Tchill)
fprintf('%s\n', join(compose("%4d", Tchill)))
The fprintf() version output the items in linear index order; the compose() version ran across rows.
More Answers (0)
See Also
Categories
Find more on Tables 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!