我在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。我尝试使用数据集类型而不是表。还有其他建议吗?
答案 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()
可以处理这两种情况。