5.4.7 · HinglishScientific Computing (Python)

NumPy FFT — np.fft module

1,693 words8 min readRead in English

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

Figure — NumPy FFT — np.fft module

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))   # True

Kyun: 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?
Time (ya spatial) domain ↔ frequency domain (complex output).
ka DFT formula kya hai?
.
FFT "fast" kyun hai — naive DFT ke comparison mein complexity kya hai?
vs .
Rate , length diye hue, bin ki frequency Hz mein?
.
np.fft.fftfreq(N, d) kya return karta hai?
Har bin ki frequency (negative freqs bhi), spacing .
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?
Saare samples ka sum .
Amplitude ki real sine ke liye, |rfft| se kaise recover karein?
se multiply karo (DC bin ke liye use karo).
Forward DFT exponent mein minus sign kyun hota hai?
Ye probe wave ka conjugate hai jo har frequency ko correlate/measure karne ke liye use hota hai.
FFT ki frequency resolution kya hai?
, jahan total record length hai.
fftshift kya karta hai aur kyun?
Zero-frequency component ko array ke center mein le jaata hai taaki negative/positive freqs symmetrically plot hon.
Real input ke liye aur mein kya relation hai?
(conjugate symmetry).

Connections

Concept Map

transformed by

fast version of

maps to

defined via

conjugate for

works because of

enables

recovers

naive cost

speeds up to

bin k gives

implemented in

Time domain signal

FFT algorithm

Discrete Fourier Transform

Frequency domain

Probe wave e^-2pi i kn/N

Correlation inner product

Orthogonality of waves

Inverse DFT

O of N^2

O of N log N

f_k equals k fs over N

np.fft functions