Storing fewer decimal places in an array to display using a uitable

3 ビュー (過去 30 日間)
John Bach
John Bach 2022 年 2 月 4 日
コメント済み: John Bach 2022 年 2 月 5 日
I have a list of varaibles that are required to be displayed however, I can't work out how to manipulate the values so that they are presentable when dispalyed in the uitable. I need to decrease the number of decimal places dispalyed and centralise them in the table however I can't work out, nor find on previous and related forums, how to do this.
Thanks yoh in advance for your help.
  2 件のコメント
Walter Roberson
Walter Roberson 2022 年 2 月 4 日
Is this for "traditional figures" (GUIDE) or "uifigure" (App Designer) ? I would need to research for uifigure(); for traditional figures, the method of centering each entry requires converting to a cell array of character vectors, each of which has to have some HTML 1.1 code added to it.
John Bach
John Bach 2022 年 2 月 4 日
This is just for traditional figures, although from what you're saying this method sounds a bit above my pay grade. I will reserach into converting the entries to a cell array of character vectors to see whether I can implement this into my code.
Thank you for your help.

サインインしてコメントする。

採用された回答

Simon Chan
Simon Chan 2022 年 2 月 4 日
Change the number to a string by using function sprintf as follows:
uit1 = uitable(uif,'Position',[5 155 500 100]);
uit1.Data = rand(3,5); % Upper uitable using number
uit2 = uitable(uif,'Position',[5 10 500 100]);
uit2.Data = arrayfun(@(x) sprintf('%.2f',x),rand(3,5),'uni',0); % Lower uitable using string
  7 件のコメント
Walter Roberson
Walter Roberson 2022 年 2 月 5 日
uif = figure(); %traditional figure not uifigure
uit1 = uitable(uif,'Position',[5 155 500 100]);
uit1.Data = rand(3,5) * 100; % Upper uitable using number
uit2 = uitable(uif,'Position',[5 10 500 100]);
uit2.Data = arrayfun(@(x) sprintf('<HTML><CENTER>%.2f</CENTER>',x),uit1.Data,'uni',0); % Lower uitable using string
You might notice that the alignment is not center in practice. And if you use
uit2.Data = arrayfun(@(x) sprintf('<HTML><TBODY><TR><TD ALIGN="RIGHT">%.2f</TD></TR></TBODY>',x),uit1.Data,'uni',0); % Lower uitable using string
then in practice the alignment is not right (or center if you use that.) But you can tell that TBODY was used: a heavier weight of font is used for the characters.
In theory you can use HTML 1.1 in that context; in practice it can be difficult to get to work.
I seem to remember that I did get it to work in some earlier releases. Unfortunately, it would probably be difficult for me to find the appropriate postings now.
John Bach
John Bach 2022 年 2 月 5 日
I do really appreicate all of the effort that you've put into trying to help me, so thank you so much for that. I have now got a very good way of presenting my data, and what I am going after is merely for improving aesthetics.
Thanks both for your vital contributions!

サインインしてコメントする。

その他の回答 (0 件)

カテゴリ

Help Center および File ExchangeSpline Postprocessing についてさらに検索

製品

Community Treasure Hunt

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

Start Hunting!

Translated by