# Find rows of cell array containing certain specific multiple cells?

5 views (last 30 days)
Song Decn on 22 Feb 2020
Edited: Giuseppe Inghilterra on 22 Feb 2020
Suppose I have a cell array,
ca = {'a' 'b' 'c' 10 10; 'c' 'e' 'f' 10 20; 'g' 'h' 'i' 20 10;}
How can I find the row containing eg. {'a'} {'b'} {'c'} at same time?
##### 2 CommentsShowHide 1 older comment
Song Decn on 22 Feb 2020
Sorry David, to be clear, I want to find out the row in cell array 'ca', containing {'a'} {'b'} {'c'} at same time.

Giuseppe Inghilterra on 22 Feb 2020
Edited: Giuseppe Inghilterra on 22 Feb 2020
Hi,
try to run following code, variable 'r' returns you row that contains what are you looking for:
[r c] = find(strcmp(ca,'g'));
Hope this helps.
Edit:
ValueToFind = {'g' 'h' 'i'}; %Define cell array of values to find in same row
l = length(ValueToFind);
ca = {'a' 'b' 'c' 10 10; 'c' 'e' 'f' 10 20; 'g' 'h' 'i' 20 10;};
[r_ca ~] = size(ca);
Row = zeros(r_ca,l);
for ii = 1:l
[r ~] = find(strcmp(ca,ValueToFind(ii)));
if ~isempty(r)
r = sort(r);
Row(r,ii) = 1;
end
end
r_f = find(all(Row,2));
In this way you obtain the row (r_f) where all ValueToFind are. Right now I give you this solution, by adopting a for loop cycle. I dont think that exists a one-line solution.
Song Decn on 22 Feb 2020
Thank u Giuseppe. I want to find out the row in cell array 'ca', containing {'a'} {'b'} {'c'} at same time, not a row containing a single element like 'a' or 'b' or 'g'

R2019b

### Community Treasure Hunt

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

Start Hunting!