MATLAB: How to store three peaks on different frequencies

fftfilter

Hello, I have a Matlab script which takes a signal, computes FFT, then applies band-pass filter (band boundaries are computed using data from the FFT), then computes FFT of filtered data again, but the problem is, that within the passed band could be peaks on similar frequencies (for example 438,2 and 437,6 Hz). I need rounded values, so both of these frequencies are 438 Hz which is good.
But when I tried to skip those very similar peaks I realized another problem, sometimes the frequencies are similar, but they are rounded to close number (the output is for example 429 and 431) I need three peaks on three frequencies which differ never less than lets say 15 Hz.
I cannot filter the data based on peak height because I would have lost those frequencies which I need, but their amplitude is lower than those of peaks near the other frequencies I need (for example in this picture, if I filtered data based on the second highest peak I would have lost the peak in the middle)
In other words how could I get a 1×3 vector wchich contains the three peak frequencies in this case the output would be
Final_Triplet = [130, 162, 195] % Hz
Unfortunately I cannot use 'MinPeakHeight' because
1) I would have to know the height of the peak in the middle (which I generally do not know)
2) I would still have got the other peak located around 130 Hz.
Any help appreciated
Thank you very much

Best Answer

One option would be instead to use 'MinPeakProminence' (link). See the discussion on Prominence (link) for a description of it.
If you want to increase the frequency resolution of your fft, specify a significantly longer Transform length (link).