Matlab

2012-08-06 18 views
5

में नमूने का सामान्य वितरण ग्राफ बनाएं मेरे पास 100 नमूना संख्याएं हैं, और मुझे मैटलैब में उनके सामान्य वितरण वक्र को आकर्षित करने की आवश्यकता है।Matlab

इन नमूने वाले डेटा का औसत और मानक विचलन आसानी से गणना की जा सकती है, लेकिन क्या कोई ऐसा कार्य है जो सामान्य वितरण को प्लॉट करता है?

उत्तर

7

आप सांख्यिकी टूलबॉक्स के लिए उपयोग किया है, तो समारोह histfit क्या मुझे तुम्हारी जरूरत है लगता है:

>> x = randn(10000,1); 
>> histfit(x) 

Normal distribution plot

बस hist कमांड के साथ की तरह

, आप डिब्बे की संख्या भी निर्दिष्ट कर सकते हैं, और आप यह भी निर्दिष्ट कर सकते हैं कि कौन सा वितरण उपयोग किया जाता है (डिफ़ॉल्ट रूप से, यह है एक सामान्य वितरण)।

यदि आपके पास सांख्यिकी टूलबॉक्स नहीं है, तो आप @Gunther और @learnvst के उत्तरों के संयोजन का उपयोग करके एक समान प्रभाव को पुन: उत्पन्न कर सकते हैं।

+2

+1 अच्छा, ठीक है ओपी –

+0

woow के लिए क्या देख रहा है। मैं बिल्कुल इसकी तलाश में था। धन्यवाद :) – ManiAm

5

उपयोग hist:

enter image description here

तुम भी आकर्षित करने के लिए डिब्बे की संख्या निर्दिष्ट कर सकते हैं, जैसे::

hist(data,5) 

hist(data) 

यह अपने डेटा की एक हिस्टोग्राम साजिश ड्रॉ

यदि आप केवलपरिणाम खींचना चाहते हैं, यह अपने आप का उपयोग कर बनाने के लिए:

mu=mean(data); 
sg=std(data); 
x=linspace(mu-4*sg,mu+4*sg,200); 
pdfx=1/sqrt(2*pi)/sg*exp(-(x-mu).^2/(2*sg^2)); 
plot(x,pdfx); 

आप शायद पिछले hist भूखंड पर इस उपरिशायी कर सकते हैं (मुझे लगता है कि आप पहली बार तथापि बातें पैमाने पर करने की जरूरत है, पीडीएफ रेंज 0-1 में है, और हिस्टोग्राम में है सीमा: प्रति बिन तत्वों की संख्या)।

4

यदि आप अपने डेटा के लिए गॉसियन वितरण आकर्षित करना चाहते हैं, तो आप अपने डेटा सेट से गणना की गई औसत और मानक विचलन मानों को प्रतिस्थापित करके निम्नलिखित कोड का उपयोग कर सकते हैं।

STD = 1; 
MEAN = 2; 
x = -4:0.1:4; 
f = ( 1/(STD*sqrt(2*pi)) ) * exp(-0.5*((x-MEAN)/STD).^2 ); 

hold on; plot (x,f); 

इस उदाहरण में सरणी x अपनी वितरण की xaxis है, इसलिए जो कुछ भी सीमा और नमूना घनत्व आपके पास करने के लिए बदल रहा है।

यदि आप सिग्नल प्रोसेसिंग टूलबॉक्स की सहायता के बिना अपने गॉसियन को अपने डेटा पर फिट करना चाहते हैं, तो निम्न कोड सही स्केलिंग के साथ ऐसी साजिश खींच लेगा। बस अपने डेटा के साथ y को प्रतिस्थापित करें।

y = randn(1000,1) + 2; 
x = -4:0.1:6; 

n = hist(y,x); 

bar (x,n); 

MEAN = mean(y); 
STD = sqrt(mean((y - MEAN).^2)); 


f = ( 1/(STD*sqrt(2*pi)) ) * exp(-0.5*((x-MEAN)/STD).^2 ); 
f = f*sum(n)/sum(f); 

hold on; plot (x,f, 'r', 'LineWidth', 2); 

enter image description here