有一个我想填充gui的字符串列表

时间:2015-02-19 13:11:45

标签: matlab matlab-guide

基本上我有一个excel文件,我在我的一个matlab变量中读取了一组字符串,这些字符串是数据列的标题。由于这个excel文件非常庞大,我希望能够选择在给定时间分析哪些数据,我希望能够使用这些字符串/标题并将它们显示在我的gui上,旁边有一些复选框按钮,这样我就可以了可以选择要处理哪些(我需要能够选择多个数据列)。这个标题的数量可以在不同文件之间变化,因此列表项和复选框的数量必须根据数据文件在gui上更改。任何想法如何实现这一目标?我可以用一堆文本框和单选按钮填充我的gui但是我可能最终得到一些空的,或者最终得到一些很少的,因为数据文件可以有每个1-50个数据列的任何地方用他们自己的标题

或者,如果有人知道更好的方法让我的用户选择除了大量复选框之外的其他数据列,我会很高兴听到它!这似乎是最直接的方法。

我尝试了所建议的内容并获得:

gui output

代码如下:

[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);

1 个答案:

答案 0 :(得分:0)

以下是使用uitable的示例,类似于excaza的注释,但使用excel列标题作为表中的行名称:

[~,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中选择列或在colsToLoad上循环,并分别读取每列,因为xlsread不支持非连续范围

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