如何从MATLAB中的表中选择数据

时间:2017-01-31 11:01:25

标签: matlab

我在MATLAB中有一个表,它的数据类型是单元串和单元格的混合。 其中一个表格列是“Laterality”,数据是一个单元格字符串。

我想选择Laterality ='L'

的所有数据

所以我这样做:

newTable = (table.Laterality == 'L')

根据文档:https://uk.mathworks.com/help/matlab/tables.html

但是这会产生错误:

Undefined function 'eq' for input arguments of type 'cell'.

我尝试将数据类型更改为chars。我尝试使用数据集类型而不是表。还有其他建议吗?

1 个答案:

答案 0 :(得分:1)

使用cellfun功能:

eq_L = cellfun(@(lat) strcmp(lat, 'L'), your_table.Laterality);
               % each cell content (named lat) is compared(*) with 'L'

或@excaza回忆,strcmp()可以处理单元格数组:

eq_L = strcmp(your_table.Laterality, 'L');

然后

newTable = your_table(eq_L,:); % logical indexing

eq_L是一个大小相同的数组,其逻辑值用于logical indexing

(*)如果每个单元格只有1个字符,那么您可以编写lat == 'L'。但是如果某些字符超过1个字符(或空字符),则比较不同大小的数组时会出错。 strcmp()可以处理这两种情况。