संश्लेषण (IDFT) के दौरान परिमाण को सामान्य क्यों किया जाता है, विश्लेषण (DFT) नहीं?


17

अधिकांश उदाहरणों और एफएफटी कोड में जो मैंने देखा है, फॉरवर्ड डीएफटी ऑपरेशन का आउटपुट (आवृत्ति परिमाण) एन द्वारा बढ़ाया गया है - यानी आपको प्रत्येक आवृत्ति बिन के परिमाण देने के बजाय, यह आपको एन गुना परिमाण देता है।

परिचालन रूप से, यह केवल इसलिए है क्योंकि डीएफटी की गणना प्रत्येक आधार साइन (यानी संयुक्त राष्ट्र के सामान्यीकृत सहसंबंध) के साथ सिग्नल के आंतरिक उत्पाद को ले जाकर की जाती है। हालाँकि, यह दार्शनिक सवाल का जवाब नहीं देता कि हम आउटपुट को वापस करने से पहले सिर्फ एन द्वारा विभाजित क्यों नहीं करते हैं?

इसके बजाय, अधिकांश एल्गोरिदम फिर से विभाजित करते हैं, जब एन-संश्लेषण करते हैं।

यह मेरे लिए प्रति-सहज लगता है, और (जब तक मैं कुछ याद नहीं कर रहा हूं) यह डीएफटी के सभी स्पष्टीकरणों को बहुत भ्रमित करता है।

प्रत्येक परिदृश्य में मैं सपना देख सकता हूं, वास्तविक परिमाण (परिमाण नहीं * N) वह मूल्य है जो मुझे डीएफटी ऑपरेशन से चाहिए, और सामान्यीकृत परिमाण वह मूल्य है जिसे मैं आईडीएफटी ऑपरेशन में इनपुट करना चाहता हूं।

डीएफटी को डीएफटी / एन के रूप में परिभाषित क्यों नहीं किया गया है, और आईडीएफटी को सामान्यीकृत-परिमाण साइनसोइड के सरल योग के रूप में परिभाषित किया गया है?


2
मुझे ईमानदारी से लगता है कि यह यहां पूछे गए सबसे अच्छे प्रश्नों में से एक है।
फोनॉन

जवाबों:


9

चाहे आप अपने डीएफटी के आउटपुट को स्केल करते हों, फॉरवर्ड या उलटा, कन्वेंशन से कोई लेना-देना नहीं है या गणितीय रूप से सुविधाजनक है। इसमें डीएफटी के इनपुट के साथ सब कुछ है। मुझे कुछ उदाहरणों को दिखाने की अनुमति दें जहां स्केलिंग या तो आवश्यक है या आगे और उलटा दोनों परिवर्तनों के लिए आवश्यक नहीं है।

1 / N द्वारा आगे रूपांतरण को पैमाना बनाना चाहिए।

शुरू करने के लिए, यह स्पष्ट होना चाहिए कि एक सरल साइन लहर का विश्लेषण करने के लिए, परिवर्तन की लंबाई अप्रासंगिक, गणितीय रूप से बोलना चाहिए। मान लीजिए N = 1024, Freq = 100 और आपका संकेत है:

f (n) = cos (Freq * 2 * Pi * n / N)

यदि आप f (n) के 1024 पॉइंट DFT लेते हैं, तो आपको वह बिन [100] = 512 मिलेगा। लेकिन जब तक आप इसे N. 512/1024 = 1/2 और निश्चित रूप से स्केल नहीं करते, तब तक इसका कोई सार्थक मूल्य नहीं है। अन्य 1/2 बिन [924] में नकारात्मक स्पेक्ट्रम में है।

यदि आप DFT, N = 2048 की लंबाई को दोगुना करते हैं, तो आउटपुट मान 1024 बिंदु DFT से दोगुना होगा, जो फिर से परिणाम को तब तक अर्थहीन बना देता है जब तक कि हम 1 / N के पैमाने पर नहीं होते। इन प्रकारों के विश्लेषण में डीएफटी की लंबाई एक कारक नहीं होनी चाहिए। तो इस उदाहरण में, आपको डीएफटी को 1 / एन के पैमाने से मापना होगा।

आगे रूपांतरण नहीं होना चाहिए।

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

इस प्रकार, इस इनपुट के लिए, सार्थक उत्तर प्राप्त करने के लिए DFT को 1 / N से छोटा नहीं किया जाता है। यही कारण है कि आप परिवर्तन के परिणाम को प्रभावित किए बिना जितना चाहें उतना आवेग प्रतिक्रिया को शून्य कर सकते हैं।

इन दो उदाहरणों के बीच मूलभूत अंतर क्या है?

उत्तर सीधा है। पहले मामले में, हमने हर इनपुट नमूने के लिए ऊर्जा की आपूर्ति की। दूसरे शब्दों में, साइन लहर सभी 1024 नमूनों के लिए मौजूद थी, इसलिए हमें डीएफटी के आउटपुट को 1/1024 तक स्केल करने की आवश्यकता थी।

दूसरे उदाहरण में, परिभाषा के अनुसार, हमने केवल 1 नमूने के लिए ऊर्जा की आपूर्ति की (n = 0 पर आवेग)। आवेग के लिए 32 टैप फिल्टर के माध्यम से अपने तरीके से काम करने के लिए इसने 32 नमूने लिए, लेकिन यह देरी अप्रासंगिक है। चूँकि हमने 1 नमूने के लिए ऊर्जा की आपूर्ति की है, इसलिए हम डीएफटी के आउटपुट को 1 से बढ़ाते हैं। यदि 1 के बजाय 2 यूनिट ऊर्जा के साथ एक आवेग को परिभाषित किया जाता है, तो हम आउटपुट को 1/2 से मापेंगे।

उलटा रूपांतर नहीं करना चाहिए।

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

इस प्रकार, आगे DFT के साथ, हम व्युत्क्रम DFT के आउटपुट को स्केल नहीं करते हैं यदि इनपुट एक आवेग है।

विलोम पैमाने को बदलना चाहिए।

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

जिन चार स्थितियों में मैंने विस्तृत जानकारी दी है, वे अंत बिंदु उदाहरण हैं जहां यह स्पष्ट है कि डीएफटी के आउटपुट को कैसे स्केल किया जाए। हालांकि, अंत बिंदुओं के बीच बहुत ग्रे क्षेत्र है। तो आइए एक और सरल उदाहरण पर विचार करें।

मान लें कि हमारे पास N, 1024, Freq = 100 के साथ निम्नलिखित संकेत हैं:

f(n) = 6 * cos(1*Freq * 2*Pi * n/N)  n = 0 - 127
f(n) = 1 * cos(2*Freq * 2*Pi * n/N)  n = 128 - 895
f(n) = 6 * cos(4*Freq * 2*Pi * n/N)  n = 896 - 1023

समय क्षेत्र

तीन घटकों के आयाम, आवृत्ति, और अवधि के अंतर को नोटिस करें। दुर्भाग्य से, इस सिग्नल का डीएफटी सभी तीन घटकों को एक ही शक्ति स्तर पर दिखाएगा, भले ही दूसरे घटक का 1/36 अन्य दो का शक्ति स्तर हो।

अनवांटेड फ़्रीक डोमेन

यह तथ्य कि सभी तीन घटक समान मात्रा में ऊर्जा की आपूर्ति कर रहे हैं, स्पष्ट है, जो डीएफटी परिणामों की व्याख्या करता है, लेकिन यहां एक महत्वपूर्ण बिंदु है।

यदि हम विभिन्न आवृत्ति घटकों के लिए अवधि जानते हैं, तो हम तदनुसार विभिन्न आवृत्ति डिब्बे को स्केल कर सकते हैं। इस मामले में, हम डीएफटी के उत्पादन को सटीक रूप से मापने के लिए ऐसा करेंगे: बिन [100] / = 128; बिन [200] / = 768; बिन [400] / = 128;

जो मुझे मेरे अंतिम बिंदु पर लाता है; सामान्य तौर पर, हमें पता नहीं है कि हमारे डीएफटी के इनपुट पर एक विशेष आवृत्ति घटक कितनी देर तक मौजूद है, इसलिए हम संभवतः इस प्रकार के स्केलिंग नहीं कर सकते हैं। सामान्य तौर पर, हम प्रत्येक नमूना बिंदु के लिए ऊर्जा की आपूर्ति करते हैं, यही कारण है कि हमें सिग्नल का विश्लेषण करते समय आगे के डीएफटी को 1 / एन से मापना चाहिए।

मामलों को जटिल करने के लिए, हम DFT के वर्णक्रमीय संकल्प को बेहतर बनाने के लिए लगभग निश्चित रूप से इस सिग्नल पर एक विंडो लागू करेंगे। चूंकि पहले और तीसरे आवृत्ति घटक सिग्नल की शुरुआत और अंत में होते हैं, वे 27 डीबी द्वारा एटेन किए जाते हैं, जबकि केंद्र घटक केवल 4 डीबी (हैनिंग विंडो) द्वारा अटेन्ड किया जाता है।

विंडो स्पेक्ट्रम

स्पष्ट होने के लिए, DFT का आउटपुट हो सकता है इनपुट के बहुत खराब प्रतिनिधित्व है, स्केल है या नहीं।

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

एक स्पेक्ट्रम विश्लेषक, एनालॉग या एफएफटी के साथ एक सिग्नल का विश्लेषण करते समय, समस्याएं समान होती हैं। जब तक आप इसके कर्तव्य चक्र को भी नहीं जानेंगे, तब तक आपको प्रदर्शित सिग्नल की शक्ति का पता नहीं चलेगा। लेकिन फिर भी, विंडोिंग, स्पैन, स्वीप रेट्स, फ़िल्टरिंग, डिटेक्टर प्रकार, और अन्य कारक सभी परिणाम को अंजाम देने के लिए काम करते हैं।

अंततः, समय और आवृत्ति डोमेन के बीच चलते समय आपको काफी सावधान रहना होगा। स्केलिंग के संबंध में आपने जो प्रश्न पूछा है, वह महत्वपूर्ण है, इसलिए मुझे आशा है कि मैंने यह स्पष्ट कर दिया है कि आउटपुट को कैसे मापें, यह जानने के लिए आपको DFT के इनपुट को समझना होगा। यदि इनपुट स्पष्ट रूप से परिभाषित नहीं है, तो डीएफटी के आउटपुट को संदेह के एक महान सौदे के साथ माना जाता है, चाहे आप इसे स्केल करें या नहीं।


मैंने इस उत्तर को व्यापकता और बहुत सारी विस्तृत जानकारी के लिए चुना है, लेकिन सहज ज्ञान युक्त अवलोकन के लिए फोनन का उत्कृष्ट उत्तर भी देखें।
bryhoyt

9

मैं कम्प्यूटेशनल सटीक मुद्दों को शामिल करने के कई कारणों के बारे में सोच सकता हूं, लेकिन यह शायद न्याय नहीं करेगा क्योंकि गणितीय रूप से हम इसे उसी तरह परिभाषित कर रहे हैं जैसे कोई बात नहीं है, और गणित जानता है कि कोई सटीक मुद्दे नहीं हैं।

यहाँ मेरा इस पर ले रहा है। आइए वैचारिक रूप से विचार करें कि सिग्नल प्रोसेसिंग अर्थ में डीएफटी का अर्थ क्या है, न कि केवल विशुद्ध रूप से एक परिवर्तन के रूप में। इस मामले में, यह मुझे लगता है कि डीएफटी को एक सिग्नल और एक सिस्टम पर लागू करने से हमें अलग-अलग परिणाम देखने की इच्छा होती है।

उदाहरण के लिए, मान 1 के निरंतर सिग्नल पर DFT लागू करते हैं। मान लीजिए कि यह संकेत लंबाई में परिमित है और 16 टैप लंबा है। हम इस मामले में डीएफटी से क्या चाहते हैं? जाहिर है, हम चाहते हैं कि यह हमें बताए कि सिग्नल के प्रत्येक आवृत्ति घटक में क्या आयाम है। स्पष्ट रूप से, हमारे सिग्नल में आवृत्ति 0 और आयाम 1 का एक एकल घटक है। लेकिन डीएफटी हमें बिन 0 और ऊंचाई 16 पर एक एकल चोटी देता है! इस मामले में, डीएफटी की परिभाषा के साथ आपकी निराशा सही समझ में आती है। हमें विश्लेषण गुणांक को स्केल करना चाहिए, संश्लेषण गुणांक को नहीं।

ठीक है, अब हम उसी संख्या सरणी का विश्लेषण करते हैं, अर्थात् हमारी 16 स्ट्रिंग, लेकिन इस मामले में एक प्रणाली के रूप में। हम वैचारिक रूप से एक प्रणाली की आवृत्ति प्रतिक्रिया का क्या मतलब चाहते हैं? अधिकांश लोग कहेंगे कि यह इनपुट की तुलना में आउटपुट का आयाम है, यानी ट्रांसफर फ़ंक्शन। यह मामला है, मान लें कि हम अपने सिस्टम में एक एकता आयाम डीसी सिग्नल फ़ीड करते हैं और स्थिर-राज्य प्रतिक्रिया के आयाम को देखते हैं। खैर, एक साथ दो लगातार 16-टैप संकेतों को हल करें और आपको एक क्षणिक रैंप प्राप्त होता है, जिसके बाद एक स्थिर राज्य आउटपुट होता है जो आयाम का डीसी सिग्नल होता है (चेक-यह-आउट!) 16। इस मामले में गैर-स्केलिंग विश्लेषण की हमारी परिभाषा अन्यथा की तुलना में अधिक समझ में आती है।

दिन के अंत में, यह वह सब है जिसके बारे में आप प्रतिनिधित्व करने की कोशिश कर रहे हैं। डीएफटी की इस प्रणाली-केंद्रित परिभाषा पर विचार करने के कई कारण हैं।

1(एन)


शानदार जवाब, धन्यवाद! मैंने user5108_Dan के उत्तर को समझ के लिए चुना है, लेकिन आपके उत्तर ने निश्चित रूप से सर्वोत्तम अंतर्ज्ञान प्रदान करने में मदद की है।
bryhoyt

7

दरअसल, स्केल कारकों को लगाने के 3 अलग-अलग तरीके विभिन्न और विभिन्न एफएफटी / आईएफएफटी कार्यान्वयनों में आम हैं: 1.0 फॉरवर्ड और 1.0 / एन बैक, 1.0 / एन फॉरवर्ड और 1.0 बैक, और 1.0 / स्क्वेयर (एन) आगे और पीछे दोनों।

ये 3 स्केलिंग बदलाव सभी एक IFFT (FFT (x)) राउंड ट्रिप की अनुमति देते हैं, जेनेरिक अनकल्ड पाप () और कॉस () ट्वील्ड कारकों के लिए ट्रिगर फ़ंक्शन का उपयोग करते हुए, एक पहचान परिवर्तन बनाते हैं।

ध्यान दें कि आगे FFT पर sinusoidal परिमाण को संरक्षित करने से कुल ऊर्जा (पार्सल के प्रमेय के रूप में) संरक्षित नहीं होती है। जिसे आप पसंद करते हैं उसे चुनें।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.