Finding several local maximum values in a given range and corresponding indices
Show older comments
If we have a dataset "y" which consists of a sum of 5 gaussian peaks as function of time t, there will be 5 local maximum values in the whole y values. Basically, I would like to obtain the y axis maximum values and their corresponding t axis values. For example peak 1, has a maximum value 5 and it corresponds to t value of 19.

One can individually find the maximum values by giving a range say
[a ,i]=max(y(1:20));% locating maxima in a given range of the first peak
value_1= t(i); % Corresponding value of time for index i1.
One can repeat this 5 times by specifying the ranges for all peaks. Is there a better way to achieve the same result as an output in a single vector, and the corresponding time for those maxima in another vector . Thanks.
2 Comments
madhan ravi
on 27 Sep 2019
If you mean all the indices of the max value:
Indices = find(y==max(y(:))
FW
on 27 Sep 2019
Accepted Answer
More Answers (1)
Image Analyst
on 28 Sep 2019
0 votes
It looks like you already have an acceptable answer, but if you want code to fit some specified number of Gaussians to a signal, let me know - I have that, though not in a general purpose demo right now (I'd have to create that). Attach your signal if you need this.
Categories
Find more on Descriptive Statistics in Help Center and File Exchange
Products
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!