MATLAB Answers

0

I have a problem aligning text in uitable due to the data type.

Yasmin Samy さんによって質問されました 2019 年 5 月 10 日
最新アクティビティ Yasmin Samy さんによって コメントされました 2019 年 5 月 12 日
Hi all,
I have a uitable in my figure and can`t seem to adjust the alignment of the text. Apparently, from the documenation (https://www.mathworks.com/help/matlab/ref/matlab.ui.control.tableappd-properties.html), char is automatically displayed justified to the left and the numeric to the right.
In my code, i converted num2cell the 4 arrays and then combined them by horzcat to get the final table to use. This is what i got: All the columns to the left except the N is to the right. Can anyone help me adjust this please? Either by working on data type, alignments in uitables, or any other solution that makes the tables readable instead of looking confusing! Thanks
uit.PNG

  4 件のコメント

Yasmin Samy 2019 年 5 月 10 日
Thanks Walter,
Is there a way to generalize that, because i repeat this process 30 times and so i have different values.
Instead of 505 can we put maybe table(2,1) ??
Kindly note im working with matlab R2016a
Walter Roberson
2019 年 5 月 11 日
Instead of the [505 etc] you could put a variable that had the numeric values.
However, this approach is useless to you, as string() and compose() were not added until R2016b.
arrayfun(@(x) sprintf('%-3s', sprintf('%.3g',x)), YourArray, 'uniform', 0)
However, %.3g is perhaps not suitable for your last column.
You can sprintf uniform 0 each column by itself, with whatever numeric format and string width you want.
There are certainly other ways to get left justification. One way is to write, for example,
LJ = @(S, N) [S, blanks(N-strlen(S))];
arrayfun(@(x) LJ(sprintf('%.3g', x), 3), YourArray, 'uniform', 0)
but if you are going to be doing columns separately and putting them together then,
arrayfun(@(x) sprintf('%-3d', x), YourArray(:,1), 'uniform', 0)
Yasmin Samy 2019 年 5 月 12 日
Thanks that works!!!

サインイン to comment.

製品


リリース

R2016a

0 件の回答


Translated by