मैं एक एफएफटी (scipy.fftpack.fftfreq के माध्यम से लिया गया) में आवृत्ति अक्ष को कैसे डिब्बे या आंशिक डिब्बे के बजाय हर्ट्ज में आवृत्ति में बदलना चाहता हूं।Scipy/Numpy FFT फ्रीक्वेंसी विश्लेषण
मैं FFT का परीक्षण करने के लिए नीचे दिए गए कोड करने के लिए करने की कोशिश की:
t = scipy.linspace(0,120,4000)
acc = lambda t: 10*scipy.sin(2*pi*2.0*t) + 5*scipy.sin(2*pi*8.0*t) + 2*scipy.random.random(len(t))
signal = acc(t)
FFT = abs(scipy.fft(signal))
FFT = scipy.fftpack.fftshift(FFT)
freqs = scipy.fftpack.fftfreq(signal.size)
pylab.plot(freqs,FFT,'x')
pylab.show()
नमूना दर 4000 नमूने/120 सेकंड = 33.34 नमूने/सेकंड होना चाहिए।
सिग्नल में 2.0 हर्ट्ज सिग्नल, एक 8.0 हर्ट्ज सिग्नल, और कुछ यादृच्छिक शोर है।
मैं एफएफटी लेता हूं, आवृत्तियों को पकड़ता हूं, और इसे साजिश देता हूं। संख्याएं सुंदर बकवास हैं। यदि मैं आवृत्तियों को 33.34 (नमूना आवृत्ति) से गुणा करता हूं, तो मुझे लगभग 8 हर्ट्ज और 15 हर्ट्ज पर चोटी मिलती है, जो गलत लगता है (भी, आवृत्तियों को 4 अलग-अलग कारक होना चाहिए, 2 नहीं!)।
क्या मैं यहां गलत क्या कर रहा हूं पर कोई विचार?
इस तरह के एक पूर्ण उत्तर के लिए धन्यवाद। हाय, आपने एफएफटी के बजाय 20 * scipy.log10 (एफएफटी) प्लॉट क्यों चुना? – Archie1986
एचवाईआरई ने आपको डीबी स्केल में वाई अक्ष के साथ एक साजिश प्रदान की, और 20log10 एक परिमाण स्पेक्ट्रम के लिए सही रूपांतरण प्रदान करता है। – OldTinfoil