arrays – How to plot fast-fourier transform data as a function of frequencies in Python?

The example in numpy documentation is all you need :

import numpy as np

# Let's say here is your signal
signal = np.array([-2, 8, 6, 4, 1, 0, 3, 5, -3, 4], dtype=float)

fourier = np.fft.rfft(signal)
n = signal.size
sample_rate = 100
freq = np.fft.fftfreq(n, d=1./sample_rate)
>> freq
 array([  0.,  10.,  20., ..., -30., -20., -10.])

but when you apply rfftfreq, you get only positive frequencies:

freq = np.fft.rfftfreq(n, d=1./sample_rate)

So if you want to plot something you take only the corresponding half of values (in the fourier transform magnitude for example).

>> freq
 array([  0.,  10.,  20., 40., 50.])

To perform zero-padding, you can just use np.pad

np.pad(signal, (2,2), 'constant', constant_values=(0,0))

This added 2 zero values in the beginning and the end of the array. Multiple options are possible. Check this numpy.org/doc/stable/reference/generated/numpy.pad.html

Read more here: Source link