توابع آماری در متلب
در دوازدهمین جلسه از آموزش متلب میخواهیم توابع آماری در متلب را بررسی کنیم. توابع آماری برای توصیف ویژگیهای دادهها استفاده میشوند. توابع آماری بسیار وسیع هستند. ما در این جلسه تعدادی از این توابع را در متلب آموزش خواهیم داد. مباحثی که بررسی خواهیم کرد عبارتند از: دستور mean در متلب ، دستور median در متلب ، دستور max در متلب ، دستور min در متلب ، دستور std در متلب ، دستور var در متلب و دستور mode در متلب .
مقدمهای بر توابع آماری در متلب
متلب یک نرمافزار مبتنیبر ریاضیات است. بنابراین، واجب است که با انواع توابع آماده و پایه ریاضی و آماری در متلب آشنا شویم. آموزش توابع را با مثال پیش خواهیم برد. به همین منظور سه ماتریس b ، a و c را به صورت زیر تعریف میکنیم:
>> a = randi(100, 5, 4)
a = 82 10 16 15 91 28 98 43 13 55 96 92 92 96 49 80 64 97 81 96
>> b = randi(15, 5, 4)
b = 10 12 11 13 1 12 1 11 13 6 5 5 15 10 1 15 11 3 2 1
>> c = randi(100, 1, 5)
c = 44 39 77 80 19
دستور max در متلب
اولین دستور از جلسه توابع آماری در متلب دستور max است. دستور max در متلب برای تعیین ماکزیمم یا بزرگترین مقدار در یک ماتریس یا بردار استفاده میشود. برای پیدا کردن بزرگترین مقدار در یک بردار مثل c کافی است بنویسیم:
>> max(c)
ans = 80
مشاهده میکنید که بزرگترین مقدار بردار c، عدد 80 است.
محاسبه ماکزیمم ماتریس در متلب
برای محاسبه بزرگترین مقدار در یک ماتریس مثل a چکار کنیم؟ آیا باز هم میتوانیم از دستور max در متلب استفاده کنیم؟ یعنی اگر مثل قبل بنویسیم max(a) کافی است؟ ببینیم:
>> max(a)
ans = 92 97 98 96
- اگر dim=1 باشد، آنگاه max(a, [], 1) یک بردار سطری شامل بزرگترین مقادیر در هر ستون تولید میکند.
- اگر dim = 2 باشد، آنگاه max(a, [], 2) یک بردار ستونی شامل بزرگترین مقادیر در هر سطر تولید میکند.
دو نکته بالا میگویند که نتیجه max(a, [], 1) و max(a) یکی باید باشند. هردو یک بردار ستونی شامل بزرگترین مقادیر در هر ستون برمیگردانند. ببینیم درست است یا خیر:
>> max(a, [], 1)
ans = 92 97 98 96
مشاهده میکنید که نتیجهها یکسان هستند. همچنین دو نکته بالا میگویند برای اینکه دستور max در متلب را در هر سطر از یک ماتریس مثل a محاسبه کنیم، کافی است بنویسیم:
>> max(a, [], 2)
ans = 82 98 96 96 97
محاسبه ماکزیمم کل ماتریس در متلب
اگر بخواهیم مقدار ماکزیمم در کل ماتریس را به دست بیاوریم چکار کنیم؟ خب دو بار از دستور max استفاده میکنیم!
>> max(max(a))
ans = 98
مشاهده میکنید که خروجی دستور بالا یک عدد است که بزرگترین مقدار در ماتریس a را نشان میدهد. بزرگترین عدد در کل ماتریس a، عدد 98 است!به متلب به شکل زیر نیز میتوانیم بفهمانیم که ماکزیمم در هردو بُعد را بدهد:
>> max(a, [], [1,2])
ans = 98
مشاهده میکنید، به جای اینکه dim را 1 یا 2 در نظر بگیریم، به متلب گفتیم dim را [2, 1] در نظر بگیر. یعنی ماکزیمم را در هر دو بُعد 1 و 2 میخواهیم.
دستور max در متلب به پایان رسید. خب طبیعتا بخش بعدی دستور min در متلب هست. برویم ادامه جلسه توابع آماری در متلب…
دستور min در متلب
دستور min در متلب بسیار شبیه به دستور max است. با این تفاوت که تابع min، کمترین مقدار یا مینیمم را در یک بردار یا ماتریس محاسبه میکند. تمام حرفهایی که در مورد تابع max زدیم برای min نیز صادق هستند. بنابراین ما توضیحات را تکرار نمیکنیم و فقط چند مثال میزنیم. برای محاسبه مینیمم مقدار در بردار c، کافی است بنویسیم:
>> min(c)
ans = 19
برای محاسبه کمترین مقدار در هر ستون از ماتریس a مینویسیم:
>> min(a, [], 1)
ans = 13 10 16 15
یا سادهتر به شکل زیر میتوانیم بنویسیم:
>> min(a)
ans = 13 10 16 15
برای محاسبه کمترین مقدار در هر سطر از ماتریس a مینویسیم:
>> min(a, [], 2)
ans = 10 28 13 49 64
و در نهایت برای محاسبه کمترین مقدار در کل ماتریس a مینویسیم:
>> min(min(a))
ans = 10
یا به شکل زیر مینویسیم:
>> min(a, [], [1, 2])
ans = 10
دستور mean در متلب
سومین دستور از توابع آماری در متلب، به دستور mean در متلب اختصاص دارد. دستور میانگین گیری در متلب ، دستور mean است. عبارت mean به معنی میانگین است. دستور mean در متلب نیز مقدار میانگین را محاسبه میکند. اگر بخواهیم میانگین بردار c را با ماشین حساب محاسبه کنیم، چه مینویسیم؟ مینویسیم 5/(19 + 80 + 77 + 39 + 44) درست است؟ که میشود 51.8. اما با نوشتن یک خط کد در متلب میتوانیم میانگین هر برداری را محاسبه کنیم. برای این کار کافی است بنویسیم:
>> mean(c)
ans = 51.8000
مشاهده میکنید، میانگینی که ما محاسبه کردیم با جواب متلب یکسان است! همین انتظار هم میرفت.
محاسبه میانگین ماتریس با دستور mean در متلب
برای محاسبه میانگین در یک ماتریس چکار کنیم؟ مشابه با دستور min و max، اگر بنویسیم mean(a)، مقدار میانگین در هر ستون محاسبه خواهد شد.
>> mean(a)
ans = 68.4000 57.2000 68.0000 65.2000
حالا اگر بخواهیم میانگین را در هر سطر از ماتریس محاسبه کنیم چه؟ مشابه با min و max میتوانید بُعدی که در آن میانگین محاسبه میشود را مشخص کنید. اما مشخص کردن بُعد در mean کمی با دو دستور قبلی متفاوت است. برای محاسبه میانگین در یک بُعد خاص کافی است بنویسیم mean(a, dim). یعنی نباید علامت [] را برای mean به کار ببریم. بنابراین برای محاسبه میانگین در هر ستون باید بنویسیم:
>> mean(a, 1)
ans = 68.4000 57.2000 68.0000 65.2000
مشاهده میکنید که میانگین برای هر ستون محاسبه شده است. قبلا گفته بودیم که اگر dim را 1 بگذاریم عملیات در هر ستون و اگر آن را 2 بگذاریم در هر سطر انجام خواهد شد. برای محاسبه میانگین در هر سطر کافی است بنویسیم:
>> mean(a, 2)
ans = 30.7500 65.0000 64.0000 79.2500 84.5000
مشاهده میکنید که خروجی، یک بردار ستونی است که مقدار میانگین در هر سطر را نشان میدهد. میتوانید با ماشین حساب مقدار میانگین در هر سطر و ستون از a را محاسبه کرده و بعد با خروجی متلب مقایسه کنید. در نهایت برای محاسبه میانگین کل ماتریس باید بنویسیم:
>> mean(mean(a))
ans = 64.7000
یا میتوانیم بنویسیم:
>> mean(a, [1, 2])
ans = 64.7000
در این بخش با دستور mean در متلب آشنا شدیم. در بخش بعدی نحوه محاسبه میانه در متلب را بررسی خواهیم کرد …
دستور median در متلب
دستور چهارم از توابع آماری در متلب دستور median در متلب است. برای محاسبه میانه از دستور median در متلب استفاده میشود. نحوه ورودی دادن به دستور median در متلب ، دقیقا مشابه با mean است. برای محاسبه میانه در متلب برای یک بردار مثل c کافی است بنویسیم:
>> median(c)
ans = 44
برای محاسبه میانه در متلب برای هر ستون از یک ماتریس مانند a، میتوانیم بنویسیم:
>> median(a)
ans = 82 55 81 80
یا میتوانیم بنویسیم:
>> median(a, 1)
ans = 82 55 81 80
برای محاسبه میانه در هر سطر از یک ماتریس مثل a مینویسیم:
>> median(a, 2)
ans = 15.5000 67.0000 73.5000 86.0000 88.5000
مشاهده میکنید نتیجه یک ماتریس ستونی است که مقدار میانه در هر سطر را در خود دارد.
توجه برای محاسبه میانه در کل ماتریس چه کنیم؟ آیا میتوانیم بنویسیم median(median(a))؟ جواب قطعا خیر است. اگر با نحوه محاسبه میانه آشنا باشید، این مسئله برای شما بدیهی است. برای محاسبه میانه در کل ماتریس باید بنویسیم:
>> median(a, [1, 2])
ans = 80.5000
دستور mode در متلب
دستور mode در متلب ، عددی که بیشترین تکرار را در ماتریس یا بردار داشته باشد، نشان میدهد. ورودی دادن به تابع mode مشابه با mean و median است. برای محاسبه پرتکرارترین عدد در یک بردار مانند c کافی است بنویسیم:
>> mode(c)
ans = 19
با کمی دقت در c مشاهده میکنیم که هیچ عددی در این بردار تکراری نیست. مشاهده میکنید که دستور mode در متلب در صورتی که هیچ عدد تکراری وجود نداشته باشد، کمترین عدد را برمیگرداند! برای محاسبه پرتکرارترین عدد در هر ستون از یک ماتریس مانند b، مشابه mean و median، کافی است بنویسیم:
>> mode(b)
ans = 1 12 1 1
یا میتوانیم بنویسیم:
>> mode(b, 1)
ans = 1 12 1 1
یعنی متلب میگوید در ستون دوم، عدد 12 پرتکرارترین عدد است. اما به نظر در ستون اول، سوم و چهارم هیچ عدد تکراری وجود ندارد. چک کنید درست است یا خیر؟ گفتیم در صورتی که در هر ستون از ماتریس، عدد تکراری وجود نداشته باشد، تابع mode کوچکترین عدد از هر ستون را برمیگرداند. برای محاسبه پرتکرارترین عدد در هر سطر چکار کنیم؟ کافی است بنویسیم:
>> mode(b, 2)
ans = 10 1 5 15 1
در سطر دوم عدد 1 ، در سطر سوم عدد 5 و در سطر چهارم عدد 15 بیشترین تکرار را دارند. اما در سطر 1 و 5 عدد تکراری وجود ندارد و به همین دلیل کوچکترین عدد در آن سطر نمایش داده شده است.
دستور واریانس در متلب
دستور var در متلب برای محاسبه مقدار واریانسِ چند عدد استفاده میشود. برای محاسبه مقدار واریانس برای یک بردار مثل c در متلب کافی است بنویسیم:
>> var(c)
ans = 682.7000
برای محاسبه واریانس در هر ستون از یک ماتریس مثل a، باید بنویسیم:
>> var(a)
ans = 1.0e+03 * 1.0853 1.5437 1.2295 1.2247
خب ما اینجا با یک پدیده جدید مواجه شدیم! 1.0e+03 دیگر چیست؟! حرف e یعنی 10 به توان. پس عبارت 1.0e+03 یعنی 10 به توان 3! همان عدد 1000… برای مشخص کردن بُعد در دستور var در متلب یک پارامتر مزاحم داریم! اگر راهنمای دستور var در متلب را باز کنیم میبینیم که برای وارد کردن بُعد باید بنویسیم var(a, w, dim) این وسط یک عامل مزاحم به نام w داریم.
ما در اینجا در مورد پارامتر w توضیحی نمیدهیم، اگر علاقمند هستید بدانید w چیست، توضیحات دستور var در متلب را بخوانید. اما برای اینکه بُعد را وارد کنیم، باید به w مقدار بدهیم. با نگاهی به تصویر بالا میبینیم که نوشته شده اگر میخواهید که واریانس را در یک بُعد خاص محاسبه کنید و w برایتان مهم نیست مقدار آن را صفر بگذارید. پس برای محاسبه واریانس در هر ستون کافی است بنویسیم:
>> var(a, 0, 1)
ans = 1.0e+03 * 1.0853 1.5437 1.2295 1.2247
برای محاسبه واریانس در هر سطر از ماتریس a مینویسیم:
>> var(a, 0, 2)
ans = 1.0e+03 * 1.1743 1.2060 1.4967 0.4529 0.2403
و در نهایت برای محاسبه واریانس در کل ماتریس کافی است بنویسیم:
>> var(a, 0, [1, 2])
ans = 1.0915e+03
توجه دقت کنید که مثل تابع median، در واریانس هم نمیتوانید از دستور var(var(a)) برای محاسبه واریانس کل ماتریس استفاده کنید!
دستور std در متلب
آخرین دستور از جلسه «توابع آماری در متلب»، دستور std در متلب است. دستور std در متلب برای محاسبه standard deviation یا انحراف معیار چند عدد استفاده میشود. در واقع std، جذرِ var است. ورودی دادن به این تابع دقیقا مشابه با تابع var است. برای محاسبه انحراف معیار در یک بردار مانند c، مینویسیم:
>> std(c)
ans = 26.1285
مشاهده میکنید که برای محاسبه انحراف معیار در متلب از دستور std استفاده کردیم. نتیجه هم برابر با 26.12 به دست آمد. برای محاسبه انحراف معیار در هر ستون از یک ماتریس مانند a مینویسیم:
>> std(a)
ans = 32.9439 39.2899 35.0642 34.9957
یا میتوانیم بنویسیم:
>> std(a, 0, 1)
ans = 32.9439 39.2899 35.0642 34.9957
و در نهایت برای محاسبه انحراف معیار مینویسیم:
>> std(a, 0, [1, 2])
ans = 33.0376
دریافت PDF جلسه توابع آماری در متلب
برای دریافت pdf این جلسه، لطفا ایمیل خود را در باکس زیر وارد کرده و روی دکمه «دریافت pdf» کلیک کنید.
منابع آموزش متلب
در فهرست زیر، تعدادی از منابع خوب آموزش متلب را معرفی کردهایم. ضرورتی وجود ندارد که اینها را نگاه کنید. چون ما برای آموزش متلب، این منابع را مطالعه و استفاده کردهایم.
خب جلسه دوازدهم با موضوع توابع آماری در متلب تمام شد. اگرچه تعداد دستورات زیاد بود، اما نحوه استفاده از آنها بسیار شبیه هم بود. برای جلسه بعدی یک پروژه برای شما درنظر گرفتیم که نحوه استفاده از این توابع آماری در متلب را بیاموزید. با هوسم همراه باشید…
مطالب زیر را حتما مطالعه کنید
تعریف متغیر در متلب
آموزش متلب رایگان
دستور max در متلب
دستور محاسبه انتگرال در متلب
دستور input در متلب
دستور ezplot در متلب
13 دیدگاه
به گفتگوی ما بپیوندید و دیدگاه خود را با ما در میان بگذارید.
خیای عالی و مفید، ممنونم
سلام وقتتون بخیر،در این جلسه توابع آماری فرمودید برای محاسبه میانه کل ماتریس از این دستور استفاده نکنیم
((a)median)median در صورتی که من امتحان کردم در متلب 2020a اوکی بود و با اون یکی دستور که گفته بودید جواب آخرشون یکی بود و به نظرم اشتباه گفتید و ممنون می شم اصلاح بفرمایید. دستور دوم: ([1,2],a)median
سلام،
نتیجه دو دستور ((a)median)median و ([1,2],a)median یکی نیست. البته ممکنه گاهی اتفاقی یکی بشه! برای تست این دو دستور، ماتریستون رو به صورت تصادفی تعریف کنید. یه نمونه:
>> a = randi(50, 3, 5)
a =
14 9 48 12 26
34 6 18 38 35
33 25 30 13 45
>> median(a, [1, 2])
ans =
26
>> median(median(a))
ans =
30
سلام عالی خدا قوت
سلام
سپاس 🌹🙏
بله به طور مثال با زدن کد زیل با خطا این مواجه میشم :
a=randi(100,5,4)
var(a, 0, [1, 2])
Error using size
Dimension argument must be a positive integer scalar within indexing range.
Error in var (line 95)
n = size(x,dim);
احتمالا متلب 2015 امکان محاسبه واریانس در دو بعد رو نداره. var(a, 0, [1, 2]) رو بگذارید var(a, 0, 1) مثلا جواب میده؟
برای اینکه مطمئن بشید، help متلب برای var رو بخونید.
بله help رو مطالعه کردم . متاسفانه متلب 2015 قابلیت محاسبه واریانس در دو بعد رو نداره . تشکر میکنم بابت راهنماییتون
خواهش میکنم 🌹🙏
میتونی از دستور var(a(:)) استفاده کنی!
سلام،
بله کاملا درسته 🙏🌹
سلام وقتتون بخیر . ممنون از سایت خوبتون . ببخشید دستور های زیر واسه بنده که از متلب ۲۰۱۵ استفاده میکنم جواب نمیدن . ممنون میشم اگر بنده رو راهنمایی کنید max(a, [], [1,2]) and min(a, [], [1, 2]) and mean(a, [1, 2]) and median(a, [1, 2])
سلام،
سپاس🌹
یعنی خطا دریافت میکنید یا اینکه خروجی ندارید؟ اگر خطا دارید، خطا رو کامنت کنید