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