I’m reading a book on Motorcycle dynamics and want to compare the vibration profile of my motorbike against this chart: enter image description here

I am not sure how to get the RMS of acceleration at different frequencies.

I have a mobile phone with an accelerometer that samples acceleration at 100 Hz. I get filtered values of vertical acceleration from external sources (no gravity component).

I can do a Fast Fourier Transform (FFT) of 512 samples of data to get 256 amplitudes of waveforms for a short window of collected data. FFT contains frequencies 1-50Hz

Or I can square each accelerometer output, making them all positive, add them together and take a square root to get a single RMS value. In this case I’m not sure how to get the frequency component of these values.

Can someone help me understand how I get the chart like above from a continuous set of accelerometer output?

Here’s my attempt at plotting the log of amplitude of the FFT (in blue 0-50Hz). I don’t see any dominant component within the FFT output: at the same time the yellow chart above registers acceleration spikes over 0.155(g) threshold. I can see individual impacts on the suspension within the yellow chart, but am not sure how to get their frequency (impacts per second) enter image description here

I also see this suggestion, but the octave example is not very clear. Is this relevant to my question? enter image description here


1 Answer 1


If your time domain data is in units of vertical acceleration, then you can simply multiply the normalized (divide by N) raw fft values times the complex conjugate of itself and then take the square root. Each result will be the rms acceleration at that frequency.

Note, if your data is sampled at 100 Hz, you are going to see the content from 0 to 50 Hz of all frequencies that are within the analog bandwidth of your sampler. Any higher analog frequencies will "alias" into the 0 to 50 Hz band. I am not sure what you have for an anti-alias filter, but it certainly can't be a "brick-wall" filter right at 50 Hz. A properly designed filter may have hope of sufficiently rejecting signals above 60 Hz, in which case you can trust your data from 0 to 40 Hz (for example; I am more illustrating the need to understand this before interpreting your data).

Regarding "Normalized FFT"; some FFT implementations will have this built in while others you will need to normalize. You can test this by taking an FFT of 512 ones [1 1 1 1 ...1] and see if the first sample of the FFT is 512 or 1. If 512 then you need to divide the FFT result by the number of samples (512) to normalize the result. And by "raw FFT" data I am referring to the 512 complex FFT samples, not the FFT frequency spectrum you plotted above which I assume is the power spectrum which already performed the complex conjugate multiplication and is only showing the positive frequency axis, likely with a dB vertical scale.

Usually these limits versus frequency are also normalized to be per Hz bandwidth. The FFT noise bandwidth is 1 bin (without further windowing which is another topic of importance if you start seeing dominant tones). So if you sample at 100 Hz with 512 bins, then each FFT bin has a noise bandwidth of $100/512= 0.1953$ Hz. A more accurate measurement would average the power (the complex conjugate multiplication of the normalized FFT) over 5.12 bins before taking the square-root to get the average rms value per Hz bandwidth. A simpler and more conservative approach (will bound the actual max limit) would be to multiply the power in each bin by 5.12 before taking the square-root.

You may see spikes above the threshold in the time domain, but the limit is rms and over frequency, so those results will expect to be less.

  • $\begingroup$ Fantastic answer! I’m also looking at using this info to calculate VDV - vibration dose value, and see a suggestion to “calculate weighted vibrations in the 1/3rd octave bands” around key low frequencies (under 25 Hz). Is this related to how you suggest using bins with FFT data? $\endgroup$
    – Alex Stone
    Dec 1, 2019 at 14:21
  • $\begingroup$ Yes, basically you are working with a power spectral density, in that the noise power is distributed over frequency, and the total power is the sum of the power in each bin. This is all very straight-forward when you don't have significant dominant tones--- in this latter case you will want to deal with windowing the data before taking the FFT to minimize spectral leakage, but then doing this modifies both your resolution bandwidth per bin (resulting in "double counting" since each bin will no longer be independent) and total power (since the window is removing portions of your signal). $\endgroup$ Dec 1, 2019 at 14:31

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.