有一个字符串列表,我想用它来填充 gui

Have a list of strings I want to populate a gui with

基本上我有一个 excel 文件,我将一组字符串读入我的一个 matlab 变量中,这些字符串是数据列的 header。由于这个 excel 文件很大,我希望可以选择 select 在给定时间分析哪些数据,我希望获取这些 strings/headers 并将它们显示在我的 gui 上它们旁边有一些复选框按钮,以便我可以选择要处理的(我需要能够 select 多个数据列)。这个 header 的数量会因文件而异,因此列表项和复选框的数量必须根据数据文件在 gui 上进行更改。任何想法如何完成这个?我可以用一堆文本框和单选按钮填充我的图形用户界面,但我最终可能会得到一些空的,或者最终得到一些很少的东西,因为每个数据文件可以有 1-50 个数据列用自己的 header

或者,如果有人知道有更好的方法让我的用户选择要操作的数据列,而不是大量的复选框,我会很高兴听到它!这似乎是最直接的方法。

我尝试了建议并得到:

代码如下:

[Data,Text] = xlsread('C:\data.csv');
a = Text(:,1);
b = strmatch('Channel Description',a);
Channels = Text(b,:);
[vals{1:numel(Channels,1)}]=deal(false);
foo= uitable('Data',vals,'ColumnEdit', true, 'RowName',Channels);

这是一个使用 uitable 的示例,类似于 excaza 的评论,但使用 excel 列 headers 作为 table:

中的行名称
[~,s,~] = xlsread('excelFile.xlsx', 1, 'A1:ZZ1');
[vals{1:numel(s),1}]   =   deal(false);
foo = uitable('Data', vals, 'ColumnEdit', true, 'RowName', s);
colsToLoad = foo.Data;

然后您需要使用 colsToLoad 读取 MATLAB 中的整个 table 和 select 列,或者循环遍历 colsToLoad 并分别读取每一列 xlsread 不支持 non-contiguous 范围。

[Data,Text] = xlsread('excelFile.xlsx');
dataToProcess = Data(:,[foo.Data{:}]);