How can I delete elements in a vector depending on the difference between them?

5 visualizaciones (últimos 30 días)
Hi
I would like to delete certain elements in a vector so that I end up with a vector in which the difference between one element and the consecutive one is bigger than a given treshold?
Example:
a = [1 2 3 4 5 6 7 8 9];
treshold = 2;
And I want to end up with b = [1 4 7];
Many thanks in advance.

Respuesta aceptada

the cyclist
the cyclist el 12 de Nov. de 2015
Here is a very straightforward method:
a = [1 2 3 4 5 6 7 8 9];
b = a;
threshold = 2;
idx = 1;
while idx < numel(b-1)
if b(idx+1) <= b(idx) + threshold
b(idx+1) = [];
else
idx = idx + 1;
end
end
  1 comentario
Victor Lejona
Victor Lejona el 12 de Nov. de 2015
That works fine, many thanks! I found quite useful how you change the size of the array within the while loop, what you couldn't do in a for loop.

Iniciar sesión para comentar.

Más respuestas (0)

Etiquetas

Community Treasure Hunt

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

Start Hunting!

Translated by