MATLAB: Frequency index to hertz

analysisbpmfftfourierfourier seriesfrequencyhertzhzindexpeaksamplingspectra

I think I'm just finally starting to get the hang of the frequency spectra.. say I have a signal that has undergone a Fourier transform so it is now plotted as the frequency vs its index. I want to find the beats per minute of this signal. If the signal had a sampling frequency of 50 Hz and 100 data points, and the first peak of the signal was located at the 20th index, would that equate to 10 Hz? As I would have index*sampling_frequency/total_points? And since Hz is measured as beats per second, I would multiply that by 60 to have a total of 600 beats per second?

Best Answer

If the time-domain signal has a sampling frequency of 50 Hz and 100 data points, the one-sided frequency_domain plot will have a frequency vector going from 0 to 25 Hz with 51 points.
So in the frequency-domain plot, a peak at the 20th index would correspond to 25*20/51=9.8 Hz.
So 10 Hz is essentially correct. It is not exact because of the way the discrete Fourier transform is calculated and plotted. This is the sort of compromise that is inherent in all discrete signal processing.
Related Question