MATLAB

2010-04-14 12 views
5

में एफएफटी ग्राफ के तहत क्षेत्र की गणना करें वर्तमान में मैंने डेटा के एक सेट का एफएफटी किया है जो मुझे एक्स अक्ष पर आवृत्ति के साथ साजिश देता है और वाई अक्ष पर आयाम देता है। मैं मुझे ऊर्जा देने के लिए ग्राफ के नीचे के क्षेत्र की गणना करना चाहता हूं।MATLAB

मुझे यकीन नहीं है कि इस क्षेत्र को कैसे निर्धारित किया जाए क्योंकि मैं समीकरण के बिना हूं और मैं केवल साजिश के तहत पूरे क्षेत्र की बजाय साजिश का एक निश्चित क्षेत्र चाहता हूं। क्या मैं ऐसा कर सकता हूं?

+0

यह वास्तव में * किसी * ग्राफ के तहत क्षेत्र की गणना करने के बारे में एक सामान्य प्रश्न है, जरूरी नहीं कि एक एफएफटी ग्राफ। आपके द्वारा पहले पैराग्राफ में दी गई प्रेरणा के अलावा, यहां एफएफटी के लिए कुछ भी विशिष्ट नहीं है। मैं शीर्षक और टैग दोनों को संशोधित करने पर विचार करता हूं। –

उत्तर

11

Matlab के साथ संख्यात्मक एकीकरण करने के कई तरीके हैं। यहां एक उदाहरण दिया गया है:

%# create some data 
x = linspace(0,pi/2,100); %# 100 equally spaced points between 0 and pi/2 
y = sin(x); 

%# integrate using trapz, which calculates the area in the trapezoid defined by 
%# x(k),x(k+1),y(k),y(k+1) for k=1:length(x) 
integral = trapz(x,y); 

%# if you only want to integrate part of the data, do 
partialIntegral = trapz(x(10:20),y(10:20)); 

%# show the integrated area 
figure, 
area(x,y); 
hold on, 
area(x(10:20),y(10:20),'FaceColor','red') 
+0

हाय, बहुत बहुत धन्यवाद, लेकिन आपने अपने सुझाव का उपयोग कर डेटा के हिस्से को अंतरित करने का प्रयास किया है। लेकिन Matlab मुझे यह बताना जारी रखें: LENGTH (X) वाई के पहले गैर-सिंगलटन आयाम की लंबाई के बराबर होना चाहिए, मुझे लगता है कि ट्रैक्स केवल समान लंबाई x और y स्वीकार करता है। क्या कोई रास्ता है? धन्यवाद – lytheone

+0

एकीकरण के लिए आवश्यक है कि प्रत्येक एक्स-समन्वय एक वाई-समन्वय के साथ मेल खाता है। यही कारण है कि मैं 'trapz (x (10:20), y (10:20)) लिखता हूं, यानी, मैं y के लिए x के लिए समान मात्रा में अंक लेता हूं। हालांकि, एक्स-पॉइंट्स को समान दूरी पर होने की आवश्यकता नहीं है। यदि आप कुछ वाई-पॉइंट को खत्म करना चाहते हैं, तो आपको संबंधित एक्स-पॉइंट भी छोड़ना चाहिए। – Jonas

3

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

+4

असल में, आपको बिन मानों को योग करने और बिन चौड़ाई से गुणा करने की आवश्यकता है यदि यह 1 नहीं है। यह लगभग, क्या है, क्या है। – Jonas

+0

@ जोनास: अच्छा बिंदु, धन्यवाद - मैं अपना जवाब अपडेट करूंगा। –