Main Content

本页的翻译已过时。点击此处可查看最新英文版本。

通过 App 设计工具创建的 App 中的表数组数据类型

表数组对于将表格数据存储为 MATLAB® 变量很有用。例如,可以调用 readtable 函数从电子表格创建表数组。

Table UI 组件是在 App 中显示表格数据的用户界面组件。从 R2018a 开始,可以在 Table UI 组件中显示的数据类型包括表数组。只有在 App 设计工具中创建的 App 和使用 uifigure 函数创建的 App 和图窗才支持 table 数组。

在 App 中显示表数组数据时,可以利用某些数据类型的交互式功能。与 Table UI 组件支持的其他类型的数组不同,表数组数据不会根据 Table UI 组件的 ColumnFormat 属性显示。

逻辑数据

Table UI 组件中,逻辑值显示为复选框。true 值表示选中,false 值表示未选中。当 Table UI 组件的 ColumnEditable 属性为 true 时,用户可选中和清除 App 中的复选框。

fig = uifigure;
tdata = table([true; true; false]);
uit = uitable(fig,'Data',tdata);
uit.Position(3) = 130;
uit.RowName = 'numbered';

分类数据

categorical 值可显示为下拉列表或文本。当 Table UI 组件的 ColumnEditable 属性为 true 时,类别将显示在下拉列表中。否则,类别显示为不带下拉列表的文本。

fig = uifigure;
cnames = categorical({'Blue';'Red'},{'Blue','Red'});
w = [400; 700];
tdata = table(cnames,w,'VariableNames',{'Color','Wavelength'});
uit = uitable(fig,'Data',tdata,'ColumnEditable',true);

如果 categorical 数组未受保护,用户可通过在单元格中键入的方式将新类别添加到正在运行的 App 中。

日期时间数据

datetime 值根据相应表变量(datetime 数组)的 Format 属性显示。

fig = uifigure;
dates = datetime([2016,01,17; 2017,01,20],'Format','MM/dd/uuuu');
m = [10; 9];
tdata = table(dates,m,'VariableNames',{'Date','Measurement'});
uit = uitable(fig,'Data',tdata);

要更改格式,请使用圆点表示法来设置表变量的 Format 属性。然后,替换 Table UI 组件中的数据。

tdata.Date.Format = 'dd/MM/uuuu';
uit.Data = tdata;

Table UI 组件的 ColumnEditable 属性为 true 时,用户可在 App 中更改日期值。当列可编辑时,App 需要符合 datetime 数组的 Format 属性的输入值。如果用户输入无效日期,则表中显示的值为 NaT

持续时间数据

duration 值根据相应表变量(duration 数组)的 Format 属性显示。

fig = uifigure;
mtime = duration([0;0],[1;1],[20;30]);
dist = [10.51; 10.92];
tdata = table(mtime,dist,'VariableNames',{'Time','Distance'});
uit = uitable(fig,'Data',tdata);

要更改格式,请使用圆点表示法来设置表变量的 Format 属性。

tdata.Time.Format = 's';
uit.Data = tdata;

即使 Table UI 组件的 ColumnEditable 属性为 true,包含 duration 值的单元格在运行的 App 中也不可编辑。

非标量数据

非标量值在 App 中的显示方式与它们在命令行窗口中的显示方式相同。例如,以下表数组包含三维数组和 struct 数组。

fig = uifigure;
arr = {rand(3,3,3); rand(3,3,3)};
s = {struct; struct};
tdata = table(arr,s,'VariableNames',{'Array','Structure'});
uit = uitable(fig,'Data',tdata);

一个多列表数组变量在 App 中显示为一个组合列,就像在命令行窗口中一样。例如,以下表数组中的 RGB 变量是一个 3×3 数组。

n = [1;2;3];
rgbs = [128 122 16; 0 66 155; 255 0 0];
tdata = table(n,rgbs,'VariableNames',{'ROI','RGB'})
tdata =

  3×2 table

    ROI           RGB       
    ___    _________________

     1     128    122     16
     2       0     66    155
     3     255      0      0

Table UI 组件具有类似的呈现形式。选择 RGB 列中的一个项将选择该行中的所有子列。即使 Table UI 组件的 ColumnEditable 属性为 true,子列中的值在运行的 App 中也不可编辑。

fig = uifigure;
uit = uitable(fig,'Data',tdata);

缺失数据值

缺失值会根据具体数据类型显示为指示符:

  • 缺失字符串显示为 <missing>

  • 未定义的 categorical 值显示为 <undefined>

  • 无效或未定义的数字或 duration 值显示为NaN

  • 无效或未定义的 datetime 值显示为 NaT

如果 Table UI 组件的 ColumnEditable 属性为 true,则用户可在运行的 App 中更正值。

fig = uifigure;
sz = categorical([1; 3; 4; 2],1:3,{'Large','Medium','Small'});
num = [NaN; 10; 12; 15];
tdata = table(sz,num,'VariableNames',{'Size','Number'});
uit = uitable(fig,'Data',tdata,'ColumnEditable',true);

示例:显示表数组的 App

以下 App 说明如何在使用表数组数据的 App 中显示 Table UI 组件。表数组包含 numericlogicalcategorical 和多列变量。

StartupFcn 回调将一个电子表格加载到一个表数组中。然后显示其中部分数据并在 App 中绘制这部分数据。一个绘图显示原始表数据。另一个绘图最初显示相同的表数据,然后会随着用户在 Table UI 组件中编辑值或对列排序而相应更新。

另请参阅

|

相关主题