# مباحث متفرقه برنامه نویسی > برنامه نویسی Matlab >  محاسبه چگالی احتمال

## hamidkor

باسلام،

دوستان عزیز ضمن خسته نباشید میخواستم بدونم که اگر بخواهیم چگالی احتمال را واسه یه سری داده محاسبه کنیم از چه دستوری میتوان استفاده نمود؟ درضمن هدف محاسبه چگالی احتمال هر ردیف ماتریسی است که داده های آن متشکل از داده های گسسته بوده و پیوسته نمی باشند. بعنوان مثال ماتریس زیر را درنظر بگیرید. هر سطر از 5 داده ی مجزا تشکیل شده است که کل داده ها از سه کلاس کلی تشکیل شده اند. ماتریس جواب ماتریس b است که ستون های اول، دوم و سوم مربوط به چگالی احتمال اعداد یک دو و سه هستند در هر ردیف.
a= [1
2
3
1
1

2
1
2
3
3

3
2
3
2
1

3
3
1
1
2

1
2
2
1
1


]

b= [0.6
0.2
0.2

0.2
0.4
0.4

0.2
0.4
0.4

0.4
0.2
0.4

0.6
0.4
0


]

----------


## rahnema1

سلام
می تونید از این دو روش استفاده کنید


a1=a';
b=arrayfun(@(v1) hist (a1 (v1:v1 + 4), 1:3)/5,1:5:25,'UniformOutput',false);



b=zeros(5,3);
for i=1:rows(a)
	b(i,:)=hist (a (i,:), 1:3)/5;
end

----------


## hamidkor

> سلام
> می تونید از این دو روش استفاده کنید
> 
> 
> a1=a';
> b=arrayfun(@(v1) hist (a1 (v1:v1 + 4), 1:3)/5,1:5:25,'UniformOutput',false);
> 
> 
> 
> ...


دوست عزیز (*rahnema1*) ضمن تشکر مجدد بابت راهنمایی ارزندتون میخواستم سوال کنم که در کدهای بالا 1:3 نشانگر خود اعداد یک تا سه هستش یا تعداد آنها؟ و اگر نشانگر تعداد آنها است و یا حتی نشانگر خود اعداد در اینحالت برای داده های زیاد این مقادیر بنظر شما چطور می توانند تعیین شوند؟ بحث در مورد داده های صحیح یا اینتیجر هستش. بعنوان مثال داده های زیر را درنظر بگیرید در این حالت در کدهای بالا بجای 1:3 شما چه مقادیری را پیشنهاد می کنید؟
a=[8 7 9 11 ;2 9 7 23;12 34 11 23]

----------


## rahnema1

مثلا می تونید مقادیر یکتای این ماتریس را استخراج کنید:

unique(a)

یا اینکه بین حداکثر یا حداقل ماتریس را در نظر بگیرید:

min(min(a)):max(max(a))

یا مثلا بین 1 و حداکثر ماتریس:

1:max(max(a))

بستگی به کاربرد شما داره

----------


## hamidkor

اگه بخواهیم بدونیم از چند عدد متفاوت تشکیل شده چی؟ عین مثال اولی که از سه عدد متفاوت (1 2 3) تشکیل شده بودند و در مثال دومی هم 8 عدد متفاوت؟

----------


## rahnema1

> اگه بخواهیم بدونیم از چند عدد متفاوت تشکیل شده چی؟ عین مثال اولی که از سه عدد متفاوت (1 2 3) تشکیل شده بودند و در مثال دومی هم 8 عدد متفاوت؟


بر اساس همون unique میشد

numel(unique(a))

----------


## sim-power

دانلود پروژه رایگان تابع چگالی احتمال (PDF) و تابع توزیع تجمعی (CDF) با MATLAB
تابع چگالی احتمال یا PDF که مخفف شده Probabilistic Density Function است از خانواده توزیع یکنواخت پیوسته (Continous Uniform Distribution) است که توزیع آماری را به شکل انتگرالی نمایش می دهد و مقدار تابع غیرمنفی می باشد.  این تابع، احتمال نسبی را برای متغیر تصادفی تشریح می کند. در این پیاده سازی نیز یک سری داده تصادفی داریم که قصد تخمین آن ها با تکیه گاه (Bounded Support) و بی تکیه گاه (Unbounded Support) را داریم. لازم به ذکر است که منظور از تکیه گاه یا Bounded Support مجموعه ای از نقاط است که تابع به ازای آن ها صفر نباشد و برای بی تکیه گاه یا Unbounded Support مجموعه ای از نقاط است که تابع به ازای آن ها صفر باشد. در این پروژه از تابع توزیع تجمعی یا CDF که مخفف شده Cumulative Distribution Function می باشد نیز برای همان داده تصادفی و حالات Bound / Unbound Support استفاده شده است که در خروجی مشاهده شده زیر، می توان آن را مشاهده کرد.سراسر کدهای پروژه را به پارسی کامنت گذاری کرده ایم. یک تابع اصلی به نام gkdeb.m وجود دارد که فایل gkdetest.m با 6 روش مختلف از جمله توزیع با تکیه گاه (Bounded Distribution)، توزیع یکنواخت پیوسته (Continous Uniform Distribution)، توزیع نمایی (Exponentil Distribution)، توزیع لاگ نورمال (Log-Normal Distribution)، توزیع کی دو (Chi-Square Distribution)، توزیع رایلی (Rayleigh Distribution)، به استفاده از تابع gkdeb می پردازد و خروجی با توجه به پارامترهای اولیه تنظیم شده در آن نمایش داده شده است. هر بار نیز حالت Bounded و Unbounded در روش های ذکر شده مقایسه می گردد هم برای بخش PDF و هم برای CDF.

----------

