28 lines
1.0 KiB
Python
28 lines
1.0 KiB
Python
# -------------------------------------------------------------
|
|
# Functions for "fast" Fourier transform and Fourier synthesis
|
|
# using numpy tools
|
|
# -------------------------------------------------------------
|
|
import numpy as np
|
|
|
|
def dft_fast_coeff(x):
|
|
"""
|
|
Evaluate Fourier coefficients using Numpy's fast Fourier transform.
|
|
This routine only returns the coefficients for the positive frequencies.
|
|
If N is even, it goes up to n=N/2.
|
|
If N is odd, it goes up to n=(N-1)/2.
|
|
:param x: array of function samples
|
|
"""
|
|
return np.fft.rfft(x, norm='forward')
|
|
|
|
|
|
def dft_fast_synthesis(fc, outnum='even'):
|
|
"""
|
|
Use numpy's fast Fourier synthesis taking only Fourier coefficients for positive frequencies
|
|
:param fc: aray of coefficients for positive frequencies only.
|
|
:param outnum: specifies if output time series has an even or odd number of samples (default: 'even')
|
|
"""
|
|
ns = 2*fc.size-2
|
|
if outnum == 'odd': ns = 2*fc.size-1
|
|
return np.fft.irfft(fc, ns, norm='forward')
|
|
|