table dispaly with char array

Got the below code, not sure why the table display of the char array is not right
Tval = table(name, x_t, tvals, 'VariableNames',{'Fund','Allocation','Dollar_Value'})
Tval =
    Fund    Allocation    Dollar_Value
    ____    __________    ____________
    BHP      0.22894      [1x11 char]
    NAB      0.19151      [1x11 char]
    CSR      0.38988      [1x11 char]
    AGL      0.13727      [1x11 char]
    NCP     0.052397      [1x11 char]
Tval.Dollar_Value
ans = $22894412.3
$19150910.7
$38988264.5
$13726664.3
$5239748.2
How to get the strings to display? Thanks!

2 Comments

Can you give the whole table information?
dol = repelem('$',5)';
tvals = num2str(f_vals, '%-.1f\n')
tvals2 = strcat(dol,tvals)
whos tvals2
Tval = table(name, x_t, tvals, 'VariableNames',{'Fund','Allocation','Dollar_Value'});
Tval =     Fund    Allocation    Dollar_Value
    ____    __________    ____________
    BHP      0.22894      22894412.3  
    NAB      0.19151      19150910.7  
    CSR      0.38988      38988264.5  
    AGL      0.13727      13726664.3  
    NCP     0.052397      5239748.2
  
The problem is when I try to add $ to the numbers.

Sign in to comment.

 Accepted Answer

You're using a char array, almost certainly not what you want for a variety of reasons. Mostly, char matrices require awkward padding with spaces and don't have many of the text processing functions that cell arrays of char vectors have. (I won't even get into why you're using text for a numeric quantity, presumably you have good reasons.) If you use a cell array of char vectors, table will display the full text:
>> table([1;2;3],{'abcdefgh';'abcdefghabcdefgh';'abcdefghabcdefghabcdefgh'})
ans =
Var1 Var2
____ __________________________
1 'abcdefgh'
2 'abcdefghabcdefgh'
3 'abcdefghabcdefghabcdefgh'
In the most recent version of MATLAB, R2016b, you're probably even better off using the new string type. Hope this helps.

3 Comments

I needed the '$' sign in front of the numbers that's why used char array. Is there a way to display a number array with a '$' in front? Up until the point I added the char array to the table it was displaying fine, only when added to the table, it does not behave. I changed it to cell array, and everything is as expected. I am still using MATLAB, R2016a, thanks for the note about the new string() function.
cheers Yudi
There is no way to display a number array with a $ in front.
tvals = cellstr( num2str(f_vals(:), '$%-.1f') );
Tval = table(name, x_t, tvals, 'VariableNames',{'Fund','Allocation','Dollar_Value'});
That's exactly what I was trying to do. cheers

Sign in to comment.

More Answers (1)

Walter Roberson
Walter Roberson on 21 Oct 2016
When displaying cells or struct or tables containing strings or arrays of numbers, MATLAB summarizes if it does not think that the display will easily fit.
My investigation a month or so ago found that the point at which it started summarizing depended on the width of the command output window, so if you make your window wider you might get more characters displayed.

Categories

Community Treasure Hunt

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

Start Hunting!