[MATLAB App Designer] 在同一个UITable中显示/输入不同类型的数据

本文介绍了在MATLAB GUI中使用UITable显示不同类型数据的两种方法,对比了旧方法(将所有数据转换为cell)与新方法(使用table函数直接创建table类型列表)的优缺点。新方法简化了数据类型转换,提高了代码效率。同时,讲解了如何设置表的可编辑属性以获取用户输入,并提供了相关转换函数示例。

【20210720】
更新从官方示例中学到的更简便的方法
1.旧方法:将UITable中的数据全部设为cell
缺点:后续数据计算需要进行复杂繁琐的数据转换
2.新方法:创建table类型的列表,再赋值给UITable

% 采用table函数创建
% sz为所创建的table大小
% varTypes 为table中每一列数据的数据类型
% varNames 为每列变量的名称,即表头
sz=[2 5];                                                     % 2行5列
varTypes = {'cell','cell','double','string','double'};        % 每列的数据类型
varNames = {'No.','Activity','Quantity','Type','Number};'     % 表头
T = table('Size',sz,'VariableTypes',varTypes,'VariableNames',varNames);
app.UITable.Data = T;        % 赋值给UITable显示

优点:可一次性指定每列的数据类型,后续不需要再进行类型的转换。
关于table函数更详细的应用可参考帮助文档:https://ww2.mathworks.cn/help/matlab/ref/table.html?searchHighlight=table&s_tid=srchtitle

【20210715】
更新一个官方文档中关于这部分的应用
https://ww2.mathworks.cn/help/matlab/creating_guis/app-or-gui-with-graphical-table.html?requestedDomain=cn
在这里插入图片描述
【旧方法】
为了

MATLAB App Designer 中,将数据添加到 `UITable` 组件的最后一行,通常需要获取当前表格数据,然后在末尾追加新数据,并更新 `UITable` 的 `Data` 属性。 ### 添加数据UITable 最后一行 首先,可以通过 `app.UITable.Data` 获取当前表格的数据。然后将新数据以行的形式追加到现有数据中,并将更新后的数据重新赋值给 `UITable` 的 `Data` 属性[^1]。 以下是一个示例代码,演示如何将一行新数据添加到 `UITable` 的末尾: ```matlab % 假设新数据一个元胞数组 newRow = {'New Activity', '100', 'Pending'}; % 获取当前 UITable 中的数据 currentData = app.UITable.Data; % 将新行追加到现有数据的末尾 updatedData = [currentData; newRow]; % 更新 UITable数据 app.UITable.Data = updatedData; ``` 如果 `UITable` 中的数据类型是 `table`,则需要使用 `table` 类型的拼接方式: ```matlab % 假设 newRowTable 是一个与现有 table 数据结构匹配的 table newRowTable = table({'New Activity'}, {100}, {'Pending'}, 'VariableNames', app.UITable.Data.Properties.VariableNames); % 获取当前数据 currentData = app.UITable.Data; % 合并数据 updatedData = [currentData; newRowTable]; % 更新 UITable app.UITable.Data = updatedData; ``` ### 自动滚动到最后一行 为了在添加新数据后自动滚动到表格的最后一行,可以设置 `UITable` 的 `Selection` 属性为最后一行的索引[^3]: ```matlab % 获取当前数据行数 numRows = size(app.UITable.Data, 1); % 设置选中行为最后一行 app.UITable.Selection = numRows; ``` 该操作可以提升用户体验,使用户无需手动滚动查看最新添加的数据。 ### 注意事项 - 如果 `UITable` 的 `Data` 是 `table` 类型,则新添加的行也应为 `table` 类型,并且列名和数据类型需与现有数据一致。 - 如果 `UITable` 的 `Data` 是元胞数组,则新行应为相同列数的元胞数组。 - 若原始数据中包含空值(如从 Excel 文件中读取的 `NaN`),应在追加数据前进行清理,以避免显示异常[^4]。 例如,替换 `NaN` 为 空字符串: ```matlab currentData = app.UITable.Data; currentData(cellfun(@(x) isequal(x, NaN), currentData)) = {''}; ``` ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值