发现细胞指数包含我的字符串

4684(30天)
新
2011年2月25日
你好,我有一个细胞aray (40000 x1)的每一个细胞都包含一个字符串。我想找到包含特定字符串索引的细胞。
我用以下:
指数= strfind (Mycellarray,“Bla”);
我得到以下错误:? ? ?错误使用= = >细胞。strfindat 35 If any of the input arguments are cell arrays, the first must be a cell array of strings and the second must be a character array.
什么是错误的,在帮助文件中strfind接受细胞数组和一个模式……?
谢谢你!
7评论
1月
1月 2017年9月26日
这是 一条错误消息。它只是告诉你,没有找到字符串。
你真的在寻找字符串的ggiBoundaries1 (1,1) ?或者你的意思是:
找到(strcmp (rawdata ggiBoundaries1 (1,1)))
搜索出现的第一个字符的变量 ggiBoundaries1 吗?
请不要一个新的问题附加到一个现有的线程。打开一个新的更好。谢谢。

登录置评。

接受的答案

1月
1月 2011年2月25日
编辑:MathWorks支金宝app持团队 2021年3月23日
你想搜索“bla”内细胞的数组,每个元素中的文本或元素“bla”到底是什么?如果你解释这个细节,那么你将更容易回答的问题。
如果你正在寻找文本,bla作为文本的一部分,然后从R2016b可以使用“包含”功能,正如亚历山大Cranney指出。
指数=找到(包含(C,“bla”));
该函数返回一个逻辑数组“包含”。这种类型的逻辑索引可以用来使许多工作流程更有效率。更多使用逻辑阵列,参考文档:
在早期版本的MATLAB (R2016b之前),您可以使用“strfind”功能。然而,“strfind”返回一个单元阵列的索引。任何输入单元格的文本不包含“bla”,“strfind”返回一个空单元。使用“isempty”和“cellfun”与“搜索”功能,找到空细胞。
IndexC = strfind (C,“bla”);
指数=找到(不是(cellfun (“isempty”IndexC)))
如果你正在寻找文本正是bla,然后看到乔斯的答案。
10评论
沃尔特·罗伯森
沃尔特·罗伯森 2021年1月22日
编辑:沃尔特·罗伯森 2021年1月22日
exact_match_mask = strcmp (YourCell,“bla”)
exact_match_locations =找到(exact_match_mask)
提供你的细胞条目所有特征向量。

登录置评。

更多的答案(7)

周杰伦
周杰伦 2016年5月28日
编辑:周杰伦 2016年5月28日
这工作对我来说:
idx =找到(ismember (C,“bla”))
8的评论

登录置评。


乔斯(10584)
乔斯(10584) 2011年2月25日
所以,你原来的数组是一个细胞细胞单个字符串的数组。使用比较字符串的索引,找到包含指定字符串的细胞与细胞
C = {{“一个”},{“b”},{“c”},{“一个”},{“一个”}}%的数据
idx =找到(strcmp ([C {}):“一个”))%单行引擎

马特·B
马特·B 2013年11月14日
现在我意识到这个问题是旧的,但一个简单的方法是定义一个内联函数:
cellfind = @(字符串)(@ (cell_contents)(比较字符串(字符串,cell_contents)));
你可以使用这个cellfun返回一个布尔值为每个元素的细胞。例如:
cell_array ={1,眼(2),真的,“foo”,10};
字符串=“foo”
logical_cells = cellfun (cellfind (“foo”),cell_array)
logical_cells =
(0,0,0,1,0]
3评论
1月
1月 2019年6月6日
@Matt B: 比较字符串 直接接受一个单元阵列,这样你就可以避免复杂 cellfun 与昂贵的匿名函数的方法:
cell_array ={1,眼(2),真的,“foo”,10}
比较字符串(cell_array“foo”)
> > (0,0,0,1,0]

登录置评。


俄梅珥Moussaffi
俄梅珥Moussaffi 2017年2月26日
更快的选择:startsWith endsWith计数
E, g,指数= count (Mycellarray, Bla);
1评论
沃尔特·罗伯森
沃尔特·罗伯森 2017年2月26日
是的,这个方法应该从R2016b工作得很好。

登录置评。


1月
1月 2011年2月25日
你可以检查你的细胞是一个字符串:
iscellstr (Mycellarray);
这将显示的指标和内容把非string对象:
指数=找到(~ cellfun (“isclass”Mycellarray,“字符”))
disp (Mycellarray(指数));
另一个想法是,一些字符串是多行字符矩阵:
指数=找到(cellfun (“大小”Mycellarray 1) > 1)

彼得·法卡斯
彼得·法卡斯 2016年5月9日
你也可以explicitelly定义索引矩阵:
(rw, ~) = (cellArray)大小;
印第安纳州= (1:1:rw);
idx = strcmp (cellArray stringToSearchFor);
yourResult =印第安纳州(idx);
有点冗长,如果你检查代码在两年的时间,你仍然会知道是怎么回事。

穆克什Jadhav
穆克什Jadhav 2016年10月9日
编辑:每•艾萨克森 2017年1月10日
还没有测试,但这应该工作很好。
word_to_find = strfind (strarray,“stringtofind”);
starray.index (word_to_find);

类别

找到更多的在字符和字符串帮助中心文件交换

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!