# how to get common elements within a cell array?

10 views (last 30 days)
Tha saliem on 5 Mar 2018
Commented: Tha saliem on 6 Mar 2018
hey all
If i have following array:
{[1,7];[2,6,1];[7,1,3];[3,5]}
how can I compare each cell in this array with all other cells'values. for example for first cell [1,7] i have to compare it with all other cells and find common values. to compare with [2,6,1] we will get 1, to compare with [7,1,3] we will get [1,7] and with [3,5] we will get an empty cell. Similarly after this we will compare 2nd cell [2,6,1] with all cells in array.
Jan on 5 Mar 2018
Edited: Jan on 5 Mar 2018
Do the single vectors have unique elements? In other words: Is this possible as input or not:
{[1,7]; [2,6,1,1,6]}
Tha saliem on 6 Mar 2018
Yes they have unique elements.. [2,6,1,1,6] is not possible

the cyclist on 6 Mar 2018
Do you need the comparison result? If not, I think this skips right to the final result
aL = 1:length(a);
for na = aL
finalResult{na} = intersect([a{na}],[a{setdiff(aL,na)}]);
end
This code is a bit obfuscated. But if it gives the result you expect, I can try to help you understand it if you need me to.
##### 3 CommentsShow 1 older commentHide 1 older comment
the cyclist on 6 Mar 2018
Here is the de-obfuscated version of my code, commenting on what each piece does.
% The data
a = {[1,7];[2,6,1];[7,1,3];[3,5]};
% Vector from 1 to the length of a
aL = 1:length(a);
% Loop through the vector
for na = aL
% Get the elements from the current cell
elementsFromCurrentCell = [a{na}];
% Create index to all *other* cells, except for the current cell
indexToOtherCells = setdiff(aL,na);
% Concatenate all the elements from those other cells
elementsFromAllOtherCells = [a{indexToOtherCells}];
% Find the intersection between the current cell and all the other cells
finalResult{na} = intersect(elementsFromCurrentCell,elementsFromAllOtherCells);
end
In order to get the "comparison" results, you just need to loop over each other cell in turn, rather than concatenating them all together the way I did to get the final result.
Tha saliem on 6 Mar 2018
Well Thank you so much for this detailed explanation. I have completely understood it. Thanks alot