दिलचस्प पोस्ट
जावा में 2 एक्सएमएल दस्तावेजों की तुलना करने का सर्वोत्तम तरीका सी # निर्माता निष्पादन आदेश Asp.net MVC मॉडलस्टेट। क्लीअर विंडोज़ कार्य अनुसूचक के साथ एक बैच फ़ाइल चलाएं मैं एक एसईएल चयन में अगर … I आत्म-इनकॉल्विंग समारोह से पहले सेमीकोलन? डिवाइस पर SQLite डेटाबेस का स्थान सीएसएस @ फ़ॉन्ट-चेहरे फ़ायरफ़ॉक्स के साथ काम नहीं कर रहा है, लेकिन क्रोम और आईई के साथ काम करना पैराशॉट ऑब्जेक्ट के लिए मान प्रकार सरणी को परिवर्तित नहीं किया जा सकता पायथन मेमोइंग / आस्थगित खोज संपत्ति डेकोरेटर एकाधिक क्वेरी समान तालिका लेकिन विभिन्न कॉलम में mysql मैं रेडियोबूटन बाइंडिंग कोड को कैसे कम कर सकता हूं? एक उपयोगकर्ता और SQL सर्वर में एक लॉगिन के बीच का अंतर जावा में BigDecimal का वर्गमूल फॉरमेट नंबर फिक्स्ड चौड़ाई के साथ, अग्रणी शून्य के साथ

समझना Matlab FFT उदाहरण

मैं matlab और FFT के लिए नया हूँ और Matlab FFT उदाहरण को समझना चाहता हूँ। अभी के लिए मुझे दो मुख्य प्रश्न हैं:

1) एक्स-अक्ष (आवृत्ति) 500 में क्यों खत्म हो जाती है? मुझे कैसे पता चलेगा कि अधिक आवृत्तियों नहीं हैं या क्या वे सिर्फ नजरअंदाज कर रहे हैं?

2) मुझे कैसे पता चलेगा कि आवृत्तियों 0 से 500 के बीच हैं? क्या एफएफटी मुझे नहीं बताए, जिसमें आवृत्तियों की सीमाएं हैं? क्या एफएफटी केवल आवृत्ति के बिना आयाम मान वापस करता है?

किसी भी संकेत के लिए धन्यवाद!


प्रश्न में उदाहरण:

1000 हर्ट्ज पर आंकड़ों पर गौर करें। आयाम 0.7 और 120 हर्ट्ज के एक 50 हर्ट्ज sinusoid युक्त आयाम 1 आयाम के sinusoid और कुछ शून्य मतलब यादृच्छिक शोर के साथ भ्रष्ट:

Fs = 1000; % Sampling frequency T = 1/Fs; % Sample time L = 1000; % Length of signal t = (0:L-1)*T; % Time vector % Sum of a 50 Hz sinusoid and a 120 Hz sinusoid x = 0.7*sin(2*pi*50*t) + sin(2*pi*120*t); y = x + 2*randn(size(t)); % Sinusoids plus noise plot(Fs*t(1:50),y(1:50)) title('Signal Corrupted with Zero-Mean Random Noise') xlabel('time (milliseconds)') 

समय क्षेत्र

आवृत्ति डोमेन में परिवर्तित होने पर, शोर संकेत के असतत फूरियर ट्रांसफ़ॉर्मेशन को फास्ट फूरियर ट्रांस्फ़ॉर्म (एफएफटी) लेते हुए पाया जाता है:

 NFFT = 2^nextpow2(L); % Next power of 2 from length of y Y = fft(y,NFFT)/L; f = Fs/2*linspace(0,1,NFFT/2+1); % Plot single-sided amplitude spectrum. plot(f,2*abs(Y(1:NFFT/2+1))) title('Single-Sided Amplitude Spectrum of y(t)') xlabel('Frequency (Hz)') ylabel('|Y(f)|') 

आवृत्ति डोमेन

वेब के समाधान से एकत्रित समाधान "समझना Matlab FFT उदाहरण"

1) एक्स-अक्ष (आवृत्ति) 500 में क्यों खत्म हो जाती है? मुझे कैसे पता चलेगा कि अधिक आवृत्तियों नहीं हैं या क्या वे सिर्फ नजरअंदाज कर रहे हैं?

यह 500 हर्ट्ज पर समाप्त होता है क्योंकि 1000Hz पर नमूना लेने के बाद यह संकेत की न्यक्विस्ट आवृत्ति है मठक के उदाहरण में इस रेखा को देखें:

 f = Fs/2*linspace(0,1,NFFT/2+1); 

दूसरी साजिश की आवृत्ति अक्ष 0 से एफएस / 2 या आधे नमूना आवृत्ति से होती है। Nyquist आवृत्ति हमेशा नमूना आवृत्ति आधा है, क्योंकि उस पर, aliasing होता है: अलियाज़िंग चित्रण

सिग्नल अपने आप पर वापस "गुना" होता है, और 500 हर्ट्ज पर या उसके नीचे कुछ आवृत्ति दिखाई देता है।

2) मैं कैसे जानता हूं कि आवृत्तियों 0 से 500 के बीच हैं? क्या एफएफटी मुझे नहीं बताए, जिसमें आवृत्तियों की सीमाएं हैं?

ऊपर वर्णित "तह" के कारण (Nyquist आवृत्ति को "फेल्डिंग आवृत्ति" के रूप में भी जाना जाता है), यह 500 हर्ट्ज से अधिक आवृत्तियों के लिए शारीरिक रूप से असंभव है, जो कि एफएफटी में दिखाई देता है; उच्च आवृत्तियों वापस "गुना" और कम आवृत्तियों के रूप में दिखाई देगा।

क्या एफएफटी केवल आवृत्ति के बिना आयाम मान वापस करता है?

हां, MATLAB FFT फ़ंक्शन केवल एम्प्लीटिड के एक वेक्टर को देता है हालांकि, वे उस आवृत्ति बिंदुओं को मैप करते हैं जो आप इसे पास करते हैं।

मुझे बताएं कि स्पष्टीकरण की क्या आवश्यकता है, इसलिए मैं आपको आगे मदद कर सकता हूं।

यहां कुछ गलत धारणाएं हैं

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

एफएफएफ आवृत्तियों के बिना आयाम देता है क्योंकि फ़्रीक्वेंसी केवल एफएफटी की लंबाई पर निर्भर करती है, बल्कि डेटा की नमूना दर पर भी निर्भर करती है, जो कि एफएफटी का हिस्सा नहीं है या यह इनपुट है। आप किसी भी नमूना दर पर समान लंबाई FFT डेटा फ़ीड कर सकते हैं, इस प्रकार इस प्रकार से किसी भी श्रेणी के आवृत्तियों को प्राप्त करें।

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

ऐसा लगता है कि आपको कुछ पृष्ठभूमि पढ़ने की आवश्यकता है जो एक FFT है (उदाहरण के लिए http://en.wikipedia.org/wiki/FFT )। लेकिन अपने प्रश्नों का उत्तर देने के लिए:

एक्स-अक्ष (आवृत्ति) 500 में क्यों खत्म हो जाती है?

क्योंकि इनपुट वेक्टर लंबाई 1000 है। सामान्य तौर पर, लंबाई- N इनपुट तरफ़ के एफएफटी के परिणामस्वरूप एक लम्बाई- N आउटपुट वेक्टर होगा। यदि इनपुट तरंग असली है, तो आउटपुट सममित होगा, इसलिए पहले 501 अंक पर्याप्त हैं।

संपादित करें: (मैंने ध्यान नहीं दिया कि उदाहरण में समय-डोमेन वेक्टर में गद्देदार है।)

आवृत्ति 500 ​​हर्ट्ज तक जाती है क्योंकि टाइम-डोमेन तरंग को 1 किलोहर्ट्ज़ का नमूना-दर घोषित किया जाता है Nyquist नमूना प्रमेय यह निर्धारित करता है कि नमूना दर fs साथ एक संकेत fs/2 अधिकतम बैंडविड्थ के साथ एक (वास्तविक) संकेत का समर्थन कर सकता है।

मैं कैसे जानता हूं कि आवृत्तियों 0 से 500 के बीच हैं?

ऊपर देखो।

क्या एफएफटी मुझे नहीं बताए, जिसमें आवृत्तियों की सीमाएं हैं?

नहीं।

क्या एफएफटी केवल आवृत्ति के बिना आयाम मान वापस करता है?

एफएफटी प्रत्येक आवृत्ति बिन के लिए केवल आयाम (और चरण) निर्दिष्ट करता है

आपका एक्स-एक्सिस केवल 500 हर्ट्ज तक के लिए आवृत्तियों को प्लॉट करता है, इसका कारण यह है कि आपका कमान स्टेटमेंट 'एफ = एफएस / 2 * लिंक्सपैस (0,1, एनएफएफटी / 2 + 1);' । आपका एफ 1000 है। इसलिए जब आप इसे 2 से विभाजित करते हैं और फिर 0 से 1 तक के मानों से गुणा करते हैं तो यह एनएफ़टीटी / 2 + 1 लंबाई की एक सदिश देता है। इस सदिश में 0 से एफएस / 2 (यानी 500 हर्ट्ज) तक के बराबर अंतर आवृत्ति मूल्य हैं। चूंकि आप ' प्लॉट (च, 2 * एब (वाई (1 (एनएएफटीटी / 2 + 1)) ' कमांड का उपयोग करते हुए प्लॉट करते हैं, आपकी एक्स-एक्सिस की सीमा 500 हर्ट्ज है