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 件のコメント

Bruno Luong
Bruno Luong 2018 年 12 月 15 日
so in the above example the result should be FALSE right?

サインインしてコメントする。

 採用された回答

Bruno Luong
Bruno Luong 2018 年 12 月 15 日

0 投票

[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 件のコメント

Prasanna Venkatesh
Prasanna Venkatesh 2018 年 12 月 16 日
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 2018 年 12 月 16 日
編集済み: Bruno Luong 2018 年 12 月 16 日
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 2018 年 12 月 16 日
Thanks Bruno Luong !

サインインしてコメントする。

その他の回答 (1 件)

madhan ravi
madhan ravi 2018 年 12 月 15 日
編集済み: madhan ravi 2018 年 12 月 15 日

0 投票

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 件のコメント

Prasanna Venkatesh
Prasanna Venkatesh 2018 年 12 月 16 日
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'.

サインインしてコメントする。

カテゴリ

ヘルプ センター および File ExchangeCreating and Concatenating Matrices についてさらに検索

タグ

Community Treasure Hunt

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

Start Hunting!

Translated by