First lets find the strings that are common to all cell arrays:
listA={'India','Iran','Ireland','Israel','Jordan','Kuwait','Lebanon','Lesotho','Libya','Luxembourg','Malawi','Maldives','Morocco','Nepal','Netherlands','Norway','Oman','Paraguay','Peru','Philippines',};
listB={'Denmark','El Salvador','Gabon','Gambia','Lebanon','Lesotho','Libya','Luxembourg','Malawi','Maldives','Morocco','Nepal','Netherlands','Norway','Oman','Paraguay','Peru','Philippines','Qatar','Rwanda','Saudi Arabia','Senegal','Singapore','Sudan'};
listC={'Kuwait','Lebanon','Lesotho','Nepal','Netherlands','Oman','Sweden','Syria','Tanzania','Turkey','Uruguay'};
lists = {listA,listB,listC};
exc = lists{1};
for k = 2:numel(lists)
exc = intersect(exc,lists{k});
end
giving the strings found in all cell arrays as:
exc =
'Lebanon'
'Lesotho'
'Nepal'
'Netherlands'
'Oman'
Now we can easily get the input cell arrays with the strings from exc removed:
out = cell(size(lists));
for k = 1:numel(lists)
out{k} = setdiff(lists{k},exc);
end
giving:
>> out{:}
ans =
'India' 'Iran' 'Ireland' 'Israel' 'Jordan' 'Kuwait' 'Libya' 'Luxembourg' 'Malawi' 'Maldives' 'Morocco' 'Norway' 'Paraguay' 'Peru' 'Philippines'
ans =
'Denmark' 'El Salvador' 'Gabon' 'Gambia' 'Libya' 'Luxembourg' 'Malawi' 'Maldives' 'Morocco' 'Norway' 'Paraguay' 'Peru' 'Philippines' 'Qatar' 'Rwanda' 'Saudi Arabia' 'Senegal' 'Singapore' 'Sudan'
ans =
'Kuwait' 'Sweden' 'Syria' 'Tanzania' 'Turkey' 'Uruguay'
And if you want a list of all strings together, excluding those in exc:
uni = {};
for k = 1:numel(lists)
uni = union(uni,lists{k});
end
uni = setdiff(uni,exc)
gives:
uni =
'Denmark' 'El Salvador' 'Gabon' 'Gambia' 'India' 'Iran' 'Ireland' 'Israel' 'Jordan' 'Kuwait' 'Libya' 'Luxembourg' 'Malawi' 'Maldives' 'Morocco' 'Norway' 'Paraguay' 'Peru' 'Philippines' 'Qatar' 'Rwanda' 'Saudi Arabia' 'Senegal' 'Singapore' 'Sudan' 'Sweden' 'Syria' 'Tanzania' 'Turkey' 'Uruguay'
Best Answer