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

1 view (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
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 Numeric Types 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!