是否有一种简单的方式来显示" table"在matlab GUI?

时间:2015-04-17 13:56:20

标签: matlab matlab-guide

我在matlab中以table()命令生成的表格的形式保存来自我系统的报告。为了显示这些表,我使用的是disp(myTable)。当我只在shell中查看表时,这很好。

但是,现在我希望构建一个GUI来显示这些表以及图表和其他信息。我发现我可以通过

在静态文本GUI元素中显示字符串

set(handles.staticText1, 'String', 'My text! Yay!')

但是,我无法弄清楚将保存为表格的数据转换为字符串的简单方法。

是否有一种在GUI中显示表格的简单方法,还是需要从表格中手动提取所有列?

编辑:好的,所以我找到了一种将表格保存到字符串中的方法:

tableString=evalc('disp(table)')

但结果是一场灾难,看起来并不像我在shell中获得的格式整齐的字符串。

1 个答案:

答案 0 :(得分:5)

这是一种使用uitable的hack,它在GUI中创建一个UI表组件。" uitable"是从现有表的元素构建的。以下GUI具有按钮,一旦您按下它,就会创建一个UI表并将其放置在指定位置的GUI内。然后你可以玩它。

function MakeTableGUI

clear
clc
close all

%// Create figure and uielements
handles.fig = figure('Position',[440 400 500 230]);

handles.DispButton = uicontrol('Style','Pushbutton','Position',[20 70 80 40],'String','Display table','Callback',@DispTableCallback);

%// Create table
LastName = {'Smith';'Johnson';'Williams';'Jones';'Brown'};
Age = [38;43;38;40;49];
Height = [71;69;64;67;64];
Weight = [176;163;131;133;119];
BloodPressure = [124 93; 109 77; 125 83; 117 75; 122 80];

handles.T = table(Age,Height,Weight,BloodPressure,'RowNames',LastName);

    function DispTableCallback(~,~)

        %// Place table in GUI
        uitable(handles.fig,'Data',handles.T{:,:},'ColumnWidth',{50},'ColumnName',{'Age','Height','Weight','BloodPressure'},...
            'RowName',LastName,'Position',[110 20 300 150]);


    end

end

这是按下按钮后的样子:

enter image description here

如您所见,重要的是您明智地放置表格,使其不会出现在GUI的其他元素上。

希望有所帮助!