How to get the opposite elements of a vector specified by an index?

19 visualizaciones (últimos 30 días)
Stef
Stef el 27 de Abr. de 2018
Comentada: Rik el 27 de Abr. de 2018
I have a variable s picking 70 random numbers from 0 to 100. Now I want to have all 30 elements of the vector a, which are not in s.
s = randsample(100,70)
I have already tried
z = a(~s)
but that does not work.

Respuesta aceptada

Rik
Rik el 27 de Abr. de 2018
randsample picks values from 1 to N, not 0 to N. The first block is for 1:N, the second for 0:N
maxval=100;
s = randsample(maxval,70);
not_s=1:maxval;not_s(s)=[];
maxval=100;
s = randsample(maxval+1,70);
not_s=1:maxval;not_s(s)=[];
not_s=not_s-1;s=s-1;
  2 comentarios
Stef
Stef el 27 de Abr. de 2018
Thanks! I needed it for the 1:N. Could you please explain the intuition? I do not understand why it picks exactly the opposite ones now
Rik
Rik el 27 de Abr. de 2018
What this code does is generating the vector 1:N and then removing all positions described by s. This makes use of the fact that position and value is the same in the vector that results from 1:N.

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Más información sobre Matrix Indexing en Help Center y File Exchange.

Community Treasure Hunt

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

Start Hunting!

Translated by