How can do intersection and union of two vectors?
11 ビュー (過去 30 日間)
古いコメントを表示
Hello everyone, I have two vector A and B :
A=[256 1 6 8 4 5 78 25];
B=[85 22 1 25 2 589 6 3];
I want to have other vector result that consist of the union or the intersection of the elements in A and B like this:
result_union=[256,85,1,22,6,8,25,4,2,5,589,78,25,3];
result_intersect=[1,6,25];
Please, help me how can can I do it?
0 件のコメント
採用された回答
Stephen23
2015 年 6 月 8 日
編集済み: Stephen23
2015 年 6 月 8 日
>> A = [256,1,6,8,4,5,78,25];
>> B = [85,22,1,25,2,589,6,3];
>> intersect(A,B,'stable')
ans =
1 6 25
Union: to keep the order of the two vectors (like they were zipped or interleaved together), then you could concatenate the vectors and then use unique like this:
>> unique(reshape([A;B],1,[]),'stable')
ans =
256 85 1 22 6 8 25 4 2 5 589 78 3
If the vectors have different lengths then you could use this FEX submission to zip them together (instead of the concatenation and rehsape in my example):
その他の回答 (1 件)
Titus Edelhofer
2015 年 6 月 8 日
Hi,
did you try to enter union or intersect in the documentation search? It should give you at least for the intersection a good result ;-).
Regarding the union it depends on if you require exact the ordering that you gave ...
Titus
2 件のコメント
Titus Edelhofer
2015 年 6 月 8 日
There is an ordering parameter for intersect and union:
intersect(A,B, 'stable')
although for union is does not help (directly), since it's using the values from A first and then from B. I guess you need to work it up "by hand".
Titus
参考
カテゴリ
Help Center および File Exchange で Matrices and Arrays についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!