# Find where two cell arrays of different sizes are equal

22 views (last 30 days)
I have two cell arrays of different sizes filled with chars. I want to loop through and find the indices of one cell where the char values are equal to each other.
for example,
cell1={'cat','dog','pig','cow','goat'}
cell2={'meow','cat','bark','goat'}
should return 1 and 5 if I loop through cell one.
If these were doubles, I would use
for i=1:size(cell1,2)
ind=find(cell2==cell1(1,i))
end
but with these variable types I'm having some trouble.
cell2{1,2}==cell1{1,1}
return the logcial True but
find(cell2==cell1{1,1})
returns the error message "Operator == is not supported for opperands type cell". I also tried using cellfun(@isequal, cell1, cell2) but I get an error message because the size and shape of my cells are not equal.
How can I get the desired result using these variable types?
##### 2 CommentsShowHide 1 older comment
Camille Woicekowski on 22 Sep 2020
Wow, can you tell I learned Python first? Matlab has been all self-taught for me. This is really helpful, thank you!

Ameer Hamza on 22 Sep 2020
Edited: Ameer Hamza on 22 Sep 2020
To compare char arrays, strcmp() should be used. However, since you are using the lastest version of MATLAB, so there are easier ways
cell1={'cat','dog','pig','cow','goat'};
cell2={'meow','cat','bark','goat'};
idx = find(any(string(cell1) == string(cell2).'));
Result
>> idx
idx =
1 5
per isakson on 22 Sep 2020
... or
find( ismember( cell1, cell2 ) )

R2020a

### Community Treasure Hunt

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

Start Hunting!