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

5 visualizzazioni (ultimi 30 giorni)
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
  10 Commenti
huda nawaf
huda nawaf il 15 Ago 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
Bruno Luong il 15 Ago 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

Accedi per commentare.

Risposta accettata

Ishan Ghosekar
Ishan Ghosekar il 26 Ago 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 following functions can help you achieve this:
  • 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
For more information regarding the intersect function, refer to the following documentation link:
  • 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
For more information regarding the ismember function, refer to the following documentation link:

Più risposte (0)

Categorie

Scopri di più su Matrices and Arrays in Help Center e File Exchange

Tag

Prodotti


Release

R2022a

Community Treasure Hunt

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

Start Hunting!

Translated by