using strcmp on nested cell array (cell array within a cell array)
23 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
ChiPhi85
am 24 Jan. 2019
Kommentiert: ChiPhi85
am 25 Jan. 2019
I need to retrieve the index of a string within a cell array where some cells are strings and others are cell arrays of different sizes. For example the first 5 rows might look like this:
{1×2 cell}
{'Text1' }
{1×2 cell}
{'Text2' }
{1×5 cell}
How do I retrieve the row index when the string might be contained with the cell arrays? I'd like to do this without a loop and I'm sure there's a way but I can't figure it out and can't seem to find an answer anywhere. I've tried cellfun which works if I was searching for 'Text1' for example.
0 Kommentare
Akzeptierte Antwort
Guillaume
am 24 Jan. 2019
I'm not entirely clear if you want to look inside the inner cell arrays or not.
If not:
lookup = 'something';
rows = find(cellfun(@(c) ischar(c) && strcmp(c, lookup), yourcellarray)) %the && is essential to ensure that strcmp is only called when the content of the cell is a char vector
If you want to look insie the inner cell arrays and only care about knowing which rows of the outer cell array may contain your search:
lookup = 'something';
rows = find(cellfun(@(c) any(strcmp(c, lookup)), yourcellarray))
Note that this assumes that the inner cells all contain char vectors.
Weitere Antworten (1)
Kevin Phung
am 24 Jan. 2019
Bearbeitet: Kevin Phung
am 24 Jan. 2019
if a is your cell array:
myText ='Text1';
idx = find(cellfun(@ischar,a)) %returns those indices where cell is a chr array
idx = idx(find(strcmp(a(cellfun(@ischar,a)),myText)))
0 Kommentare
Siehe auch
Kategorien
Mehr zu Cell Arrays finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!