Azzera filtri
Azzera filtri

Find where two cell arrays of different sizes are equal

17 visualizzazioni (ultimi 30 giorni)
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 Commenti
Stephen23
Stephen23 il 22 Set 2020
Modificato: Stephen23 il 22 Set 2020
"If these were doubles, I would use"
for i=1:size(cell1,2)
ind=find(cell2==cell1(1,i))
end
The MATLAB approach would be to use ismember, e.g.:
>> A = [99,100,112,111,103];
>> B = [109,99,98,103];
>> find(ismember(A,B))
ans =
1 5
Which also works for cell arrays of character vectors:
>> A = {'cat','dog','pig','cow','goat'};
>> B = {'meow','cat','bark','goat'};
>> find(ismember(A,B))
ans =
1 5
Camille Woicekowski
Camille Woicekowski il 22 Set 2020
Wow, can you tell I learned Python first? Matlab has been all self-taught for me. This is really helpful, thank you!

Accedi per commentare.

Risposta accettata

Ameer Hamza
Ameer Hamza il 22 Set 2020
Modificato: Ameer Hamza il 22 Set 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
  3 Commenti
Ameer Hamza
Ameer Hamza il 22 Set 2020
Yes, that is the power of MATLAB vectorization. Most of the things can be done without loops.
I am glad to be of help!

Accedi per commentare.

Più risposte (0)

Categorie

Scopri di più su Loops and Conditional Statements in Help Center e File Exchange

Prodotti


Release

R2020a

Community Treasure Hunt

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

Start Hunting!

Translated by