फ़्रीक्वेंसी डोमेन, क्या यह सचमुच कोई वास्तविक जगह है?
(lcamtuf.substack.com)- Discrete Fourier transform (DFT) संचार और signal processing का एक मुख्य टूल है, लेकिन फ़्रीक्वेंसी डोमेन ही वास्तविकता को समझने का एकमात्र तरीका नहीं है
- DCT की तरह, ऐसे ढांचे में जहाँ इनपुट sample पर basis function के मान को गुणा करके frequency bin निकाले जाते हैं, सिर्फ basis बदलकर अलग नियमों वाला फ़्रीक्वेंसी डोमेन बनाया जा सकता है
- Walsh matrix
+1और-1से बने square wave basis देती है, और अगर sequency तथा orthogonality ठीक रखी जाए तो time domain और frequency representation के बीच आना-जाना संभव है - Hadamard matrix, Walsh matrix का पुनर्व्यवस्थित रूप है, जिसे Kronecker product या bit operations से बनाया जा सकता है और जिसकी rows को sequency के आधार पर फिर से सजाकर WHT में इस्तेमाल किया जाता है
- वही इनपुट DCT में कई harmonic components में फैल जाता है, जबकि Walsh-Hadamard transform में square wave components में बंटता है, जो दिखाता है कि DFT “सच” पर अकेले अधिकार नहीं रखता
Fourier फ़्रीक्वेंसी डोमेन को फिर से देखना
- फ़्रीक्वेंसी डोमेन एक गणितीय space है जिसमें जटिल signals को sine wave के amplitude और phase के रूप में बदला और व्यक्त किया जाता है
- इस representation की वजह से signal processing के वे काम, जिन्हें time domain या spatial domain में सीधे संभालना कठिन होता है, अधिक आसानी से किए जा सकते हैं
- DFT संचार और signal processing में केंद्रीय भूमिका निभाता है, लेकिन square wave को odd-order sine harmonics के योग में बदलने वाली व्याख्या ही वास्तविकता की एकमात्र व्याख्या है या नहीं, यह अलग सवाल है
- sine wave प्रकृति में व्यापक रूप से मिलती है, इसलिए Fourier परिवार के टूल कई कामों में बहुत उपयुक्त हैं, लेकिन दूसरे नियमों पर चलने वाले well-defined frequency domains भी बनाए जा सकते हैं
DCT को basis function के रूप में समझना
- Discrete cosine transform (DCT) को DFT का एक सरल, real-valued संस्करण माना जा सकता है
- DCT-II में इनपुट मान
s_nको एक विशेष cosine expression के मान से गुणा करके जोड़ा जाता है, जिससे किसी खास frequency binF_kका मान निकाला जाता है - इसका मूल तत्व वह basis function है जो मौजूदा DCT bin number से जुड़ी frequency की cosine wave बनाती है
- इसे सामान्य रूप दें तो
B(k, n)ऐसा multiplier लौटाता है जोkऔरnपर निर्भर होता है, और इसे input samples से गुणा कर जोड़ दिया जाता है - software के नज़रिए से
B(k, n)को lookup array की तरह देखा जा सकता है, और गणितीय रूप से इसे matrix माना जा सकता है N=16DCT basis matrix में पहली rowk=00Hz वाले DC component के अनुरूप होती है, और उसके सभी मान+1.00वाली cosine होते हैं- इसके बाद की rows half cycle, one cycle, one-and-a-half cycle की तरह धीरे-धीरे तेज़ बदलती cosine patterns रखती हैं
Square wave basis और Walsh matrix
- sine frequency के बजाय square wave के आधार पर signal को तोड़ने वाली basis function, Walsh matrix से बनाई जा सकती है
- Walsh matrix अलग-अलग गति से बदलने वाली square waves से बनी होती है, और उसके सभी multipliers
+1या-1होते हैं - इससे गणना सरल हो जाती है, क्योंकि यह input data के कुछ हिस्सों के sign पलटकर उन्हें जोड़ने तक सीमित रहती है
- लेकिन यह साधारण दिखने वाली matrix भी दो शर्तें पूरी करनी चाहिए
- हर row में पिछली row से एक अधिक sign change होना चाहिए, यानी sequency क्रम बना रहना चाहिए
- time domain data और frequency representation के बीच सहज रूप से आगे-पीछे जाने के लिए orthogonality बनी रहनी चाहिए
- Walsh matrix को सीधे बनाना हो तो
N×Narray से शुरुआत की जाती है, जहाँN2 की घात होना चाहिए- सबसे बाएँ पहले column में सभी rows के लिए
+1रखा जाता है - नया column, मौजूदा मानों की mirror copy से बनाया जाता है, और नए जोड़े गए हिस्से को कई horizontal segments में बाँटकर कुछ segments के sign पलटे जाते हैं
- हर iteration में columns की copy की जाती है और row segments की संख्या बढ़ाई जाती है, जिससे बारी-बारी से sign inversion होता है
- सबसे बाएँ पहले column में सभी rows के लिए
Hadamard matrix से Walsh array बनाना
- साहित्य और open source code में Walsh array को सीधे बनाने के बजाय अक्सर Hadamard matrix से निकाला जाता है
- Hadamard matrix, Walsh array की rows को अलग क्रम में सजाया गया रूप है
- उदाहरण के लिए
N=16में Walsh की row #15, Hadamard में #1 पर चली जाती है, और Walsh की row #1, #8 पर रखी जाती है
- उदाहरण के लिए
- इसका एक कारण यह भी है कि ऐतिहासिक रूप से Hadamard construction पहले आया और Walsh उसी के ऊपर विकसित हुआ
- व्यावहारिक रूप से भी Hadamard matrix बनाने के तरीके बेहतर तरीके से documented हैं, और bit manipulation पर आधारित सरल व efficient तरीके भी उपलब्ध हैं
- पारंपरिक construction
1×1array से शुरू होती है और पिछली matrixH_{n-1}को 4 tiles में copy करती है- ऊपर-बाएँ, ऊपर-दाएँ और नीचे-बाएँ भाग वैसे ही copy किए जाते हैं
- नीचे-दाएँ भाग में सभी signs पलट दिए जाते हैं
- इस expansion के लिए Kronecker product notation
⊗का उपयोग किया जाता है, लेकिन वास्तविक काम copy और sign inversion ही है
- यह construction
nबार दोहराने पर Hadamard matrix का आकार हमेशा2^n × 2^nबनता है - Hadamard के किसी विशेष cell का मान
x & yनिकालकर, उसके result में set bits की संख्या सम है या विषम, इससे तय किया जा सकता है- अगर set bits की संख्या विषम हो तो मान
-1, और सम हो तो+1 - C code में इसे
__builtin_popcount(x & y) % 2से लागू किया जाता है
- अगर set bits की संख्या विषम हो तो मान
Walsh-Hadamard transform का implementation
- Hadamard matrix को सहज Walsh क्रम में बदलने के लिए rows को sequency के आधार पर sort करना पड़ता है
- सबसे सरल तरीका है हर row में sign changes की संख्या गिनना
- दूसरे bit-manipulation आधारित तरीके भी संभव हैं
- Walsh row number को उसके 1bit दाएँ shift किए गए मान के साथ XOR करके Gray code बनाया जाता है
- फिर अंतिम
nbits का क्रम उलटकर Hadamard row mapping निकाली जाती है
- इस तरह बने Walsh array से DCT implementation का basis बदल दें तो “discrete square transform” और उसका inverse transform बनाया जा सकता है
- तकनीकी रूप से यह transform Walsh–Hadamard transform (WHT) है
- उदाहरण इनपुट
1 1 1 1 5 5 5 5को DCT से process करने पर harmonic components कई frequency bins में फैल जाते हैंDCT : +24.00 -10.25 -0.00 +3.60 +0.00 -2.41 -0.00 +2.04
- उसी input को square wave transform से process करने पर सिर्फ
F_0औरF_1में non-zero components दिखाई देते हैंSQFT : +24.00 -16.00 +0.00 +0.00 +0.00 +0.00 +0.00 +0.00
- inverse transform
isqft()मूल input को वापस restore कर देता हैISQFT : +1.00 +1.00 +1.00 +1.00 +5.00 +5.00 +5.00 +5.00
Spectrogram तुलना और व्यावहारिक स्थान
- Gorillaz के “DARE” से लिए गए 11-second audio clip के आधार पर DCT spectrogram और Walsh-Hadamard spectrogram की तुलना की गई है
- Walsh-Hadamard transform कम प्रदर्शन वाले कंप्यूटरों पर भी computational efficiency देता है, और कुछ खास प्रकार के data पर अच्छा फिट बैठने के कारण कुछ niche उपयोगों में काम आता है
- निष्कर्ष यह नहीं है कि WHT का अधिक इस्तेमाल होना चाहिए, बल्कि यह है कि Discrete Fourier transform सच पर अकेला अधिकार नहीं रखता
- spectrogram को 44.1kHz mono audio file पर DCT और WHT से निकाला गया है
- input sample window
512है - transform stepover
1है - output array का आकार लगभग
512 × 485kहै - pixel intensity में normalized absolute value पर लगभग
0.4gamma लागू किया गया है - image को Lanczos resampling से resize किया गया है, और black–sky blue–white linear colormap से render किया गया है
- input sample window
- Walsh-Hadamard को image compression में प्रयोग करने के उदाहरण के रूप में
http://rotormind.com/blog/2019/hadamard-days-night/भी साथ में दिया गया है
1 टिप्पणियां
Hacker News की टिप्पणियाँ
गणितीय रूप से Fourier transform सिर्फ समय-संकेत को किसी विशेष orthogonal vector basis में व्यक्त करने का एक तरीका है
सतह के विस्थापन vector को भी उत्तर/पूर्व दिशा basis में व्यक्त किया जा सकता है, या किसी सड़क की दिशा और उसके लंबवत दिशा में भी
समय-निर्भर signal या “सुंदर” functions अनंत-आयामी vector space में होते हैं, इसलिए उनकी कल्पना करना कठिन है, लेकिन मूल गणित लगभग इसी तरह काम करता है
Fourier transform में basis vectors harmonic functions होते हैं, और frequency domain एक ऐसा “मानचित्र” है जो signal को अनंत संख्या में harmonic functions के संयोजन के रूप में दिखाता है
Walsh–Hadamard transform जैसे अन्य basis के मानचित्र भी उतने ही वास्तविक हैं, और time-domain representation भी सिर्फ इसलिए परिचित है क्योंकि वह कई मानचित्रों में से एक है
image processing, differential equations हल करना, fast multiplication जैसी कई applications हैं
गणितीय रूप से ऐसे transforms lossless होते हैं, इसलिए transformed function में मूल function के बिल्कुल समान जानकारी होती है, और सिर्फ transform से भी मूल को वापस पाया जा सकता है
engineering में अक्सर transform का इस्तेमाल कुछ अवांछित जानकारी, जैसे विशेष frequency components, हटाने के लिए किया जाता है, इसलिए यह बात अक्सर धुंधली हो जाती है
आखिरकार यह किसी एक function को देखने के कई दृष्टिकोणों में से एक है
खासकर बहु-आयामी space में, सामान्य multidimensional Fourier transform ठीक से तभी काम करता है जब उस space में flat metric हो
यह सोचें कि स्वयं ब्रह्मांड वक्र है, तो यह एक चेतावनी संकेत जैसा लगता है
हाल में कुछ खास hyperbolic lattices के लिए Fourier series के generalization पर दिलचस्प शोध हुआ है, और उसके परिणामस्वरूप Fourier space का dimension position space से बड़ा हो सकता है
इतना ही नहीं, इस “Fourier space” का dimension lattice discretization के तरीके पर निर्भर करता है, इसलिए कुछ 2D lattices में 4D frequency-जैसा domain हो सकता है और कुछ अन्य 2D lattices में 8D-जैसा domain
https://arxiv.org/abs/2108.09314 या https://www.pnas.org/doi/full/10.1073/pnas.2116869119
वह पूरी तरह गलत मॉडल था, लेकिन व्यावहारिक रूप से वे functions का approximation करने के लिए Fourier series जैसी ही चीज़ इस्तेमाल कर रहे थे
polynomial जैसे basis का उपयोग करें तब भी आखिरकार आप function को frequency components के रूप में ही बना रहे होते हैं
Fourier basis इस मायने में विशेष है कि उसका हर element किसी खास frequency से मेल खाता है
फिर भी हर basis को किसी उद्देश्य के लिए डिज़ाइन किया गया मानना बेहतर है, और basis transform spectrum को ऐसे जटिल तरीके से पुनर्व्यवस्थित कर सकता है कि उसका analysis कठिन हो जाए
तब आप smoothness जैसे अन्य गुणों का analysis करने लगते हैं
जिन अधिकांश functions में हमारी रुचि होती है, उनके characteristic spectra होते हैं, लेकिन Fourier basis हर सवाल का जवाब नहीं देता
उत्तर और उत्तर-पूर्व की तरह, अगर कुछ हद तक लंबवत component हों तो [n, e] को दूसरे coordinates में भी व्यक्त किया जा सकता है
columns की वजह से विशेष coefficients गलत हो सकते हैं, लेकिन मूल बात यह है कि यह संभव है
मास्टर्स के समय dynamical systems group में whiteboard के सामने हुई एक बातचीत याद आ गई
“बाईं तरफ से system में energy inject की जाती है, और दाईं तरफ यहाँ dissipate होती है”
“लेकिन system तो rotationally invariant है, इसमें बायाँ और दायाँ कहाँ?”
“मैं frequency space की बात कर रहा था”
“ओह, मुझे लगा आप real space की बात कर रहे थे”
“बेवकूफ़ हैं क्या? real space में कौन सोचता है?”
यह तो एक अमूर्त representation है, इसका space dimensions के left/right/up/down से सीधा संबंध नहीं होना चाहिए, है न?
complex exponential basis functions इस अर्थ में Fourier basis को अनोखा बनाते हैं कि वे linear time-invariant (LTI) systems के eigenvectors होते हैं
अन्य transforms में यह गुण नहीं होता
circuits, communication channels, antennas जैसे कई वास्तविक systems LTI होते हैं, और इसी गुण की वजह से अलग-अलग frequencies पर भेजे गए signals एक-दूसरे में हस्तक्षेप नहीं करते
इसी कारण Fourier transform अन्य transforms की तुलना में अधिक व्यापक रूप से उपयोग होता है
quantum physics में भी position और momentum की wavefunctions के लिए Fourier pair का संबंध मिलता है, ऐसा गुण अन्य transforms में नहीं है
electrical engineering background में analysis के लिए कई systems को linear या बहुत कमजोर nonlinear माना जाता है, और signals भी अधिकतर periodic होते हैं, इसलिए Fourier transform स्वाभाविक लगता है
convolution, multiplication बन जाता है, और complex exponential का time differentiation j*omega से गुणा करने जैसा हो जाता है
convolution और time differentiation की तुलना में multiplication करना बहुत बेहतर है
अगर आप यह मान लें कि “कुछ आम विशेष परिस्थितियों में सुविधा के लिए Fourier representation का उपयोग किया जाता है”, तो दूसरी समस्याओं के लिए दूसरे mathematical transforms का उपयोग कोई आश्चर्य की बात नहीं है
कई lectures सबसे सामान्य two-sided Laplace transform को ठीक से नहीं पढ़ाते, और two-sided Fourier transform से सीधे one-sided Laplace transform पर चले जाते हैं—यह बात मुझे हमेशा अजीब लगी है
https://en.wikipedia.org/wiki/Two-sided_Laplace_transform
अगर पूछा जाए कि क्या यह एक “वास्तविक जगह” है, तो मुझे पहले का एक optical experiment याद आता है
किसी चित्र को कुछ lenses से गुजारने पर frequencies का एक plane बनता है, और फिर वह दोबारा lenses से होकर स्क्रीन पर project हो जाता है
उस frequency plane के किसी हिस्से को रोक दें तो image बदल जाती है
इसे संभालना बेहद मुश्किल था, और इसके लिए St Andrew’s के Dr Bruce Sinclair के प्रति बहुत आभार महसूस हुआ
physics lab में काम करने से यह दिखता है कि चीजें कैसे काम करती हैं, लेकिन कुछ महीनों बाद theory को फिर से देखें तो काफी भटकाव महसूस होता है
इसलिए शायद aperture resolution को सीमित करता है, और reflecting telescope में diffraction spikes जैसी चीजें पैदा होती हैं
Schlieren भी इसी तरह काम करता है
DFT के एक और दिलचस्प generalization के रूप में Lomb-Scargle transform है
इसमें time domain में fixed measurement interval की जरूरत नहीं होती
astrophysics जैसे क्षेत्रों में, जहां measurement intervals नियमित नहीं होते, periodic signals की frequency खोजने के लिए इसका अक्सर उपयोग होता है
https://iopscience.iop.org/article/10.3847/1538-4365/aab766 एक सामान्य परिचय है, और https://docs.astropy.org/en/stable/timeseries/lombscargle.ht... Python की astropy library में इसे कैसे इस्तेमाल करें, यह अच्छी तरह बताता है
auto-scaling failures से जुड़ी performance degradation से बचा सकती है, लेकिन सालाना budget कितना होना चाहिए और क्यों, यह नहीं बताती
हालांकि Prometheus data को सचमुच का sampling interval मानना मुश्किल है
cluster की हर machine भले नियमित अंतराल पर report करे, वे एक-दूसरे के साथ synchronized नहीं होतीं
एक दूसरे नज़रिए से देखें तो cochlea को Fourier transform के “वास्तविक” implementation की तरह देखा जा सकता है
https://www.britannica.com/science/sound-physics/The-ear-as-...
यह frequency domain में रूपांतरण तो करता है, लेकिन Fourier transform न तो करता है और न ही उसका approximation
cochlea जो time→frequency domain transformation “implement” करता है, वह wavelet transform के ज्यादा करीब है
cochlea को Fourier transform के रूप में समझना वैसी ही गलती है, जैसे यह सोचना कि आंख की cone cells सिर्फ लाल, हरे और नीले प्रकाश पर प्रतिक्रिया करती हैं
वास्तव में हर cell frequencies की एक range में अलग-अलग तरह से प्रतिक्रिया करती है
cone cells low, mid और high frequency ranges में peak करती हैं और दोनों तरफ घटती जाती हैं, जबकि cochlea की hair cells में peak frequency के harmonics पर second peak के साथ ज्यादा wavelet-जैसी response curve होती है
मैं विशेषज्ञ नहीं, बस एक उत्साही amateur हूँ, इसलिए उम्मीद है कि कोई ज्यादा जानकार व्यक्ति इसे सुधार देगा
university में हमारी stem cell line को bone में differentiate होने की समस्या थी, और बाद में पता चला कि environment की stiffness वह signal थी जिसे stem cells महसूस कर सकती थीं
यानी सख्त culture dish ही cells से कह रही थी कि उन्हें bone cells बनना चाहिए
लेख में कहा गया था कि “Hadamard matrix की rows को sequency के अनुसार sort करने के लिए मुझे zero crossings गिनने से ज्यादा elegant algorithm नहीं पता,” लेकिन matrix को देखकर pattern का अंदाजा लगाया तो पता चला कि यह पहले से ज्ञात तरीका था
https://en.wikipedia.org/wiki/Walsh_matrix के अनुसार Walsh matrix की sequency ordering, पहले Hadamard matrix पर bit-reversal permutation लागू करके, और फिर Gray-code permutation लागू करके प्राप्त की जा सकती है
लेख एक बहुत सामान्य और दार्शनिक सवाल उठाता है, लेकिन बाद में कहता है कि क्योंकि दूसरे orthogonal bases और transforms भी मिल सकते हैं, इसलिए frequency domain कोई खास चीज नहीं है
फिर भी मेरा मानना है कि frequency domain और Fourier transform कई दूसरे transforms से ज्यादा विशेष हैं
क्योंकि इन्हें प्रकृति में सीधे देखा जा सकता है
उदाहरण के लिए, एक lens parallel light में मौजूद input image का 2D Fourier transform करता है, और हम उसे स्क्रीन पर देख सकते हैं
इसी तरह grating या prism के output को CCD पर project करके प्रकाश की wavelength या frequency मापी जा सकती है, और यह भी frequency domain का प्रत्यक्ष मापन है
RF waves में भी इसी तरह के मापन संभव हैं
sine wave इस अर्थ में विशेष है कि वह Helmholtz wave equation का स्वाभाविक हल है
square wave के साथ infinite energy जैसी दूसरी समस्याएं भी हैं
यह लेख mathematicians या computer scientists को तो ठीक लग सकता है, लेकिन sound और waves की बुनियादी physics को नज़रअंदाज़ करता है
physics के परिणाम शायद उसी गुण का नतीजा हैं
आखिरकार आधुनिक गणित का एक मुख्य सबक यही है कि किसी वस्तु को कई दृष्टिकोणों से देखना उपयोगी होता है
बहुत बड़ी संख्या में भौतिक वस्तुएं harmonic oscillators होती हैं, और इसकी जड़ें physics में काफी बुनियादी हैं
Fourier analysis के उपयोग की और भी बहुत-सी जगहें याद आती हैं, लेकिन sine wave भौतिक रूप से ज्यादा “वास्तविक” है, और यह कहना कि किसी भी basis set से निरूपण किया जा सकता है, उससे ज्यादा “वैध” लगता है
“वास्तविक” शब्द मानो यह एहसास देता है कि घटनाओं के पीछे सचमुच कोई oscillator मौजूद है
square wave signal और उसकी derivative दोनों में discontinuity होने के कारण कम भौतिक है, और प्रकृति को discontinuities सच में पसंद नहीं हैं
उदाहरण के लिए Gibbs phenomenon स्वाभाविक रूप से उस frequency response के inverse Fourier transform से निकलता है, जो किसी cutoff frequency के ऊपर की सभी frequencies को 0 कर देता है
यह दिलचस्प है कि square wave का frequency domain Gibbs phenomenon को कैसे समझाएगा
शायद system के nonlinear होने की तरह, मूल square-wave frequency के harmonics दिखाई देंगे
स्नातक स्तर पर physics और mathematics पढ़ते समय मैं इस निष्कर्ष पर पहुँचा कि किसी फलन f(x) का मान अनंत संख्या में x पर जानना और f के frequency components को अनंत संख्या की frequencies पर जानना, दोनों समतुल्य हैं
दार्शनिक रूप से ये दोनों अभिव्यक्तियाँ समान रूप से “वास्तविक” हैं
बस कुछ समस्याएँ एक representation में दूसरे की तुलना में अधिक आसानी से हल हो जाती हैं
time domain से frequency domain में बदलना coordinate system परिवर्तन जैसा है
time domain में एक संकीर्ण peak वाला signal, peak की स्थिति के एक delta से बहुत छोटे और sparse रूप में व्यक्त किया जा सकता है, लेकिन frequency domain में ऐसा compressed representation नहीं मिलता
इसके विपरीत, time domain का sine wave signal वहाँ compact नहीं होता, लेकिन frequency domain में केवल कुछ delta ही काफी होते हैं
time और frequency एक ही चीज़ को व्यक्त करने के दो तरीके हैं, और कुछ मामलों में एक domain आसान होता है, जबकि दूसरे मामलों में उल्टा
यह सिद्ध किया जा सकता है कि जो चीज़ time domain में bounded है, वह frequency domain में unbounded हो जाती है, और इसका उल्टा भी सही है
इसलिए जो एक domain में compact है, वह दूसरे domain में जाने पर हमेशा फैल जाता है
quantum mechanics में position और momentum ऊपर के time·frequency की तरह conjugate variables हैं, इसलिए यदि position bounded है तो momentum unbounded होगा, और इसका उल्टा भी सही है
यही Heisenberg uncertainty principle का मूल विचार है