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

5 vues (au cours des 30 derniers jours)
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.

Réponse acceptée

the cyclist
the cyclist le 12 Nov 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 commentaire
Victor Lejona
Victor Lejona le 12 Nov 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.

Connectez-vous pour commenter.

Plus de réponses (0)

Community Treasure Hunt

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

Start Hunting!

Translated by