फूरियर ट्रांसफॉर्म लेने से पहले मुझे सिग्नल को शून्य-पैड क्यों करना चाहिए?


77

पिछले प्रश्न के उत्तर में , यह कहा गया था कि एक होना चाहिए

इनपुट-संकेतों को शून्य-पैड करें (अंत में शून्य जोड़ें ताकि लहर का कम से कम आधा "रिक्त" हो)

इसका क्या कारण है?


यह इस बात पर निर्भर करता है कि आप क्या कर रहे हैं। यह मेरे उत्तर पर टिप्पणी हो सकती है। मैंने इसमें कुछ स्पष्टीकरण जोड़ा।
एंडोलिथ

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

9
वैसे यह एक बहुत ही सामान्य प्रश्न है। तुम कुछ एक शक्ति-की-2, आप पैड शून्य कर सकते हैं परिपत्र बनाने के लिए बदलना गैर परिपत्र की तरह व्यवहार को बदलने बनाने के लिए पैड शून्य कर सकते हैं, तो आप यह कर सकते हैं एक संकेत resample करने, आवृत्ति संकल्प, आदि आदि बदलने के लिए
endolith

जवाबों:


82

जीरो पैडिंग एक व्यक्ति को लंबे एफएफटी का उपयोग करने की अनुमति देता है, जो एक लंबे एफएफटी परिणाम वेक्टर का उत्पादन करेगा।

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

यह बिना किसी प्रक्षेप के प्लॉट किए जाने पर एक आकर्षक दिखने वाले स्पेक्ट्रम का परिणाम हो सकता है।

यद्यपि यह प्रक्षेप हल करने में मदद नहीं करेगा और / या आस-पास या आस-पास की आवृत्तियों के बीच / या के संकल्प के साथ मदद करेगा, यह एकल पृथक आवृत्ति के चरम को दृष्टिगत रूप से हल करना आसान बना सकता है जिसमें स्पेक्ट्रम में कोई महत्वपूर्ण आसन्न संकेत या शोर नहीं है। । सांख्यिकीय रूप से, एफएफटी परिणाम डिब्बे का उच्च घनत्व संभवतः यह अधिक संभावना बना देगा कि चोटी परिमाण बिन एक यादृच्छिक पृथक इनपुट आवृत्ति साइनसॉइड की आवृत्ति के करीब है, और आगे प्रक्षेप (परवलयिक, et.al.) के बिना।

लेकिन, अनिवार्य रूप से, डीएफटी / एफएफटी से पहले शून्य पैडिंग बड़ी संख्या में अंकों को प्रक्षेपित करने का एक कम्प्यूटेशनल रूप से कुशल तरीका है।

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


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

4
@ जेसन आर: दरअसल, वे दोनों सर्कुलर कनविक्शन हैं। एक सामान्य (नॉन-प्रून) एफएफटी सभी गुणा करता है और परिणाम के हिस्से के चारों ओर लपेटता है। यह सिर्फ इतना है कि पर्याप्त रूप से शून्य-गद्देदार मामले में, उन सभी गुणा और जोड़ मूल्य शून्य के होते हैं, इसलिए कोई भी उस चक्र के चारों ओर गणना और लिपटे हुए कुछ भी परवाह नहीं करता है।
hotpaw2

9
वास्तव में; दो संकेतों के डीएफटी के गुणन हमेशा परिपत्र संचलन को लागू करते हैं। मुझे इसे अलग-अलग शब्दों में देना चाहिए: आप यह सुनिश्चित करने के लिए एक संकेत के अंत में शून्य सेट करते हैं कि परिणाम उन्हें परिपत्र रूप से समझाने से प्राप्त होता है, जैसा कि आप प्राप्त करते हैं, यदि आप रैखिक रूप से उन्हें हल करते हैं (यह मानते हुए कि रैखिक रूपांतरण आप चाहते हैं, जो है, वही है आमतौर पर)।
जेसन आर

27

आपके समय-डोमेन सिग्नल को शून्य पैड करने का निर्णय लेने से पहले कुछ बातों पर विचार करना होगा। आपको सिग्नल को ज़ीरो पैड करने की ज़रूरत नहीं है!

1) फ़्रीक्वेंसी डोमेन में बेहतर रिज़ॉल्यूशन पाने के लिए टाइम-डोमेन डेटा (जीरो पैडिंग नहीं) को लंबा करें।

2) अपने समय-डोमेन सिग्नल की लंबाई (जीरो पैडिंग) से परे एफएफटी अंकों की संख्या बढ़ाएं यदि आप एफएफटी डिब्बे की बेहतर परिभाषा देखना चाहते हैं, हालांकि यह आपको कोई और सच्चा समाधान नहीं देता है। आप एफएफटी अंक के 2 नंबर की शक्ति प्राप्त करने के लिए पैड भी कर सकते हैं।

3) जब एफएफटी अंक (पिछले बिंदु में) के साथ फ़िडलिंग करते हैं, तो सुनिश्चित करें कि आपके आवृत्ति बिंदु समाप्त हो जाते हैं जहां आप उन्हें चाहते हैं। अंकों का अंतर , जहां नमूना आवृत्ति है और FFT अंकों की संख्या है।f s Nfs/NfsN

Http://www.bitweenie.com/listings/fft-zero-padding/ पर इन बिंदुओं को दर्शाते हुए कुछ अच्छे आंकड़े हैं

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


8

डीएफटी से पहले सामान्य शून्य-पेडिंग में, रूपांतरित डोमेन में अधिक बार प्रक्षेप या नमूने के बराबर होता है।

यहां एक त्वरित दृश्य है कि विपरीत कैसे काम करता है। यदि आप उच्च दर पर समय में एक बैंडलेड सिग्नल का नमूना लेते हैं, तो आपको अधिक 'स्क्वैश' स्पेक्ट्रम मिलता है, अर्थात दोनों सिरों पर अधिक शून्य वाला स्पेक्ट्रम। दूसरे शब्दों में, आप DFT'ing के बाद आवृत्ति में शून्य-गद्दी द्वारा समय में अधिक नमूने प्राप्त कर सकते हैं, और फिर शून्य-गद्देदार परिणाम IDFT'ing कर सकते हैं।

शून्य-पैडिंग समय में होने पर एक ही प्रभाव रिवर्स में होता है। यह सब इसलिए है क्योंकि सही सिग्नल का पुनर्निर्माण तब तक संभव है जब तक कि सिग्नल बैंडलिफ्टेड हो और कम से कम Nyquist दर पर सैंपल किया गया हो।

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


6

यदि किसी को विंडो-डोमेन के स्पेक्ट्रम में कोई दिलचस्पी है, जिसका उपयोग समय-डोमेन नमूने को अलग करने के लिए किया जाता है, तो शून्य-पेडिंग विंडोिंग फ़ंक्शन के आवृत्ति संकल्प को बढ़ाएगा।

x(t)w(t)w(t)X(f)W(f)

x(t)X(f), आप चोटी और शून्य क्रॉसिंग के अलावा अन्य स्थानों पर कुछ नमूने देखेंगे, जिसके परिणामस्वरूप स्पेक्ट्रम में सिंक फ़ंक्शन का आकार दिखाई देगा। तो क्या उपयोग शून्य-गद्दी है? यह निश्चित रूप से खिड़की के संकेतों के असतत परिवर्तन की प्रकृति का खुलासा करने में शैक्षिक उपयोग है, जो कि सामान्य मामला है। व्यावहारिक अर्थ में, यह किसी भी मामले में उपयोगी हो सकता है जहां आप एक वाहक लहर पर सवार एक पृथक लिफाफे के वर्णक्रमीय आकार में रुचि रखते हैं।


4

फूरियर रूपांतरण से पहले और बाद में की गई किसी भी प्रक्रिया के आधार पर इसके अलग-अलग कारण हो सकते हैं। सबसे आम कारण किसी भी परिणामी परिवर्तन में अधिक से अधिक आवृत्ति संकल्प प्राप्त करना है। यह कहना है कि, आपके परिवर्तन में उपयोग किए जाने वाले नमूनों की संख्या जितनी अधिक होगी, परिणामी बिजली स्पेक्ट्रम में द्विपद को कम कर देगा। याद रखें: binwidth = sample_frequency / transform_size (अक्सर विंडो का आकार कहा जाता है)। आप इससे कल्पना कर सकते हैं, कि जैसे-जैसे आप अपने ट्रांसफॉर्मेशन का आकार बढ़ाते हैं, वैसे-वैसे कम होता जाता है (= बेहतर फ़्रीक्वेंसी रिज़ॉल्यूशन)। जीरो पैडिंग सिग्नल को नई जानकारी पेश किए बिना ट्रांसफॉर्मेशन साइज बढ़ाने का एक तरीका है।

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

अद्यतन
मैंने यह अच्छी तरह से नहीं समझाया। मुझे इसे बेहतर तरीके से स्पष्ट करना चाहिए था। एक खिड़की के रूपांतरण का उल्लेख करते हुए, वास्तव में आपको कोई 'वास्तविक' अधिक से अधिक आवृत्ति संकल्प नहीं मिलता है, लेकिन विज़ुअलाइज़ेशन उद्देश्यों (आंख के साथ पावर स्पेक्ट्रम को पढ़ने) के लिए यह स्पष्ट परिणाम प्रदान कर सकता है। महत्वपूर्ण नमूने दर का उपयोग करते हुए, प्रत्येक पक्ष पालि एक बिन पर कब्जा कर लेता है, जो कि रेखांकन तकनीक के आधार पर भ्रामक हो सकता है। जीरो पैडिंग एक प्रक्षेपित आवृत्ति स्पेक्ट्रम प्रदान करता है जो अधिक खुलासा हो सकता है। इसके अतिरिक्त, यदि आप आवृत्ति आकलन के लिए एक साधारण चोटी उठाने की विधि का उपयोग कर रहे हैं, तो शून्य पैडिंग का वर्णक्रमीय प्रक्षेप प्रभाव आपको मुख्य लोब के असली शिखर के करीब एक वर्णक्रमीय नमूना देगा। यह लिंक कुछ उपयोगी आरेख प्रदान करता है: http://www.dsprelated.com/dspbooks/sasp/Practical_Zero_Pad.html


9
यह उत्तर सही नहीं है। शून्य-गद्दी आवृत्ति संकल्प में सुधार नहीं करता है; यह केवल छोटे परिवर्तन के आउटपुट के बीच प्रक्षेपित होता है। आप ज़ीरो-पेडिंग के बारे में सोच सकते हैं क्योंकि अधिक आवृत्ति वाले डिब्बे को जोड़ने के लिए एक ही बैंडविड्थ है जैसा कि वे छोटे परिवर्तन के साथ करते हैं; इसलिए, फ़िल्टर बैंक के नजरिए से, उनके पास ओवरलैप होते हैं।
जेसन आर

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

1
@ जेसन आर - आप सही हैं, मेरा जवाब भ्रामक था, मैंने मूल पोस्ट पर ऊपर स्पष्ट करने का प्रयास किया है। मुझे यह नहीं कहना चाहिए कि जीरो पैडिंग आवृत्ति संकल्प को बढ़ाती है।
दान बैरी

2

मैंने पहले अच्छी प्रतिक्रियाओं में इनका उल्लेख नहीं किया था इसलिए मैं शून्य पैडिंग के लिए निम्नलिखित अतिरिक्त महत्वपूर्ण कारण जोड़ूंगा:

मूलांक -2 एल्गोरिदम अधिक कुशल हैं इसलिए 2 की अगली शक्ति (या मूलांक -4 के लिए कुछ मामलों में 4 की शक्ति) पर शून्य पैडिंग, या किसी भी बड़े प्रमुख कारकों से बचने से वास्तविक समय के प्रदर्शन में सुधार हो सकता है। विश्लेषण के लिए एफएफटी का उपयोग करते समय, शून्य पैडिंग अक्सर डीटीएफटी के नमूनों की गणना करने के लिए किया जाता है, जैसे कि एक एफआईआर की आवृत्ति प्रतिक्रिया का निर्धारण: एफएफटी की तुलना करें ([1 1 1 1]) से एफएफटी ([1 1 1 1]] 512) जो freqz ([1 1 1 1]) के समान है।

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