# Are there methods for automatically detecting features of a curve?

I have a raw discrete data(curves). I need to find methods for detecting features of each curve. Some example features:

1) Stable growing
2) Fast growing
3) Stable falling
4) Fast falling
5) And so on

Here is good example of such curves type(russian):

How can i do it?

• @Macro Nope. I am asking about how to found a part of chart where data growing fast. Or how can i detect that given chart stable fall down and vise versa. – Neir0 Jun 3 '12 at 6:52
• @Macro Find maximum is pretty simple task it's just a maximum value of data sets or extremum of given function right? On my plots you can see different types of curves. Somewhere it looks like: 1,1,1,1,1,4,5,6,5,4,1,1,1,1 and here i want to detect that part "4,5,6,5,4". Somewhere it slowly decreases 10,9,9,7,6,7,5,4... I want to understand what is it type of the plot and found features parts. – Neir0 Jun 3 '12 at 7:01
• @Macro yes, something like that. – Neir0 Jun 3 '12 at 7:05
• @Macro Or detect trends in another words – Neir0 Jun 3 '12 at 7:07
• @Macro yeah, thanks. I think i found right word for that "Trend estimation" – Neir0 Jun 3 '12 at 7:13

The features that you are describing are mostly "edges" or discontinuities in the curves. I would suggest that you find local maxima of the first derivative and zero-crossings of the second derivative of each curve (after smoothing the signal to make sure noise doesn't affect your derivatives greatly).

Most of this can be seen by initially plotting the data. As the curves show different types of features no one method will detect everything. If you expect periodicity look at the periodogram or a smoothed version the spectral density. Fisher's test will detect a significant period. For linear time trends fit a linear function of time and test for a nonzero slope.

Perhaps use correlation analysis to be able to detect a feature in the curve? Compute a target signal similar to the feature that you are searching for, and then use correlation analysis to find the location of the feature. This is a well-known procedure in Digital Signal Processing (DSP). I would highly recommend reading the DSP guide by Steven W. Smith at the first link below. You appear to be interested in a matched filtering problem.

If the time series that you are working with is very long, you can split the signal up and run correlation analysis on each segment (see my comp.dsp post here).

DSP guide

Wikipedia

JOS

Matlab implementation

Secondary reference