How to find a element in cell array

14 次查看(过去 30 天)
hi! I have a problem with matlab: I have a string cell array with variousty size (1024*1) and i must be find one string if it is in cell array and location of it in cell array. any one help me? thank ect
s{1,1}={'01' '02' '0123' '04' '14' '0124' '34' '03' '0134' '23' '24' '0234' '12' '13' '1234'}
s{2,1}= {'012' '024' '3' '034' '023' '1' '123' '013' '4' '014' '134' '2' '234' '124' '0'}
i must find '4' if is appear in s and location of '4' in cell array s.
  1 个评论
Stephen23
Stephen23 2015-3-12
编辑:Stephen23 2015-3-12
Although this has already been accepted, there is a neater solution using a better data structure of a cell array of strings (rather than cell array of cell arrays), together with strfind. This returns the location indices in a cell array the same size as s:
>> s(2,:)={'012','024','3','034','023','1','123','013','4','014','134'};
>> s(1,:)={'01','02','0123','04','14','0124','34','03','0134','23','24'};
>> strfind(s,'4')
ans =
[] [] [] [2] [2] [4] [2] [] [4] [] [2]
[] [3] [] [3] [] [] [] [] [1] [3] [3]

请先登录,再进行评论。

采纳的回答

Andrei Bobrov
Andrei Bobrov 2012-4-29
out = cellfun(@(x)regexp(x,'4'),s,'un',0);
ADDED on Nguyen's answer :)
out = cellfun(@(x)regexp(x,'^4$'),s,'un',0)
or:
out = cellfun(@(x)ismember(x,'4'),s,'un',0)
  3 个评论
Image Analyst
Image Analyst 2016-1-19
mhm's "flag" moved here so that it is a comment rather than a flag: Then I removed the flag.
find element in cell
ibrahim Salim
ibrahim Salim 2018-1-24
编辑:ibrahim Salim 2018-1-24
Hello, I'd like to ask How can I delete zeros(logical values) from cell 'out'? Thanks

请先登录,再进行评论。

更多回答(1 个)

Richard Brown
Richard Brown 2012-4-29
Can you define your cell array differently (can it be a 2D cell array, rather than a cell array of cell arrays?) If so, then
s(1,:)={'01' '02' '0123' '04' '14' '0124' '34' '03' '0134' '23' '24' '0234' '12' '13' '1234'}
s(2,:)= {'012' '024' '3' '034' '023' '1' '123' '013' '4' '014' '134' '2' '234' '124' '0'}
[I, J] = find(strcmp(s, '4'))
  4 个评论
Nguyen Trung
Nguyen Trung 2012-4-30
Ok! thanks! But the cell array i have is generated by my function and i don't know how to save similar to your answer! Can you help me?
Richard Brown
Richard Brown 2012-4-30
OK, so long as each entry of s has the same number of entries (15 in this case), then first run
s = vertcat(s{:})

请先登录,再进行评论。

类别

Help CenterFile Exchange 中查找有关 Characters and Strings 的更多信息

标签

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by