I am acquiring vibration data from an accelerometer using a DAQ. Due to some reason I am seeing spurious peaks/impacts in the FFT spectra at specific frequency and its harmonics all the way till the Nyquist frequency. This frequency changes with the sampling rate as follows:

  1. Sampling rate = 48 KHz, peaks at 100 Hz and its harmonics
  2. Sampling rate = 8 KHz, peaks at 83.33 Hz and its harmonics
  3. Sampling rate = 24 KHz, peaks at 93.75 Hz and its harmonics

These peaks don't seem to correspond to any real mechanical/vibration source. Initially I suspected aliasing, but it seems the DAQ has anti-aliasing built-in. I also tried doing anti-aliasing in software using python/scipy.signal.decimate(), but it didn't help.

I am attaching below couple of FFT spectra plots for the 24 KHz case.

Can you please advise what could be possible reason for such spurious FFT peaks?

FFT spectra - sampling at 24 KHz

FFT spectra - sampling at 24 KHz

  • $\begingroup$ Anti-aliasing needs to be done before the sampling. Some ADCs have an anti-aliasing built in as part of the sampling. Once it is sampled, it is too late for anti-aliasing. If you want to downsample in software, then you will need to apply anti-aliasing in software. A software filter won't get rid of aliasing artifacts from an inadequately filtered analog signal, though. $\endgroup$
    – JRE
    Mar 15, 2021 at 13:33
  • $\begingroup$ What are the frequencies you expect to see and what are the FFT lengths you use to compute the spectra at each of those 3 sampling rates? $\endgroup$
    – Rahul
    Mar 15, 2021 at 14:31

1 Answer 1


Can you please advise what could be possible reason for such spurious FFT peaks?

Most likely it's your measurement setup. Good measurements are hard to make and require careful setup, characterization, and execution.

  1. Determine the noise floor (spectral shape and level) of your data acquisition system, just short the input and grab few spectra. If that looks good
  2. Determine the noise floor (spectral shape and level) of you sensor: attach the sensor to something heavy that's not moving and grab few spectra. If that looks good
  3. Build a "calibration" setup. Attach your sensor to a well characterized, calibrated or programmable vibration source (a shaker, or maybe a electro mechanical driver) and measure different frequencies at different levels and compare extend the expected results. Determine the frequency and dynamic limits of your setup.

In each of the steps above set targets, requirements, and expectations BEFORE you make the measurement. These should come from the data sheets, general physical considerations and the specifics of your application.

Don't even look at any real measurement data until you have proven that your setup does indeed measure vibration with sufficient accuracy and signal to noise ratio over the required frequency range and dynamic range. If that all checks out and you still see unexpected data you can ask again.

  • $\begingroup$ Thanks for your inputs. It turned out that there was a bug in the code that was interfacing with the MCC uldaq library for acquiring new data from DAQ. With that fixed, now the data looks reasonable. Thanks all for your comments/guidance. $\endgroup$
    – numis
    Mar 16, 2021 at 7:08

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.