pyfar.dsp.fft¶
The following documents the FFT functionality. More details and background is
given in the FFT concepts.
Functions:
|
Calculate the IFFT of a single-sided Fourier spectrum. |
|
Normalize a Fourier spectrum. |
|
Calculate the FFT of a real-valued time-signal. |
|
Returns the positive discrete frequencies for which the FFT is calculated. |
- pyfar.dsp.fft.irfft(spec, n_samples, sampling_rate, fft_norm)[source]¶
Calculate the IFFT of a single-sided Fourier spectrum.
The function takes only the right-hand side of the spectrum and returns a real-valued time signal. The normalization is considered according to
'fft_norm'as described innormalizationandFFT concepts.- Parameters
spec (array, complex) – The complex valued right-hand side of the spectrum with dimensions (…, n_bins)
n_samples (int) – The number of samples of the corresponding time signal. This is crucial to allow for the correct transform of time signals with an odd number of samples.
sampling_rate (number) – sampling rate in Hz
fft_norm ('none', 'unitary', 'amplitude', 'rms', 'power', 'psd') – See
normalization.
- Returns
data – Array containing the time domain signal with dimensions (…,
'n_samples')- Return type
array, double
- pyfar.dsp.fft.normalization(spec, n_samples, sampling_rate, fft_norm='none', inverse=False, single_sided=True, window=None)[source]¶
Normalize a Fourier spectrum.
Apply normalizations defined in 1 to the DFT spectrum. Note that the phase is maintained in all cases, i.e., instead of taking the squared absolute values for
'power'and'psd', the complex spectra are multiplied with their absolute values to ensure a correct renormalization. For detailed information and explanations, refer toFFT concepts.- Parameters
spec (numpy array) – N dimensional array which has the frequency bins in the last dimension. E.g.,
spec.shape == (10,2,129)holds 10 times 2 spectra with 129 frequency bins each.n_samples (int) – number of samples of the corresponding time signal
sampling_rate (number) – sampling rate of the corresponding time signal in Hz
fft_norm (string, optional) –
'none'Do not apply any normalization. Appropriate for energy signals such as impulse responses.
'unitary'Multiply spec by factor of two as in 1 Eq. (8) (except for 0 Hz and the Nyquist frequency at half the sampling rate) to obtain the single-sided spectrum.
'amplitude'Scale spectrum by
1/n_samplesas in 1 Eq. (4) to obtain the amplitude spectrum.- ’rms’
Scale spectrum by
as in 1
Eq.(10) to obtain the RMS spectrum.- ’power’
Power spectrum, which equals the squared RMS spectrum (except for the retained phase).
- ’psd’
The power spectrum is scaled by
n_samples/sampling_rateas in 1 Eq. (6)
Note that the unitary normalization is also applied for amplitude, rms, power, and psd if the input spectrum is single sided (see single_sided).
inverse (bool, optional) – apply the inverse normalization. The default is
False.single_sided (bool, optional) – denotes if spec is a single sided spectrum up to half the sampling rate or a both sided (full) spectrum. If
single_sided=Truethe unitary normalization according to 1 Eq. (8) is applied unlessfft_norm='none'. The default isTrue.window (None, array like) – window that was applied to the time signal before performing the FFT. Affects the normalization as in 1 Eqs. (11-13). The window must be an array-like with n_samples length and. The default is
None, which denotes that no window was applied.
- Returns
spec – normalized input spectrum
- Return type
numpy array
References
- pyfar.dsp.fft.rfft(data, n_samples, sampling_rate, fft_norm)[source]¶
Calculate the FFT of a real-valued time-signal.
The function returns only the right-hand side of the axis-symmetric spectrum. The normalization is considered according to
'fft_norm'as described innormalizationandFFT concepts.- Parameters
data (array, double) – Array containing the time domain signal with dimensions (…,
'n_samples')n_samples (int) – The number of samples
sampling_rate (number) – sampling rate in Hz
fft_norm ('none', 'unitary', 'amplitude', 'rms', 'power', 'psd') – See documentation of
normalization.
- Returns
spec – The complex valued right-hand side of the spectrum with dimensions (…, n_bins)
- Return type
array, complex
- pyfar.dsp.fft.rfftfreq(n_samples, sampling_rate)[source]¶
Returns the positive discrete frequencies for which the FFT is calculated.
If the number of samples
is even the number of frequency bins will be
, if
is odd, the number of bins will be
.- Parameters
n_samples (int) – The number of samples in the signal
sampling_rate (int) – The sampling rate of the signal
- Returns
frequencies – The positive discrete frequencies in Hz for which the FFT is calculated.
- Return type
array, double