NumPy FFT — np.fft module
5.4.7· Coding › Scientific Computing (Python)
YE EXIST KYU KARTA HAI?
DFT KYA HAI? (scratch se derive karo)
aata kahan se hai?
YE exact formula kyun? Socho ki tum apne signal ko ek probe wave ke against test kar rahe ho.
- Frequency ki ek pure wave ( samples ke upar) hai — ye unit circle ke around full turns karti hai jab jaata hai tak.
- Ye poochne ke liye ki "wave ka kitna mein hai?", inner product (correlation) lo: har sample ko probe ke conjugate se multiply karo aur sum karo.
- ka conjugate hai . Isliye minus sign aata hai.
Hum orthogonality prove kar sakte hain (roots of unity ki geometric series): KYU: agar toh har term hai, sum . Agar , toh ye ek geometric series hai ratio ke saath aur , toh .
Inverse DFT
Orthogonality ki wajah se, hum recover kar sakte hain: aur sign exactly wahi hai jo forward transform ko undo karta hai (NumPy ka default convention).
HOW NumPy output organize karta hai

Worked Example 1 — ek tone dhundho
import numpy as np
fs = 1000.0 # sampling rate, Hz
N = 1000 # number of samples
t = np.arange(N) / fs # time axis, seconds
x = 3*np.sin(2*np.pi*50*t) # a 50 Hz sine, amplitude 3
X = np.fft.rfft(x) # complex spectrum
f = np.fft.rfftfreq(N, d=1/fs) # frequency axis
amp = np.abs(X) * 2 / N # convert to physical amplitude
print(f[np.argmax(amp)], amp.max()) # ~50.0 Hz, ~3.0| Step | Ye step kyun? |
|---|---|
t = arange(N)/fs |
sahi time stamps banata hai; total window s |
rfft(x) |
real signal → aadha spectrum kaafi hai |
rfftfreq(N,d=1/fs) |
batata hai ki har bin kaun si frequency hai — kabhi hard-code mat karo! |
*2/N |
DFT ek real sine ki energy ko +f aur −f mein split karta hai; 2 se multiply karo aur se divide karo taaki sahi amplitude 3 mile |
Worked Example 2 — reconstruct karo & inverse verify karo
x = np.array([1.0, 2.0, 0.0, -1.0])
X = np.fft.fft(x)
xr = np.fft.ifft(X)
print(np.allclose(x, xr.real)) # TrueKyun: ifft(fft(x)) == x bilkul exactly (float error tak) kyunki aur sign conventions matched hain. Debug karne ke liye hamesha round-trips par trust karo.
Worked Example 3 — DC aur Nyquist
x = np.array([2,2,2,2], dtype=float)
print(np.fft.fft(x)) # [8.+0.j 0 0 0]Kyun: ek constant signal mein sirf zero frequency (DC) hoti hai. Bin 0 equals . Baaki saare bins zero hain — koi oscillation nahi hai. DC bin hamesha samples ka sum hota hai.
Recall Feynman: 12-saal ke bachche ko samjhao
Socho ek music chord — ek saath bajte kai notes, hawa ke ek jhatkay mein smash ho gaye. Tumhara kaam: andar ke alag-alag notes pata karo. FFT ek magical chalni hai: tum har possible note ko us jhatke ke saath gungunate ho, aur jab bhi tumhari awaaz kisi chhupe note se match karti hai, woh "ring" karta hai; jab match nahi karta, chup rahta hai. Har note ke liye ye bahut hoshiyaari se karo (ek-ek nahi balki sab ek saath), aur nikal aata hai ek list: "itna low note, itna high note." Woh list hai spectrum. "Fast" part sirf ek smart shortcut hai taaki kaam lunch se pehle ho jaaye.
Flashcards
np.fft.fft kiske beech transform karta hai?
ka DFT formula kya hai?
FFT "fast" kyun hai — naive DFT ke comparison mein complexity kya hai?
Rate , length diye hue, bin ki frequency Hz mein?
np.fft.fftfreq(N, d) kya return karta hai?
fft aur rfft mein kya fark hai?
rfft real input assume karta hai aur sirf non-redundant bins return karta hai.DFT bin 0 (DC) ki value kya hai?
Amplitude ki real sine ke liye, |rfft| se kaise recover karein?
Forward DFT exponent mein minus sign kyun hota hai?
FFT ki frequency resolution kya hai?
fftshift kya karta hai aur kyun?
Real input ke liye aur mein kya relation hai?
Connections
- Discrete Fourier Transform — woh math jo FFT compute karta hai
- Sampling and Nyquist Theorem — kyun visible frequencies ko limit karta hai
- Convolution Theorem — FFT convolution ko multiplication mein badal deta hai
- NumPy arrays — broadcasting — vectorized signal building
- Spectral Leakage and Windowing — non-periodic signals ko fix karna
- Complex Numbers and Euler's Formula —
- scipy.signal — higher-level spectral tools jo
np.fftpar bane hain