fprintf table

128 views (last 30 days)
TheSpaceGuy
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)
All the help I can get will be appreciated!

Accepted Answer

Walter Roberson
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
TheSpaceGuy
TheSpaceGuy on 23 Oct 2011
Thanks for the tip!
Walter Roberson
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]
Tchill = 2×2
1 2 3 4
fprintf('%4d %4d\n', Tchill)
1 3 2 4
fprintf('%s\n', join(compose("%4d", Tchill)))
1 2 3 4
The fprintf() version output the items in linear index order; the compose() version ran across rows.

Sign in to comment.

More Answers (0)

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!