MATLAB Answers

how to check the direction of a plot (monotonicity)

22 views (last 30 days)
Sharah on 30 Mar 2016
Commented: John D'Errico on 30 Mar 2016
I would like to check the percentage of data going forward instead of going backward in a data. For example in the following images:
the data should go from left to right, but for the second image, we can see that few data goes backward before it goes forward again.
1) I would like to check the percentage of the data forward in the overall data to check the monotonicity of the plot.
2) i would like to set a reference line, at different angle. for example, the below image can be seen at 0 degree from x axis. i would like to be able to set the reference line to perhaps 45 degree and see if teh monotinicity value of the plot would change if i change the angle. (because by rotating the axis, the monotonicity behaviour will change, where the data will look like it goes in forward direction instead of backward again


Sign in to comment.

Answers (1)

John D'Errico
John D'Errico on 30 Mar 2016
Edited: John D'Errico on 30 Mar 2016
Assuming that x is in increasing order, then something like this:
sum(diff(y) >= 0)/(numel(y) - 1)
will suffice to yield the relative fraction of points on the curve that lie in increasing order. Easily fixed if the points are not sorted for increasing x.


Sharah on 30 Mar 2016
x and y is not in increasing order. it will be either decreasing or increasing depending on the performance. so here basically what need to be checked of the relationship between y-x is always in increasing order or not
John D'Errico
John D'Errico on 30 Mar 2016
So whats the problem?
Just compute
d = diff(y)./diff(x);
If ANY of diff(x) == 0, then the curve is never monotone anyway. So you need for all of the elements of d to have the same sign and to be finite.
Test that all the elements of d are positive, OR they are all negative, AND they are all finite (not either inf or nan).
help all
help isfinite

Sign in to comment.

Translated by