# How to find increasing data points in an array?

3 views (last 30 days)
Sujay on 7 Dec 2022
Edited: Jiri Hajek on 7 Dec 2022
There's an array of random elements A=[2 1 4 2 6 7 8 10 12 14 16 18 20 22 24 12 10 9 11 8 ] now here from n=5 the value sarts increasing till n=15 position. My target is to find this increasing data points in the array and determine their position and remove those data points as well. I have already tried with diff function but I am not getting the results which I want. How can I do it? if someone say it would be of really great help.
Jiri Hajek on 7 Dec 2022
Edited: Jiri Hajek on 7 Dec 2022
Hi, I believe the diff function is a good starting point. The method you need requires to identify clusters of array elements, which you can do using the result of diff. It's not too difficult, but as often, devil is in the detail. If you need to make the method robust and applicable to any vector size, you must start by a precise definition of all possibile scenarios (single largest cluster, several same-size clusters, strictly increasing clusters or non-decreasing clusters etc.).

Walter Roberson on 7 Dec 2022
A=[2 1 4 2 6 7 8 10 12 14 16 18 20 22 24 12 10 9 11 8 ]
diffA = diff(A)
start = find(diffA > 0,1);
Now start might be empty (if no elements are increasing anywhere). If it is not empty then it is the first place in the array where you have increasing elements. You can then search diffA starting from start+1 looking for the first place that the difference is <= 0. That first location is where the run of increasing values ends.
Hint: if you find(subset_of_diffA <= 0, 1) where subset_of_diffA is extracted from diffA... and you adjust the output result to take into account that the subset does not start until after start -- and you take into account that the result of that second find() might be empty because there might turn out not to be any places where the results stop increasing...