FFT वास्तविक संख्याओं के बजाय जटिल संख्याओं का उत्पादन क्यों करता है?


83

सभी एफएफटी कार्यान्वयन हम जटिल मूल्यों (वास्तविक और काल्पनिक भागों के साथ) में परिणाम में आए हैं, भले ही एल्गोरिथ्म में इनपुट वास्तविक संख्याओं (पूर्णांक) का एक असतत सेट था।

क्या केवल वास्तविक संख्या के संदर्भ में आवृत्ति डोमेन का प्रतिनिधित्व करना संभव नहीं है?

जवाबों:


88

एफएफटी मूल रूप से आधार परिवर्तन है। जिस आधार पर एफएफटी आपके मूल सिग्नल को बदलता है, उसके बजाय साइन तरंगों का एक सेट है। उस आधार के लिए सभी संभावित आदानों का वर्णन करने के लिए इसे चरण और साथ ही आयाम का प्रतिनिधित्व करने में सक्षम होना चाहिए; चरण को जटिल संख्याओं का उपयोग करके दर्शाया गया है।

उदाहरण के लिए, मान लीजिए कि आपने एफएफटी को एक संकेत दिया है जिसमें केवल एक साइन लहर है। चरण के आधार पर आपको अच्छी तरह से वास्तविक FFT परिणाम मिल सकता है। लेकिन अगर आप अपने इनपुट के चरण को कुछ डिग्री पर शिफ्ट करते हैं, तो एफएफटी आउटपुट उस इनपुट का प्रतिनिधित्व कैसे कर सकता है?

संपादित करें: यह कुछ हद तक ढीली व्याख्या है, लेकिन मैं सिर्फ अंतर्ज्ञान को प्रेरित करने की कोशिश कर रहा हूं।


3
यह उत्तर देने में बहुत मदद करता है। यदि FFT परिणाम में केवल आवृत्ति और चरण शामिल हैं, तो यह समय डोमेन नमूने में आयाम जानकारी को कैसे कैप्चर करता है? यही है, यह iFFT में सही एम्पलीट्यूड को फिर से कैसे बनाता है?
Landiss

7
खैर, एफएफटी में प्रत्येक मूल्य एक अलग आवृत्ति घटक से मेल खाती है। उस मान का परिमाण घटक का आयाम है और जटिल कोण उस घटक का चरण है।
zmccord

54

एफएफटी आपको आयाम और चरण प्रदान करता है । आयाम को जटिल संख्या (sqrt (x ^ 2 + y ^ 2)) के परिमाण के रूप में एन्कोड किया गया है, जबकि चरण को कोण (atan2 (y, x)) के रूप में एन्कोड किया गया है। FFT से सख्ती से वास्तविक परिणाम प्राप्त करने के लिए, आने वाले सिग्नल में समरूपता भी होनी चाहिए (यानी x [n] = conj (x [एनएन]))।

यदि आप सभी की परवाह करते हैं तो तीव्रता है, जटिल संख्या का परिमाण विश्लेषण के लिए पर्याप्त है।


41

हां, केवल वास्तविक संख्याओं का उपयोग करते हुए सख्ती से वास्तविक इनपुट के एफएफटी आवृत्ति डोमेन परिणामों का प्रतिनिधित्व करना संभव है।

एफएफटी परिणाम में वे जटिल संख्याएं सिर्फ 2 वास्तविक संख्याएं हैं, जो आपको परिणाम वेक्टर के 2 डी निर्देशांक देने के लिए आवश्यक हैं, जिसमें लंबाई और दिशा कोण (या परिमाण और एक चरण) दोनों हैं। और एफएफटी परिणाम में हर आवृत्ति घटक में एक अद्वितीय आयाम और एक अनूठा चरण हो सकता है (एफएफटी एपर्चर में कुछ बिंदु के सापेक्ष)।

एक वास्तविक संख्या अकेले परिमाण और चरण दोनों का प्रतिनिधित्व नहीं कर सकती है। यदि आप चरण की जानकारी को फेंक देते हैं, तो यह आसानी से बड़े पैमाने पर संकेत को विकृत कर सकता है यदि आप एक iFFT (और संकेत सममित नहीं है) का उपयोग करके इसे फिर से बनाने की कोशिश करते हैं। तो एक पूर्ण एफएफटी परिणाम के लिए एफएफटी बिन प्रति 2 वास्तविक संख्या की आवश्यकता होती है। इन 2 वास्तविक संख्याओं को कुछ FFT में एक साथ कॉमन कन्वेंशन द्वारा एक जटिल डेटा प्रकार में बंडल किया जाता है, लेकिन FFT परिणाम आसानी से हो सकता है (और कुछ FFTs करते हैं) सिर्फ 2 वास्तविक वैक्टर (कोसाइन कोऑर्डिनेशन के लिए एक और सिवनी निर्देशांक के लिए एक) का उत्पादन करते हैं।

एफएफटी रूटीन भी हैं जो सीधे परिमाण और चरण का उत्पादन करते हैं, लेकिन वे एफएफटी की तुलना में अधिक धीमी गति से चलते हैं जो एक जटिल (या दो वास्तविक) वेक्टर परिणाम उत्पन्न करते हैं। इसमें एफएफटी दिनचर्या भी मौजूद है जो केवल परिमाण की गणना करती है और सिर्फ चरण की जानकारी को फेंक देती है, लेकिन वे आम तौर पर आपको अधिक सामान्य एफएफटी के बाद खुद को ऐसा करने से ज्यादा तेज़ नहीं चलाते हैं। हो सकता है कि वे एक कोडर को कोड की कुछ पंक्तियों को उल्टा न होने की कीमत पर बचाते हैं। लेकिन बहुत सारे पुस्तकालय FFT के इन धीमे और कम सामान्य रूपों को शामिल करने की जहमत नहीं उठाते हैं, और सिर्फ कोडर को बदलने या अनदेखा करने देते हैं कि उन्हें क्या चाहिए या ज़रूरत नहीं है।

इसके अलावा, कई लोग गणित को जटिल अंकगणित (जहां सख्ती से वास्तविक इनपुट के लिए, कोज़ाइन सहसंबंध या एफएफटी परिणाम के एक घटक को भी वास्तविक घटक में डालते हैं, और साइन सहसंबंध या विषम घटक) का उपयोग करके बहुत अधिक सुरुचिपूर्ण मानते हैं। एफएफटी परिणाम एक जटिल संख्या के काल्पनिक घटक में डाला जाता है।)

(जोड़ा गया :) और, अभी तक एक अन्य विकल्प के रूप में, आप वास्तविक और काल्पनिक घटकों के रूप में, वास्तविक और काल्पनिक दोनों घटकों के बजाय प्रत्येक एफएफटी परिणाम बिन के दो घटकों पर विचार कर सकते हैं।


19

यदि दी गई आवृत्ति के लिए आपका एफएफटी गुणांक fहै x + i y, तो आप xउस आवृत्ति पर कोसाइन के गुणांक के रूप में देख सकते हैं , जबकि yसाइन का गुणांक है। यदि आप एक विशेष आवृत्ति के लिए इन दो तरंगों को जोड़ते हैं, तो आपको उस आवृत्ति पर एक चरण-स्थानांतरित लहर मिलेगी; इस तरंग sqrt(x*x + y*y)की परिमाण जटिल गुणांक के परिमाण के बराबर है।

असतत कोसाइन रूपांतरण (डीसीटी) फूरियर के एक रिश्तेदार को बदलने जो पैदावार सभी वास्तविक गुणांकों है। एक दो-आयामी डीसीटी का उपयोग कई छवि / वीडियो संपीड़न एल्गोरिदम द्वारा किया जाता है।


9
  1. असतत फूरियर रूपांतरण मूल रूप से "टाइम डोमेन" में जटिल संख्याओं के वेक्टर से "आवृत्ति डोमेन" में जटिल संख्याओं के वेक्टर में परिवर्तन है (मैं उद्धरणों का उपयोग करता हूं क्योंकि यदि आप सही स्केलिंग कारकों को लागू करते हैं, तो डीएफटी अपना स्वयं का है श्लोक में)। यदि आपके इनपुट वास्तविक हैं, तो आप एक ही बार में दो DFT कर सकते हैं: इनपुट वैक्टर x और y लें और F ( x  +  i  y ) की गणना करें । मैं भूल गया कि आप बाद में डीएफटी को कैसे अलग करते हैं, लेकिन मुझे संदेह है कि यह समरूपता और जटिल संयुग्मों के बारे में कुछ है।

  2. असतत कोज्या बदलने तरह-आप reals के साथ "आवृत्ति डोमेन" प्रस्तुत कर सकते हैं, और हानिपूर्ण संपीड़न एल्गोरिदम (जेपीईजी, एमपी 3) में आम है। आश्चर्यजनक बात (मेरे लिए) यह है कि यह काम करता है भले ही यह चरण की जानकारी को छोड़ने के लिए प्रतीत होता है, लेकिन यह भी सबसे अधिक सिग्नल प्रोसेसिंग उद्देश्यों के लिए इसे कम उपयोगी बनाता है (मैं कनविक्शन / सहसंबंध करने के लिए एक आसान तरीके से अवगत नहीं हूं) एक डीसीटी)।

मैंने शायद कुछ विवरण गलत पाए हैं;)


1
मैं आपको अधिक जानकारी प्राप्त करना पसंद करूंगा क्योंकि आप इसे डालते हैं - बाद में डीएफटी को अलग करना - एफ (एक्स + आई) के मामले के लिए।
CatsLoveJazz
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.