在 Excel 中,您可以使用“筛选”功能来查找列中的某些单词。我想在 Matlab 中对整个表格执行此操作。
以Matlab示例表“患者.dat”为例;我的第一个想法是使用:
patients.Gender=={'Female'}
这不起作用。
strcmp(patients.Gender,{'Female'})
仅在一栏(“性别”)中工作。
我的问题:我有一个表,其中包含不同的单词“A”、“B”、“香蕉”、“苹果”……以任意方式分布在表的列中。我只想要包含“A”和“B”的行。
很奇怪我没有在 matlab“帮助”中找到这个,因为它看起来很基本。我查看了 stackedO 但也没有找到答案。
最佳答案
Matlab 中的表
可以看作是扩展的元胞数组
。例如,它还允许命名列。
但是,在您的情况下,您希望在整个元胞数组
中进行搜索,并且不关心表
的任何额外功能。因此使用 table2cell
进行转换。
然后您想要搜索某些单词。您可以使用 regexp
但在您提到的示例中 strcmp
也足够了。两者都可以立即在元胞数组
上工作。
最后,您只需要查找
逻辑搜索矩阵的行。
这里的示例从 Matlab 示例数据集中获取所有“男性”且状况“优秀”的患者的行:
patients = readtable('patients.dat');
patients_as_cellarray = table2cell(patients);
rows_male = any(strcmp(patients_as_cellarray, 'Male'), 2); % is 'Male' on any column for a specific row
rows_excellent = any(strcmp(patients_as_cellarray, 'Excellent'), 2); % is 'Excellent' on any column for a specific row
rows = rows_male & rows_excellent; % logical combination
patients(rows, :)
确实只打印出状况良好的男性患者。
关于matlab - 过滤 Matlab 表格中的单词(如 Excel 中),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28463921/