how to compare 2 or more cell arrays?

12 visualizaciones (últimos 30 días)
chocho
chocho el 9 de Mzo. de 2017
Comentada: Bharath Sagar el 11 de Feb. de 2020
Hi, i have 2 cells(cell1 and cell2) of size 628*1 and 244*1 respectively, and i want to compare the elements of cell 1 with the elements of cell 2 and return only the matched ones from cell1 and delete the rests
cell1{k,1}={' *tcaa-a6-2677*';'tcca-a6-2681';' *tcca-aa-3566*';............};
%
cell2{k,1}={'TCCA-A6-2671-11A-01R-1758-07';' *TCCA-A6-2677*-11A-01R-0826-07';'TCCA-AA-3520-11A-01R-0721-07'; 'TCCA-AA-3528-11A-01R-1758-07'; *TCCA-AA-3566*-01A-01R-0125-07';.................}
Hints: i tried strncmpi and length, but because of size issue i get confused about which Command statement is better in my case.

Respuesta aceptada

Stephen23
Stephen23 el 9 de Mzo. de 2017
Editada: Stephen23 el 9 de Mzo. de 2017
After removing the asterisks, space characters, and fixing the first element of C1, this seems to do the job:
>> C1 = {'tcca-a6-2677';'tcca-a6-2681';'tcca-aa-3566'};
>> C2 = {'TCCA-A6-2671-11A-01R-1758-07';'TCCA-A6-2677-11A-01R-0826-07';'TCCA-AA-3520-11A-01R-0721-07';'TCCA-AA-3528-11A-01R-1758-07';'TCCA-AA-3566-01A-01R-0125-07'};
>> fun = @(s)any(strncmpi(s,C2,numel(s)));
>> out = C1(cellfun(fun,C1))
out =
'tcca-a6-2677'
'tcca-aa-3566'
  8 comentarios
JR
JR el 8 de Oct. de 2018
Editada: JR el 8 de Oct. de 2018
Awesome. Thanks Stephen, I had no idea about function handles using @ command.
Bharath Sagar
Bharath Sagar el 11 de Feb. de 2020
Hello,
I have a similar need. I have 2 cells(cell1 and cell2) of size 72*1 and 110*1 respectively, and i want to compare the elements of cell 1 with the elements of cell 2 and return only the matched ones from cell1 and delete the rest.
The above mentioned solution is not working for me.
Can you please help me out with this ?

Iniciar sesión para comentar.

Más respuestas (1)

KSSV
KSSV el 9 de Mzo. de 2017
Editada: KSSV el 9 de Mzo. de 2017
cell1 = {'apple' 'boy' 'cat' 'dog' 'elephant'} ;
cell2 = {'apple' 'ball' 'cut' 'dog' 'egg' 'frog' 'gun'} ;
iwant = intersect(cell1,cell2) ;
  9 comentarios
chocho
chocho el 9 de Mzo. de 2017
i think you match element by element but i want to check every element in cell1 with all the elements in cell 2.
chocho
chocho el 9 de Mzo. de 2017
Editada: per isakson el 10 de Mzo. de 2017
cell1{k,1}={' *tcaa-a6-2677*';'tcca-a6-2681';' *tcca-aa-3566*';............};
%
cell2{k,1}={'TCCA-A6-2671-11A-01R-1758-07';' *TCCA-A6-2677*-11A-01R-0826-07';'TCCA-AA-3520-11A-01R-0721-07'; 'TCCA-AA-3528-11A-01R-1758-07'; *TCCA-AA-3566*-01A-01R-0125-07';.................}
in this example elements 1 & 3 of cell 1 are match with the elements 2 & 5 of cell2

Iniciar sesión para comentar.

Categorías

Más información sobre Characters and Strings en Help Center y File Exchange.

Etiquetas

Community Treasure Hunt

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

Start Hunting!

Translated by