मुझे DFT / FFT अभिकलन के आउटपुट को समझने में कुछ मदद चाहिए।
मैं एक अनुभवी सॉफ्टवेयर इंजीनियर हूं और कुछ स्मार्टफोन एक्सेलेरोमीटर रीडिंग की व्याख्या करने की आवश्यकता है, जैसे कि प्रमुख आवृत्तियों को खोजना। दुर्भाग्य से, मैं पंद्रह साल पहले अपने अधिकांश कॉलेज ईई कक्षाओं के माध्यम से सोया था, लेकिन मैं पिछले कई दिनों से (थोड़ा लाभ के लिए, जाहिरा तौर पर) डीएफटी और एफएफटी पर पढ़ रहा हूं।
कृपया, "कोई EE क्लास लें" का कोई जवाब नहीं। मैं वास्तव में यह करने की योजना बना रहा हूं कि अगर मेरा नियोक्ता मुझे भुगतान करेगा। :)
तो यहाँ मेरी समस्या है:
मैंने 32 हर्ट्ज पर सिग्नल कैप्चर किया है। यहां 32 बिंदुओं का 1 सेकंड नमूना है, जिसे मैंने एक्सेल में चार्ट किया है।
फिर मुझे कोलंबिया विश्वविद्यालय से जावा में लिखा गया कुछ एफएफटी कोड मिला ( " जावा में विश्वसनीय और तेज़ एफएफटी पर एक पोस्ट में सुझावों का पालन करने के बाद ")।
इस कार्यक्रम का आउटपुट निम्नानुसार है। मेरा मानना है कि यह एक इन-प्लेस एफएफटी चल रहा है, इसलिए यह इनपुट और आउटपुट दोनों के लिए एक ही बफर का फिर से उपयोग करता है।
Before:
Re: [0.887 1.645 2.005 1.069 1.069 0.69 1.046 1.847 0.808 0.617 0.792 1.384 1.782 0.925 0.751 0.858 0.915 1.006 0.985 0.97 1.075 1.183 1.408 1.575 1.556 1.282 1.06 1.061 1.283 1.701 1.101 0.702 ]
Im: [0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 ]
After:
Re: [37.054 1.774 -1.075 1.451 -0.653 -0.253 -1.686 -3.602 0.226 0.374 -0.194 -0.312 -1.432 0.429 0.709 -0.085 0.0090 -0.085 0.709 0.429 -1.432 -0.312 -0.194 0.374 0.226 -3.602 -1.686 -0.253 -0.653 1.451 -1.075 1.774 ]
Im: [0.0 1.474 -0.238 -2.026 -0.22 -0.24 -5.009 -1.398 0.416 -1.251 -0.708 -0.713 0.851 1.882 0.379 0.021 0.0 -0.021 -0.379 -1.882 -0.851 0.713 0.708 1.251 -0.416 1.398 5.009 0.24 0.22 2.026 0.238 -1.474 ]
इसलिए, इस बिंदु पर, मैं उत्पादन के प्रमुख या पूंछ नहीं बना सकता। मैं डीएफटी अवधारणाओं को समझता हूं, जैसे कि वास्तविक भाग घटक कोसाइन तरंगों के आयाम और काल्पनिक भाग घटक साइन तरंगों के आयाम हैं। मैं महान पुस्तक " द साइंटिस्ट एंड इंजीनियर गाइड टू डिजिटल सिग्नल प्रोसेसिंग " से भी इस आरेख का अनुसरण कर सकता हूं :
तो मेरे विशिष्ट प्रश्न हैं:
एफएफटी के आउटपुट से, मैं "सबसे अधिक होने वाली आवृत्तियों" को कैसे खोज सकता हूं? यह मेरे एक्सेलेरोमीटर डेटा के मेरे विश्लेषण का हिस्सा है। क्या मुझे वास्तविक (कोसाइन) या काल्पनिक (साइन) सरणियाँ पढ़नी चाहिए?
मेरे पास समय क्षेत्र में 32-बिंदु इनपुट है। FFT का आउटपुट वास्तविक के लिए 16-तत्व का सरणी और काल्पनिक के लिए 16-तत्व का सरणी नहीं होना चाहिए? कार्यक्रम मुझे वास्तविक और काल्पनिक सरणी क्यों देता है, दोनों आकार 32 के हैं?
पिछले प्रश्न से संबंधित, मैं आउटपुट सरणियों में अनुक्रमणिका को पार्स कैसे करूं? 32 हर्ट्ज पर नमूने लिए गए 32 नमूनों के मेरे इनपुट को देखते हुए, मेरी समझ यह है कि एक 16-तत्व सरणी आउटपुट का सूचकांक समान रूप से 1/2 नमूना दर (32 हर्ट्ज) तक फैला होना चाहिए, इसलिए क्या मैं यह समझने में सही हूं कि प्रत्येक तत्व सरणी का प्रतिनिधित्व करता है (32 हर्ट्ज * 1/2) / 16 = 1 हर्ट्ज?
एफएफटी आउटपुट में नकारात्मक मूल्य क्यों हैं? मैंने सोचा था कि मान एक साइनसोइड के आयाम का प्रतिनिधित्व करते हैं। उदाहरण के लिए, वास्तविक [3] = -1.075 के आउटपुट का मतलब आवृत्ति के कोसाइन तरंग के लिए -1.075 का आयाम होना चाहिए। क्या यह सही है? एक आयाम नकारात्मक कैसे हो सकता है?