यदि आवृत्ति रिज़ॉल्यूशन ठीक है, तो मुझे शून्य पैडिंग के बाद डीएफटी में आवृत्ति रिसाव क्यों होता है?


12

आइए इस उदाहरण पर विचार करें:

Fs=1000; 
Ns=500;
t=0:1/Fs:(Ns-1)*1/Fs;
f1=10;
f2=400;
x=5+5*sin(2*pi*f1*t)+2*sin(2*pi*f2*t);
X=fft(x);

इस परिदृश्य में, आवृत्ति रिज़ॉल्यूशन 2 है, और सभी आवृत्ति घटकों को सही तरीके से कैप्चर किया गया है। हालांकि, अगर मैं ऐसा करता हूं:

  X=fft(x,1000);

आवृत्ति संकल्प 1 है, लेकिन एक वर्णक्रमीय रिसाव है। इसी तरह का प्रभाव यहां देखा जाता है । यह मुझे लगता है, कि फूरियर दोनों खिड़कियों के रूपांतरण (लंबाई 500 के साथ, और लंबाई 1000 के साथ एक) सिग्नल में प्रस्तुत की जाने वाली आवृत्तियों पर शून्य है, इसलिए मैं यह नहीं देखता कि रिसाव क्यों होगा?


शून्य-पेडिंग स्पष्ट वर्णक्रमीय रिसाव को कम नहीं करेगा, लेकिन केवल वर्णक्रमीय रिसाव के धक्कों को और अधिक चिकनी बना देगा।
रॉबर्ट ब्रिस्टो-जॉनसन

जवाबों:


18

इस घटना का वर्णक्रमीय रिसाव से कोई लेना-देना नहीं है। आप जो देख रहे हैं, वह शून्य पैडिंग का प्रभाव है। नमूने के एक नंबर को देखते हुए , वहाँ एक अधिकतम संभव है आवृत्ति संकल्प कि प्राप्त किया जा सकता:NΔ Δf

Δf=fsN

आपके मामले में बिल्कुल । यदि आप अपने सिग्नल को शून्य-पैड करते हैं, तो पुनर्प्राप्त करने के लिए कोई अतिरिक्त जानकारी नहीं है - आप केवल आवृत्ति रिक्ति को कम करेंगे ।Δf2Hz

ऊपर दिए गए उदाहरण में, जब आप N को 1000 तक बढ़ाते हैं, तो आपको 1 की आवृत्ति रिक्ति मिलती है1Hz । सभी अतिरिक्त मनाया नमूने महज एक प्रक्षेप, खिड़की समारोह के द्वारा किया जाता है (sinc अपने मामले में)। आप विंडो स्पेक्ट्रम के साइड-लॉब्स का अवलोकन करना शुरू कर देंगे। जब से तुम परोक्ष एक आयताकार खिड़की के पास अपने संकेत गुणा, इस के साथ अपने संकेत के वर्णक्रम (दो डिराक के + डीसी) के घुमाव के में परिणाम होगाsinc समारोह।


sincsinc

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

sinc0sinc


N=1000N=10000

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

और एक ज़ूम किया गया भाग:

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

ध्यान देने योग्य बातें:

  • N=500

  • हम एफएफटी शोर का भी बहुत नीचे से निरीक्षण कर सकते हैं।

  • N=10000sinc


और जाहिर है कि कोड परिणामों को पुन: पेश करने के लिए:

Fs=1000; 
Ns=500;
Ns2=1000;
Ns3=10000;
t=0:1/Fs:(Ns-1)*1/Fs;
f1=10;
f2=400;
x=5+5*sin(2*pi*f1*t)+2*sin(2*pi*f2*t);

X1 = abs(fft(x))/length(x);
X2 = abs(fft(x, Ns2))/Ns;
X3 = abs(fft(x, Ns3))/Ns;

F1 = 0:Fs/Ns:Fs-Fs/Ns;
F2 = 0:Fs/Ns2:Fs-Fs/Ns2;
F3 = 0:Fs/Ns3:Fs-Fs/Ns3;

plot(F1, 20*log10(X1))
hold on
plot(F2, 20*log10(X2))
plot(F3, 20*log10(X3))
xlim([0, Fs/2])
grid on
legend({'N=500', 'N=1000', 'N=10000'})

1
बहुत पूरा जवाब +1। "[...] आप केवल आवृत्ति रिक्ति में वृद्धि करेंगे।" यह घट जाना चाहिए मुझे लगता है।
मैट एल।

2

वर्णक्रमीय रिसाव आमतौर पर दूसरे डोमेन (टी या आपके मामले में समय) में आयताकार विंडोिंग के सिनस कनवल्शन प्रभाव या विरूपण साक्ष्य के लिए एक और नाम है। और शून्य पैडिंग एक लंबे एफएफटी के लिए एक आयताकार खिड़की (जो आपका मूल गैर-शून्य-पैड डेटा है) जोड़कर किया जाता है।

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


1

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

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

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