Finding multiple x-intercepts for a dataset

I have a 2-D dataset that crosses the x-axis multiple times.
I would like help making a function that will return all the x values at which y = 0.
Any help for a day 1 newbie would be much appreciated!
Possibly helpful background: I'm analyzing sound spectra. I would like to find the peaks of the signal by finding where the 1st derivative crosses the x-axis.

 Akzeptierte Antwort

William Rose
William Rose am 28 Jun. 2021

1 Stimme

Matlab has a very nice peak finding function, findpeaks(), help here: It has nice options, including threshold, minimum peak prominence, minimum horizontal (i.e. time or frequency, in your case) separation, etc.

3 Kommentare

William Rose
William Rose am 28 Jun. 2021
findpeaks() returns the peak amplitudes and the peak locations (i.e. frequencies, if analyzing a spectrum).
I think this is what I need. Thank you!
William Rose
William Rose am 28 Jun. 2021
@Jacob Hohsfield, you;re welcome, and good luck on your work.

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (1)

William Rose
William Rose am 28 Jun. 2021

1 Stimme

You said you have a 2D dataset. If you mean the spectrogram, the time dependent Fourier transform, then findpeaks() is not the right answer since it is for 1D signals.

Produkte

Version

R2021a

Community Treasure Hunt

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

Start Hunting!

Translated by