最近在为论文编写一个UI界面,记录一下学习过程,也方便自己后续需要的时候回顾。
一 显示外部数据功能
-
链接外部数据(Access数据库或Excel表),进而显示在 UITable上
这个通过直接赋值即可实现:
data = readtable(‘excel文件名称.xlsx’);
app.UITable.Data = data; -
通过点击按钮,选择文件的方式导入数据(代码还包括了在文本框上显示文件路径)
function SelectButtonPushed(app, event) % 因为filename 需要在另一个函数中应用,故在属性中进行了声明 [app.filename, pathname] = ... % app.filename 接受文件名; pathname接受路径名称 uigetfile({'*.xlsx';'*.xls';'*.*'},'File Selector'); % 规定可选的文件类型 pathname = string(pathname); app.filename = string(app.filename); if isequal(app.filename,0)||isequal(pathname,0) return; else app.fileText.Value=pathname+app.filename; end end
在另外的函数中读取该文件
data = xlsread(app.filename); % 如果是只需要读取数据,不需要在UI中创建一个表显示,则用xlsread
% data = readtable(app.filename) ; % 如果需要同时在UI中创建一个显示该数据的表,则用 readtable
二、用户输入/更改数据
选中UItable,在属性栏可以修改每一列的可编辑性,则运行后,可以在表上进行数据的输入/更改
【20210308更新】
开发的过程中发现我需要在生成表的时候,就使得表的某些列具备可修改、不可修改的性质
因此更新一下用代码直接实现表列的可编辑性功能
logic_i = [0 0 1 0]; % 表中只有第3列可编辑(逻辑值为1(true))
L = logical(logic_i); % 将数值数组转换为逻辑值数组
app.UITable.ColumnEditable=L; % 给表的ColumnEditable属性赋值
三、更改数据类型
因为我后面需要对读取的数据进行数值运算,因此需要将读取得到的table类型数据转换为double类型
因为不知道转换函数,就试着用了double,得到错误提示
进而使用table2array将数据转换为了double类型
因为我自己也是初学,从网上一点点找资料学习,可能会有一些理解错误,或者编码多余的地方。如果有其他朋友看到,仅供参考,也欢迎指出。
以上参考了matlab的官方文档和示例:https://ww2.mathworks.cn/help/matlab/creating_guis/display-an-interactive-table-in-app-designer.html