How to compare between two cell array?

>> W={ [1 2] , [1 3] , [1 4] , [2 3] , [2 4] }
W =
1×5 cell array
[1×2 double] [1×2 double] [1×2 double] [1×2 double] [1×2 double]
>> F={ [1 2] , [1 3] , [1 4] }
F =
1×3 cell array
[1×2 double] [1×2 double] [1×2 double]
I want to compare each value in F if it is exist in W?

 Respuesta aceptada

JESUS DAVID ARIZA ROYETH
JESUS DAVID ARIZA ROYETH el 11 de Dic. de 2019
answer=cell2mat(cellfun(@(x) any(cellfun(@(y) isequal(x,y),W)),F,'uni',false))

6 comentarios

Mira le
Mira le el 11 de Dic. de 2019
Can I use loop for here to determine values that are in W, the result is not logical ,but the values are equal in W and F
JESUS DAVID ARIZA ROYETH
JESUS DAVID ARIZA ROYETH el 11 de Dic. de 2019
with :
W={ [1 2] , [1 3] , [1 4] , [2 3] , [2 4] }
F={ [1 2] , [1 8] , [1 4] }
this will show [1 0 1] logical, because [1 8] not is member of W
Mira le
Mira le el 11 de Dic. de 2019
C=[ ];
for i=1:length(W)
for j=1:length(F)
if F{j}==W{i}
C = [ C F{j} ];
end
end
end
it doesn't work
C=[ ];
for i=1:length(W)
for j=1:length(F)
if isequal(F{j},W{i})
C = [ C F{j} ];
end
end
end
Mira le
Mira le el 11 de Dic. de 2019
Thank you
Simpler using indexing:
>> X = ismember(cat(1,F{:}),cat(1,W{:}),'rows');
>> cat(1,F{X})
ans =
1 2
1 4
>> cat(2,F{X})
ans =
1 2 1 4

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Productos

Versión

R2017a

Etiquetas

Preguntada:

el 11 de Dic. de 2019

Comentada:

el 11 de Dic. de 2019

Community Treasure Hunt

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

Start Hunting!

Translated by