साइन लहर की FFT उम्मीद के मुताबिक नहीं आ रही है यानी सिंगल पॉइंट


14

सियान भूखंड 50 हर्ट्ज का एक स्पेक्ट्रम है, और मैजेंटा एक 50.1 हर्ट साइन लहर (आयाम 0.7 है)। दोनों को 1024 नमूनों / एस पर नमूना लिया गया है। मैंने इस स्पेक्ट्रम को पाने के लिए 1024 पॉइंट FFT का प्रदर्शन किया।

केवल 50 हर्ट्ज स्पेक्ट्रम ही एक मूल्य क्यों है? ५०.१ हर्ट्ज के अलावा ५०.१ हर्टज़िन में अन्य आवृत्तियाँ क्यों होती हैं; ये नई फ्रीक्वेंसी कहाँ से आती हैं?

मैंने 50.1 हर्ट्ज सिग्नल पर कोई गैर-रेखीय प्रसंस्करण नहीं किया! इसके अलावा 50.1 हर्ट्ज का अधिकतम छोटा आयाम प्रतीत होता है, अर्थात यह 0.7 नहीं है, जब वास्तव में मैंने जो तरंग उत्पन्न की है उसमें 0.7 का आयाम है।

ऐसा क्यों है?

दो स्पेक्ट्रा, क्रमशः 50 हर्ट्ज और 50.1 हर्ट्ज के लिए MATALB कमांड fft () द्वारा प्राप्त किया गया;


क्या आप इस भूखंड का उत्पादन करने के लिए उपयोग किए गए कोड को पोस्ट कर सकते हैं? मेरा सबसे अच्छा अनुमान है, ऐसा इसलिए है क्योंकि आपके सिग्नल एक साथ इतने करीब हैं कि fft उन्हें ठीक से हल नहीं कर सकता है। कि, या कुछ वर्णक्रमीय smearing क्योंकि नमूने आवृत्तियों के साथ लाइन नहीं है।
टॉम केली

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

कृपया मुझे पता चल सकता है कि 50Hz के निशान पर आप अपने स्पाइक को हासिल करने में सक्षम होने के लिए क्या
कहते हैं

समस्या क्या है और इसे कैसे ठीक किया जाए, इसके विस्तृत विवरण के लिए यह उत्तर देखें ।
दिलीप सरवटे

जवाबों:


14

Ac Matt का जवाब पहले से ही यहाँ की समस्या पर एक दृष्टिकोण देता है: DFT अंतर्निहित समय-समय पर और आवृत्ति डोमेन दोनों में है ( यह प्रश्न देखें )। आपके मापदंडों से हम गणना कर सकते हैं कि आपकी अवलोकन अवधि 1 एस है। इसका मतलब है कि आप एक 50 हर्ट्ज टोन के 50 अवधियों का निरीक्षण करते हैं। समय-समय पर विस्तारित कि अवलोकन अंतराल हमेशा एक प्रतीत होता है बिना साइन लहर में परिणाम देगा। यदि आप 50.1 हर्ट्ज टोन लेते हैं, तो आप 50.1 अवधियों को एक दोलन में बदल रहे हैं। समय-समय पर उस संकेत का विस्तार करने से चरण की छलांग होगी जो अतिरिक्त वर्णक्रमीय सहायक पैदा करेगा।

रों/एनडीएफटी=1024हर्ट्ज/1024=1हर्ट्ज

ऊपर वर्णित दोनों प्रभाव आपके द्वारा देखे जा रहे स्पेक्ट्रम में योगदान करते हैं।


1
यह समझ आता है। लेकिन सिर्फ अधिक स्पष्ट वर्णक्रमीय रिसाव होने के लिए जिसे आपने वर्णित किया है, स्पेक्ट्रा के अवलोकन के लिए उपकरण (एफएफटी) के साथ एक समस्या है। इसका संकेत में कोई दोष नहीं है। इसका मतलब है कि अगर मैं 50.1 हर्ट्ज का ऑडियो सिग्नल 'सुन' रहा हूं, तो यह मेरे कानों को एक टोन के रूप में दिखाई देगा, न कि किसी प्रकार के 'शोर' के रूप में। क्या मैं सही हू?
gpuguy

1
आप बिल्कुल सही कह रहे है। यह दर्शाता है कि डीएफटी वास्तव में इसे सही ढंग से व्याख्या करने में सक्षम होने के लिए यह समझना कितना महत्वपूर्ण है। एक विचार के रूप में: एक वास्तविक कार्यान्वयन में आप "क्या" सुनेंगे, यह इस बात पर भी निर्भर करता है कि आप असतत को एनालॉग सिग्नल में कैसे परिवर्तित कर रहे हैं।
देवेग

11

यह साइन सिग्नल को रौंदने या विंडो करने का प्रभाव है। आपको इस तरह से काट-छाँट करने की ज़रूरत है कि यदि आप स्थानांतरित किए गए सिग्नल को काट-छाँट में जोड़ते हैं, तो यह अभी भी मूल साइन लहर होगी।


6

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

50.1 हर्ट्ज आपके एफएफटी के 1 सेकंड विंडो में बिल्कुल आवधिक नहीं है।

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

चूँकि कुल ऊर्जा FFT ट्रांसफ़ॉर्म (Parseval'a theorem) द्वारा संरक्षित है, इसलिए "लीकेज" डिब्बे में ऊर्जा पीक बिन से दूर ले जाती है। इस प्रकार शिखर बिन का परिमाण कम होना चाहिए।


5

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

अजगर उदाहरण के लिए https://gist.github.com/endolith/236567 देखें :

# Sampling rate
fs = 128 # Hz

# Time is from 0 to 1 seconds, but leave off the endpoint, so that 1.0 seconds is the first sample of the *next* chunk
length = 1 # second
N = fs * length
t = linspace(0, length, num = N, endpoint = False)

# Generate a sinusoid at frequency f
f = 10 # Hz
a = cos(2 * pi * f * t)

# Use FFT to get the amplitude of the spectrum
ampl = 1/N * abs(fft(a))

देखें कि निरंतर तरंग बनाने के लिए सिग्नल की दो प्रतियां एक साथ कैसे समाप्त होती हैं?

यहाँ छवि विवरण दर्ज करें

जब ऐसा होता है, तो एफएफटी ऊर्जा पूरी तरह से एक बिन में निहित होती है:

यहाँ छवि विवरण दर्ज करें


1
मुझे ओपी जैसी ही समस्या थी। इसे समापन बिंदु = फ़्लैग फ़्लैग की स्थापना के लिए धन्यवाद दिया गया था। मैंने सोचा था कि डिफ़ॉल्ट रूप से लाइन्सस्पेस (बंद, खुला) है लेकिन यह निकला (बंद, बंद) है। मुझे आपके कोड के लिए बग धन्यवाद मिला।
ट्रिस्मेगिस्टोस

-1

यह स्पेक्ट्रल रिसाव और वाइंडिंग के कारण होता है। आदर्श प्रतिक्रिया अर्थात आवेग क्रिया सतत समय साइन वेव के लिए है। जब आप डिजिटल कंप्यूटर में असतत साइन लहर का डीएफटी लेते हैं, तो आप मूल रूप से विंडो और सैंपल साइन के फूरियर ट्रांसफॉर्म को ले रहे हैं और फिर इसे आवृत्ति डोमेन में नमूना ले रहे हैं। यह वर्णक्रमीय रिसाव का कारण बनता है। देखें: http://w.astro.berkeley.edu/~jrg/ngst/fft/leakage.html

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