有没有一种简单的方法可以在 matlab GUI 中显示 "table"?

Is there a simple way to display "table" in matlab GUI?

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

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

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

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

但是,我想不出任何将保存为 table 的数据转换为字符串的简单方法。

有没有一种简单的方法可以在 GUI 中显示 table,或者我是否需要手动从 table 中提取所有列?

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

tableString=evalc('disp(table)')

但结果是一场灾难,看起来完全不像我在 shell.

中得到的格式整齐的字符串

这是一种使用 uitable 的 hack,它将 UI table 组件创建到 GUI.The "uitable" 中现有 table。下面的 GUI 有一个按钮,一旦你按下它,就会创建一个 UI table 并放置在 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

这是按下按钮后的样子:

因此,如您所见,重要的部分是明智地放置 table,使其不会出现在 GUI.

的其他元素之上

希望对您有所帮助!