extract elements and build the remain vector

Hello Community,
i need your help.
A vector v has 128 elements with random numbers.
The elements of index 1 21 31 41 should be etracted, and saved as vector a.
the remain elements of vector v should be saved as vector b.
my version consist two for loops which is in deed a bad solution for large vectors.
PS: the vectors are not constant.
maybe someone could finish the algorithm:
v = 1:128;
a = v([1 21 31 41]);

 Risposta accettata

Use setdiff():
N = 1600;
v = 1:N;
a = [2 59 87 113]
extracted = v(a)
otherIndexes = setdiff(1:length(v), a);
b = v(otherIndexes)

Più risposte (1)

a=v([1 21 31 41]);
b=v([2:20,22:30,32:40,42:end]);

5 Commenti

Marko
Marko il 21 Dic 2020
Modificato: Marko il 21 Dic 2020
Hello David,
thank you for your fast response. I'm sorry for beeing not specfic enough.
Could you develop a code snippet also for non-constant vectors v,a ?
Best,
MJ
Depending on what random numbers you want, use rand() or randi() functions (assuming uniform distribution)
v=A*rand(1,128)-B;%generates random numbers between -B:A-B
ok, i see i was not clear enough.
i try beeing a precicsly as possible:
Vector v has N elements:
N = 1600;
v = 1:N;
Vector a is given and contains integer number: e.g.
a = [2 59 87 113]
How could an algorithm extract a from v and save the remaining elements in vector b.
Important: the vectors v and a have not a constant number of elments, they can change.
The solution should be for this example:
b=[1 3 ... 58 60 ... 86 88 ... 112 114 ... 1600]
Perfect!
You are a genius!

Accedi per commentare.

Categorie

Scopri di più su Get Started with MATLAB in Centro assistenza e File Exchange

Tag

Richiesto:

il 21 Dic 2020

Commentato:

il 21 Dic 2020

Community Treasure Hunt

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

Start Hunting!

Translated by