# Can I find set of values in larger set in one step?

4 views (last 30 days)
huda nawaf on 14 Aug 2022
Answered: Ishan Ghosekar on 26 Aug 2022
Hi,
I am working on a code that takes a very long time to implement, so I try to optimize it
If I look for a set of values (x) in a larger set (z), can I do that in a way faster than using for and find?
x=[1 2 3];
z=[10 2 1 5 7 .....];
thanks
huda nawaf on 15 Aug 2022
what if I have c ,when I find 1 and 2 in z , I want to remove it from c
x=[1 2 3];
>> z=[10 2 1 5 7];
>> c=[9 4 2 1];
I need the output is
c=[9 4]
Bruno Luong on 15 Aug 2022
x=[1 2 3];
z=[10 2 1 5 7];
c=[9 4 2 1];
c(ismember(c,intersect(z,x)))=[]
c = 1×2
9 4

Ishan Ghosekar on 26 Aug 2022
As per my understanding, you want to look for the set of values in x in another larger set, z in an optimized way.
• The intersect function returns common values between x and z in sorted order:
>> x=[1 2 3];
>> z=[10 2 1 5 7 4 6 9];
>> intersect(x,z)
ans =
1 2
• The ismember function returns an array containing logical 1 (true) where the data in A is found in B.
>> ismember(x,z)
ans =
1×3 logical array
1 1 0

### Categories

Find more on Logical in Help Center and File Exchange

R2022a

### Community Treasure Hunt

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

Start Hunting!