MATLAB Answers

# Numerical error using the "diff" function

10 views (last 30 days)
Michael Loibl on 22 Feb 2021
Answered: Stephen Cobeldick on 22 Feb 2021
I want to determine the max difference between adjacent entries of a vector.
vector = [0 0 0 0.2 0.4 0.6 0.7 0.85 1 1 1];
difference = diff(vector);
i=find(diff(vector) == max(diff(vector)))
For the exemplary vector I would expect the following output:
i =
3 4 5
However, I get:
i =
3 4
The third one is missing. Checking this value, indeed I see some numerical error which should not be there.
Do I really have to use an almost equal function in order to solve this issue?
##### 0 CommentsShowHide -1 older comments

Sign in to comment.

### Accepted Answer

Stephen Cobeldick on 22 Feb 2021
V = [0,0,0,0.2,0.4,0.6,0.7,0.85,1,1,1];
D = diff(V);
X = find(ismembertol(D,max(D)))
X = 1×3
3 4 5
##### 0 CommentsShowHide -1 older comments

Sign in to comment.

R2019b

### Community Treasure Hunt

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

Start Hunting!