I'm a stack exchange user for some time and now I'm registering to ask a simple question (I think!).

I have a vibration signal with an amplitude and time (sampling frequency not constant) in a $10000\times 2$ double variable.

The data is available at: https://1drv.ms/x/s!AoCOij4si31tzgY89bhr6XH-_gQq

How can I do some sort of frequency analysis (FFT, DFT) or similar. How can I do it in Matlab?

Sorry if the question is duplicated but I couldn't find any answer for my problem.


Yes you can, and even nonuniform time sampling can be beneficial to processing in some cases.

First, have a look at the data: the sampling intervals are shown here: sampling intervals

Quite regular (around 2000 in average), with fluctuation around this value, similar to jitter, except at some locations where you have a huge variations. You should carefully check those, and filter them if you suspect they are not normal. I have more concerns about your signal:


A lot of zeroes, only positive values. Looks like you have absolute values. Traditional vibration signals do not look like that.

Anyway, you can invest in non-uniform DFT, as proposed by @Jojek.

You can have a look at the Lomb-Scargle periodogram or least-squares frequency analysis,

a classic method for finding periodicity in irregularly-sampled data

On your data, you get this, but I would not dare interpret, given the warning above: Lomb-Scargle

Recent matlab versions are for instance plomb.m, and fast ones exist in Python. MatlabCentral offers at least three implementations:

  • $\begingroup$ Understood Thank you all for the help! The signal was from an analog piezo sensor which reads only positive values! $\endgroup$ – Pedro Jul 15 '16 at 22:24

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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