# 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 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 件のコメント表示非表示 1 件の古いコメント
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!