मैं किसी दिए गए डेटासेट पर विश्लेषण करने के लिए Jtransforms जावा लाइब्रेरी का उपयोग कर रहा हूं।जेट्रांसफॉर्म से पावर स्पेक्ट्रल घनत्व DoubleFFT_1D
980,988,1160,1080,928,1068,1156,1152,1176,1264
मैं jTransforms में DoubleFFT_1D समारोह का उपयोग कर रहा:
डेटा का एक उदाहरण इस प्रकार है। डेटा उत्पादन इस प्रकार है:
10952, -152, 80.052, 379.936, -307.691, 12.734, -224.052, 427.607, -48.308, 81.472
मैं मुसीबत उत्पादन की व्याख्या हो रही है। मैं समझता हूं कि आउटपुट सरणी में पहला तत्व 10 इनपुट (10952) का कुल है। यह
आउटपुट सरणी के अन्य तत्व जिन्हें मैं समझ नहीं पा रहा हूं। आखिरकार, मैं ग्राफ पर इनपुट डेटा के पावर स्पेक्ट्रल घनत्व को प्लॉट करना चाहता हूं और 0 और .5 हर्ट्ज के बीच की रकम पाता हूं।
jTransform कार्यों राज्यों के लिए दस्तावेज़ (जहां एक डेटा सेट है):
public void realForward(double[] a)
एक में परिणाम छोड़ने असली डेटा की -1 डी आगे एफ टी गणना करता है।यदि n तो
a[2*k] = Re[k], 0 <= k < n/2 a[2*k+1] = Im[k], 0 < k < n/2 a[1] = Re[n/2]
भी है अगर n विषम है तो
a[2*k] = Re[k], 0 <= k < (n+1)/2 a[2*k+1] = Im[k], 0 < k< (n-1)/2 a[1] = Im[(n-1)/2]
इस विधि के तत्वों का केवल आधा गणना करता है: आउटपुट डेटा के भौतिक लेआउट इस प्रकार है वास्तविक परिवर्तन दूसरा आधा समरूपता की स्थिति को संतुष्ट करता है। यदि आप पूर्ण वास्तविक आगे रूपांतरण चाहते हैं, तो realForwardFull का उपयोग करें। मूल डेटा वापस पाने के लिए, इस विधि के आउटपुट पर realInverse का उपयोग करें।
पैरामीटर: एक - डेटा
को बदलने के लिए अब उपरोक्त विधि का प्रयोग: (के बाद से अपने डेटा सरणी की लंबाई 10 है, "n भी है" तरीकों का इस्तेमाल किया जाता है)
Re[0] = 10952
Re[1] = 80.052
Re[2] = -307.691
Re[3] = -224.052
Re[4] = -48.308
Re[5] = 12.734
Im[0] = -152
Im[1] = 379.936
Im[2] = 12.734
Im[3] = 427.607
Im[4] = 81.472
तो कुछ प्रश्न: क्या यह आउटपुट सही दिखता है? ऐसा लगता है कि रे [0] 10952 नहीं होना चाहिए जो मूल सरणी में सभी तत्वों का योग है।
लगता उत्पादन की तरह थोड़ा सही किया जाना चाहिए: (मैं गलत कर रहा हूँ?)
Re[0] = 80.052
Re[1] = -307.691
Re[2] = -224.052
Re[3] = -48.308
Re[4] = -152
Im[0] = 379.936
Im[1] = 12.734
Im[2] = 427.607
Im[3] = 81.472
अब निम्न विधि मंच में तैनात का उपयोग कर:
बिन की भयावहता प्राप्त करने के लिए k आप की जरूरत है sqrt(re * re + im * im)
की गणना करें, जहां फिर से, मैं bin k के लिए FFT आउटपुट में वास्तविक और काल्पनिक घटक हैं।
आपके विशेष एफएफटी re[k] = a[2*k] and im[k] = a[2*k+1]
के लिए।
for k in 0 to N/2 - 1
{
spectrum[k] = sqrt(sqr(a[2*k]) + sqr(a[2*k+1]))
}
इस प्रकार:
spectrum[0] = 388.278
spectrum[1] = 307.955
spectrum[2] = 482.75
spectrum[3] = 94.717
कुछ सवाल इसलिए शक्ति स्पेक्ट्रम की गणना करने के। क्या यह डेटा सही दिखता है? क्या मैं सही रास्ते पर हूं?
388.278 at .125 Hz
307.955 at .25 Hz
482.75 at .375 Hz
94.717 at .5 Hz
एम आई रास्ता बंद: इस स्पेक्ट्रम डेटा तो कुछ इस तरह बाहर साजिश चाहेंगे? मेरा लक्ष्य 0 से 5 हर्ट्ज
क्या यह कल से आपके प्रश्न का डुप्लिकेट नहीं है: http://stackoverflow.com/questions/4996747/interpreting-jtransform-fft-results? –
हां। कुछ अनुवर्ती के साथ। लॉग इन करने के बाद, मैं पुराने धागे में हेरफेर करने में असमर्थ था। मेरे खाते में मेरे पुराने प्रश्नों में से कोई भी नहीं (एक संदर्भ सहित) दिखाया गया है। तो मैंने इसे स्थानांतरित कर दिया और कुछ फॉलोअप डेटा जोड़ा। माफ़ कीजिये। मैं भ्रम जोड़ना नहीं चाहता। उपयोगकर्ता से लॉग इन करने के लिए अतिथि से स्टैक ओवरफ्लो में बस परेशानी थी। मैं वास्तव में सहायता के लिए आभारी हूं। मुझे लगता है कि मैं आपकी मदद से प्रगति कर रहा हूं। – Damon
आपके लिए खाता समस्याओं को ठीक करने के लिए मोड से पूछें। इसके अलावा पॉल आर के जवाब को स्वीकार करने और इसे ऊपर उठाने के बारे में चिह्नित करने के बारे में, ऐसा लगता है कि यह आपके लिए बहुत उपयोगी था। – Kev