How do I display a Table on Command Window?

Trying to display something like this:
Name A B C D
--------------------------------
Min 1 2 3 4
Max 5 6 7 8
Any Ideas?

1 Comment

@zaianb almahdi, are you having trouble displaying the table using disp(T)? Your comment is not clear.

Sign in to comment.

Answers (1)

Here are two methods that produce that table. The first defines each column of the table. The second converts the matrix into a table.
% Method 1: Define each column
T = table([1;5],[2;6],[3;7],[4;8],'VariableNames',{'A','B','C','D'},'RowName',{'Min','Max'});
% Method 2: convert matrix
T = array2table([1:4;5:8],'VariableNames',{'A','B','C','D'},'RowName',{'Min','Max'});
% Display table
disp(T)
A B C D _ _ _ _ Min 1 2 3 4 Max 5 6 7 8
More info and practice:

10 Comments

If the table is too long this doesn't display.
displayWholeObj(T, 'T')
The first T is the variable or expression containing the table. The 'T' is the name to print in
T =
the header
@HiWave what release of MATLAB are you using and what's the size of the table (size(T))?
@Walter Roberson, what's displayWholeObj?
T = array2table(randi(9, 100, 2));
which displayWholeObj(T)
/MATLAB/toolbox/matlab/datatypes/tabular/@tabular/displayWholeObj.m % table method
help @tabular/displayWholeObj
Internal helper for displaying an entire table or timetable. This function is for internal use only and will change in a future release. Do not use this function. Use disp instead.
When you are using LiveScript, disp() displays a whole table in a scrolling region (or at least something more than 1000 lines). But if you are not using LiveScript, then disp() of a table displays only something like 100 lines and then gives you a link to click to display the entire table. That link uses displayWholeObj() to do the work. It isn't documented, but when it changes we will be able to read the replacement code out of the revised link ;-)
Thanks @Walter Roberson, I see that this method became available is R2022a. Nice find.
You really don't want to use this function. "Do not use this function. Use disp instead." You have been warned.
"But if you are not using LiveScript, then disp() of a table displays only something like 100 lines and then gives you a link to click to display the entire table." A rare misstatement by Walter. That's what display does. Maybe I've misunderstood. disp shows the whole thing. The only extra thing displayWholeObj does is show the "t =" and the size/type, which is not what the OP asked for.
I don't understand this: "If the table is too long this [i.e. disp(T)] doesn't display."
@Peter Perkins is right.
At least outside of LiveScript (which might have different results)
If you just name a table as an expression by itself, then that is internally a request to display(), and that will display only the first 24 and last 24 rows of the table, same as if you display() the table explicitly.
If you disp() the table then you will not get the header information about the table name and type and size, but the entire table will display.
displayWholeTable() will display the entire table and the name / type / size header.
Testing with MATLAB Answers (which should be the same as LiveScript)
I added comments about what I observe while in original composition mode. The saved message may show up differently; I will comment afterwards on any difference in the saved message.
T = array2table((1:123).');
fprintf('first trying with just variable name\n');
first trying with just variable name
T
T = 123×1 table
Var1 ____ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
%Answers while composing: first 16 rows appeared then . . . and no scroll
fprintf('now trying with disp()\n');
now trying with disp()
disp(T)
Var1 ____ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123
%Answers while composing: first 12 rows visible, scroll to see rest
fprintf('now trying with display()\n');
now trying with display()
display(T)
T = 123×1 table
Var1 ____ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
%Answers while composing: first 16 rows appeared then . . . and no scroll
fprintf('now trying with displayWholeObj\n');
now trying with displayWholeObj
displayWholeObj(T, 'T')
T = 123×1 table Var1 ____ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123
%Answers while composing: first 8 rows visible, scroll to see rest
fprintf('done\n');
done
first trying with just variable name
Answers while viewing: first 10 rows appeared with a scroll that allowed seeing the first 16 rows and then . . .
now trying with disp()
Answers while viewing: first 11 rows appeared with a scroll that allowed seeing the entire table
now trying with display()
Answers while viewing: first 10 rows appeared with a scroll that allowed seeing the first 16 rows and then . . .
now trying with displayWholeObj
Answers while viewing: first 7 rows appeared with a scroll that allowed seeing the entire table

Sign in to comment.

Categories

Tags

Asked:

on 22 Jan 2020

Commented:

on 1 Dec 2023

Community Treasure Hunt

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

Start Hunting!