MATLAB Answers

how to check the direction of a plot (monotonicity)

24 ビュー (過去 30 日間)
Sharah 2016 年 3 月 30 日
コメント済み: John D'Errico 2016 年 3 月 30 日
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

回答 (1 件)

John D'Errico
John D'Errico 2016 年 3 月 30 日
編集済み: John D'Errico 2016 年 3 月 30 日
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.
  2 件のコメント
John D'Errico
John D'Errico 2016 年 3 月 30 日
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


Community Treasure Hunt

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

Start Hunting!

Translated by