c++ - Predict smearing of FFT -
c++ - Predict smearing of FFT -
after applying fourier transform signal, energy of single sine wave spread out across multiple bins (aka smearing). have @ right side of image below illustration:
i want extract list of peak frequencies. finding highest bin easy. after smearing becomes problem.
i have heuristic tells me if magnitude of specific bin perchance result of smearing or if there has peak frequency in order explain signal. (it improve if miss have false positives)
my naive approach calculate few one thousand examples , take maximum of these envelope curve smearing below envelope.
but there improve way this?
the fft result of rectangularly windowed pure unmodulated sinusoid sinc function. sinc (sin(pix)/(pix)) function 0 bins except 1 (at peak magnitude) when frequency of input sinusoid has integer number of periods in fft width.
for other frequencies not @ exact center of fft result bin, if know exact frequency , magnitude (which won't in single fft bin), can calculate other bins sampling sinc function.
and, of course, if input sinusoid isn't pure, modulated in way (amplitude, frequency or phase), modulation produce various sidebands in fft result well.
c++ signal-processing fft
Comments
Post a Comment