在matlab中的单元格中查找字符串(来自表格)

时间:2015-01-20 07:38:52

标签: string matlab find cell

我想在单元格内找到一个字符串(我从表中取出)的位置: A是我的桌子,B是牢房。

我测试过:

strncmp(A(1,8),B(:,1),1)

但它无法找到位置。 我测试了许多命令,如: ismember,strmatch,find(strcmp),find(strcmpi)find(ismember),strfind等...但是他们都给我错误,主要是因为我的数据类型!

所以请给我一个解决方案。

3 个答案:

答案 0 :(得分:3)

您想要strfind

>> strfind('0123abcdefgcde', 'cde')
ans =
     7    12

如果A是一个表而B是一个单元格数组,则需要以这种方式编制索引:

strfind(B{1}, A.VarName{1});

例如:

>> A = cell2table({'cde'},'VariableNames',{'VarName'}); %// create A as table
>> B = {'0123abcdefgcde'}; %// create B as cell array of strings
>> strfind(B{1}, A.VarName{1})
ans =
     7    12

答案 1 :(得分:2)

路易斯·门多的答案是绝对正确的,但我想补充一些一般信息。

您的问题是您尝试的所有函数(strfind,...)仅适用于普通字符串,但不适用于单元格数组。在代码段中对AB编制索引的方式仍然是单元格数组(维(1,1))。你需要使用大括号{}来"摆脱"单元格数组并获取包含字符串。 Luis Mendo展示了如何做到这一点。

答案 2 :(得分:0)

来自Mathworks论坛的修改过的解决方案,适用于带有不规则字符串的单列表

find(strcmp('mystring',mytable{:,:}))

将为您提供行号。