在 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,...)仅适用于普通字符串,但不适用于元胞数组。您在代码片段中索引 A
和 B
的方式仍然是元胞数组(维度 (1,1))。您需要使用大括号 {}
到 "get rid of" 元胞数组并获取包含的字符串。 Luis Mendo 展示了如何做到这一点。
来自 Mathworks 论坛的修改解决方案,适用于单列 table 和参差不齐的字符串
find(strcmp('mystring',mytable{:,:}))
会给你行号。
我想在单元格内找到一个字符串(我从 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,...)仅适用于普通字符串,但不适用于元胞数组。您在代码片段中索引 A
和 B
的方式仍然是元胞数组(维度 (1,1))。您需要使用大括号 {}
到 "get rid of" 元胞数组并获取包含的字符串。 Luis Mendo 展示了如何做到这一点。
来自 Mathworks 论坛的修改解决方案,适用于单列 table 和参差不齐的字符串
find(strcmp('mystring',mytable{:,:}))
会给你行号。