Quick Start¶
Example 1 — Complex DFT (fast_dft):
import numpy as np
from transforms import fast_dft
# Create a complex exponential at frequency bin k=3
N = 16
k = 3
n = np.arange(N)
x = np.exp(2j * np.pi * k * n / N)
X = fast_dft(x)
print(np.argmax(np.abs(X))) # -> 3
# Inverse roundtrip
x_back = fast_dft(X, inverse=True)
print(np.allclose(x_back, x)) # -> True
Example 2 — Real FFT (fft_real_forward/backward):
from transforms import fft_real_forward, fft_real_backward
import numpy as np
N = 64
t = np.arange(N) / N
x = np.sin(2 * np.pi * 5 * t) + 0.5 * np.cos(2 * np.pi * 10 * t)
X = fft_real_forward(x) # complex spectrum, length N//2+1
x_back = fft_real_backward(X, n=N)
print(np.allclose(x, x_back)) # -> True
Example 3 — Convolution and correlation:
from transforms import convolve_real, correlate_real
import numpy as np
x = np.array([1.0, 2.0, 3.0, 2.0, 1.0])
h = np.array([0.25, 0.5, 0.25]) # smoothing kernel
smooth = convolve_real(x, h)
print(smooth) # smoothed output
# Detect delay via cross-correlation
delayed = np.roll(x, 2)
r = correlate_real(x, delayed)
lag = np.argmax(r) - (len(x) - 1)
print(lag) # -> 2