I have
a = [2 2];
b = [2 3];
How to find that 'b' contains all the elements of 'a' i.e. here two 2's. Here 'b' contains only one '2'.

1 commentaire

Bruno Luong
Bruno Luong le 15 Déc 2018
so in the above example the result should be FALSE right?

Connectez-vous pour commenter.

 Réponse acceptée

Bruno Luong
Bruno Luong le 15 Déc 2018
[u,~,j] = unique(a(:));
[tf,loc] = ismember(b(:),u);
s = [length(u),1];
result = all(accumarray(j(:),1,s) <= accumarray(loc(tf),1,s))

3 commentaires

Thanks! But still one more query. Suppose,
a = [2 3 2 5 2];
b = [2 7 2];
I need to find the missing elements of 'a' in 'b'. Here the elements are one '2', one '3' and one '5'.
Bruno Luong
Bruno Luong le 16 Déc 2018
Modifié(e) : Bruno Luong le 16 Déc 2018
a = [2 3 2 5 2 7];
b = [2 7 2 6];
% Same as above, juste decomposing for re-user later
[u,~,j] = unique(a(:));
[tf,loc] = ismember(b(:),u);
s = [length(u),1];
n = accumarray(j(:),1,s)-accumarray(loc(tf),1,s);
anotin = n>0;
bcontaina = all(~anotin)
n = n(anotin);
anotin = u(anotin);
anotin = table(anotin, n)
Returns
bcontaina =
logical
0
anotin =
3×2 table
anotin n
______ _
2 1
3 1
5 1
Prasanna Venkatesh
Prasanna Venkatesh le 16 Déc 2018
Thanks Bruno Luong !

Connectez-vous pour commenter.

Plus de réponses (1)

madhan ravi
madhan ravi le 15 Déc 2018
Modifié(e) : madhan ravi le 15 Déc 2018
a = [2 2];
b = [2 3];
idx=ismember(b,a);
all(idx) % if zero then b doesn't contain all the elements of a else vice versa

1 commentaire

Thanks! But still one more query. Suppose,
a = [2 3 2 5 2];
b = [2 7 2];
I need to find the missing elements of 'a' in 'b'. Here the elements are one '2', one '3' and one '5'.

Connectez-vous pour commenter.

Catégories

Community Treasure Hunt

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

Start Hunting!

Translated by