fprintf table

84 Ansichten (letzte 30 Tage)
TheSpaceGuy
TheSpaceGuy am 22 Okt. 2011
Kommentiert: Walter Roberson am 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!

Akzeptierte Antwort

Walter Roberson
Walter Roberson am 22 Okt. 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 Kommentare
TheSpaceGuy
TheSpaceGuy am 23 Okt. 2011
Thanks for the tip!
Walter Roberson
Walter Roberson am 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.

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (0)

Kategorien

Mehr zu Tables finden Sie in Help Center und File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by