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

5 Ansichten (letzte 30 Tage)
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.

Akzeptierte Antwort

the cyclist
the cyclist am 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 Kommentar
Victor Lejona
Victor Lejona am 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.

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (0)

Community Treasure Hunt

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

Start Hunting!

Translated by