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

Find string (from table) in cell in matlab

我想在单元格内找到一个字符串(我从 table 中获取的字符串)的位置: A是我的table,B是手机

我测试过:

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

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

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

你想要strfind:

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

如果 A 是一个 table 而 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

Luis Mendo 的回答绝对正确,但我想补充一些一般信息。

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

来自 Mathworks 论坛的修改解决方案,适用于单列 table 和参差不齐的字符串

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

会给你行号。