رسم نمودارهای گسسته در متلب
به نام خدا و سلام.
به جلسه بیست و هفتم از سری جلسات آموزش متلب خوش آمدید. آموزش کامل متلب از وبسایت متلبپلاس به صورت رایگان ارائه میشود. از جلسه بیست و یکم شروع به آموزش انواع مختلف نمودار در متلب کردهایم. در این جلسه نوبت به آموزش رسم نمودار دادههای گسسته شامل نمودار پله ای (stairs)، stem و scatter در متلب میرسد. این دسته از نمودارها برای نمایش دادههای گسسته (جدا از هم) و پراکنده مناسب میباشند. نحوه رسم نمودار با stem ، stair و scatter، افزودن عنوان به نمودار، افزودن عنوان به محورهای عمودی و افقی و… از مباحث این جلسه هستند.
با متلب پلاس همراه باشید.
رسم نمودار پله ای در متلب (stairs)
نمودار پله ای نوعی نمودار برای نمایش دادههای گسسته میباشد. در نمودار پله ای، مقدار هر نقطه از تابع گسسته از ابتدا تا انتهای بازه ثابت است. پس از اتصال این نقاط به هم، نمودار حاصل شبیه به راه پله میباشد. به همین دلیل به این نوع نمودار، نمودار پله ای گویند. برای رسم نمودار پله ای در متلب از دستور stairs استفاده میکنیم. stairs(y) نمودار پله ای دادههای y را رسم میکند. دستور stairs(x,y) نیز نمودار پله ای دادههای y را براساس دادههای x رسم میکند. به رسم نمودار پله ای زیر دقت کنید.
x = 0:0.5:20;
y = sin(x);
stairs(x,y)
حال به جزئیات بیشتری درباره رسم نمودار پله ای میپردازیم.
جزئیات نوع خط در نمودار پله ای
- مشابه با رسم نمودار با دستور plot، ویژگیهای خط نمودار قابل تعیین است. ویژگیهایی مثل ضخامت خط، نوع آن (توپر، نقطه چین، خط چین و…)، رنگ خط، مارکر و… از این قبیل اند. در زیر این موارد به طور خلاصه آمدهاست.
- خط چین — ، نقطه خط .- ، نقطه :
- ضخامت خط با عبارت LineWidth مشخص میشود.
- رنگ قرمز r، مشکی k، سبز g، آبی b، زرد y، ارغوانی m
- مارکر دایره o، مثبت +، ستاره p و…
برای درک بهتر، یک نمودار پله ای با رنگ قرمز، ضخامت 2 و خط نقطه رسم میکنیم.
x = 0:0.5:20;
y = sin(x);
stairs(x,y,'r-.','linewidth',2)
رسم چند نمودار پله ای روی هم
برای رسم هر نوع نموداری روی نمودار دیگر، از دستور hold on استفاده میشود. ابتدا نمودار اول رسم شده، سپس دستور hold on وارد شده و در نهایت نمودار بعدی رسم میشود. تا زمانی که دستور hold off را نزنیم، هر نموداری که رسم کنیم روی نمودارهای قبلی رسم میشود. به مثال زیر دقت کنید.
x = 0:0.75:20;
y1 = sin(x);
y2 = cos(x);
stairs(x,y1,'linewidth',1.5)
hold on
stairs(x,y2,'-.','linewidth',1.5)
در شکل فوق، برای رسم نمودار پله ای دوم از نوع نقطه-خط استفاده شدهاست.
رسم چند نمودار پله ای در کنار هم
دستور subplot را در همهی آموزشهای رسم نمودار در متلب ارائه کردهایم. با subplot میتوان پنجره را به چند بخش تقسیم کرد و نمودار را در بخش دلخواه رسم نمود. subplot(m,n,p) پنجره را به m سطر و n ستون نقسیم میکند. p نیز شمارهی بخشی است که میخواهیم نمودار را در آن رسم کنیم. برای مثال، دو نمودار پله ای را زیر هم رسم میکنیم.
x = 0:0.75:20;
y1 = sin(x);
y2 = sin(3*x);
subplot(2,1,1)
stairs(x,y1,'linewidth',1.5)
subplot(2,1,2)
stairs(x,y2,'r','linewidth',1.5)
افزودن عنوان به نمودار پله ای
برای افزودن عنوان به نمودار پله ای در متلب، از دستور title استفاده میشود. طرز استفاده از این دستور به صورت title(‘text’) است. در واقع text متنی است که در بالای نمودار نمایش داده میشود. در ادامه نحوه استفاده از دستور title ارائه خواهد شد.
افزودن عنوان به محورهای x و y نمودار پله ای
در نرم افزار متلب، عنوان (لیبل) محورهای x و y با دستورهای xlabel و ylabel ایجاد میشوند. متن موردنظر برای محورها بایستی از جنس رشته متنی باشد و یا درون کوتیشن بیاید. در ادامه نحوه استفاده از این دستورات ارائه خواهد شد.
رسم نمودار پله ای در کنار نمودار خطی plot
در متلب، امکان رسم نمودار پله ای روی نمودارهای ساده plot وجود دارد. برای این کار از دستور hold on استفاده میکنیم. ابتدا یک نمودار رسم شده و دستور hold on را زده و نمودار بعد رسم میشود. در مثال زیر، یک نمودار پله ای رسم کرده و سپس نمودار plot رسم میکنیم. عنوان نمودار و عنوان محورهای افقی و عمودی نیز ایجاد میشوند.
t = 0:0.5:10;
y = sin(t).*exp(-0.3*t);
stairs(t,y,'linewidth',1.2)
hold on
plot(t,y,'--*','linewidth',1.2)
title('Stairs and plot of y = sin(t)e^{-0.3t}')
xlabel('Time (sec)')
ylabel('y')
در رسم نمودار فوق، برای بخش عنوان از فرمول نویسی استفاده شدهاست. مواردی مثل فرمول نویسی ریاضی در عناوین نمودار، شبکه بندی نمودار، حروف یونانی، رنگ بندی نمودار و… در انواع نمودارها مشترک میباشند. به همین دلیل، این جزئیات را در آموزش رسم انواع نمودار در متلب ارائه کردهایم. برای مشاهده این موارد روی لینک قرمز قبل کلیک نمائید.
رسم نمودار با stem در متلب
نوع دیگری نمودار برای نمایش دادههای گسسته نمودار stem است. در این نوع نمودار، مقدارهای y تابع به صورت گسسته (جدا از هم) رسم میشود. چنانچه از stem برای رسم دادههای پیوسته استفاده شود، تا حدودی همان نمودار plot خواهد بود. با این تفاوت که یک مارکر دایره به نقاط آن اضافه شدهاست. برای رسم نمودار stem در متلب از دستور stem(y) و یا stem(x,y) استفاده میکنیم. stem(y) دادههای y را با مقادیر پیشفرض 1 تا n (طول y) رسم میکند. stem(x,y) نیز مقادیر y را براساس دادههای x رسم میکند. در مثال ساده زیر، نمودار سینوس را برای 11 نقطه با stem رسم میکنیم.
x = 0:10;
y = sin(x);
stem(x,y)
در مثال زیر همان شکل سینوس را با 101 نقطه رسم میکنیم.
x = 0:0.1:10;
y = sin(x);
stem(x,y)
مشاهده میشود که با افزایش تعداد نقاط، نمودار سینوس به شکل پیوسته آن شبیه میشود. در واقع با افزایش تعداد نمونه در یک سیستم گسسته، به سیستم پیوسته میرسیم.
جزئیاتی که برای نمودار پله ای ذکر شد برای دستور stem نیز برقرار است. در مثال زیر با استفاده از subplot، سه نمودار stem را در کنار و زیر هم رسم میکنیم. نمودار سمت چپ بالا، تابع سینوس و سمت راست بالا تابع کسینوس است. نمودار پایین نیز هردوی این توابع است. عنوان نمودارها و محورهای x و y نیز ایجاد شدهاست.
x = 0:0.1:6;
y1 = sin(x);
y2 = cos(x);
subplot(2,2,1)
stem(x,y1)
title('Stem plot of Sine')
xlabel('x')
ylabel('Sine(x)')
subplot(2,2,2)
stem(x,y2,'color',[0.85,0.33,0.10])
title('Stem plot of Cosine')
xlabel('x')
ylabel('Cosine(x)')
subplot(2,2,[3 4])
stem(x,y1)
hold on
stem(x,y2)
title('Stem plot of both')
xlabel('x')
در خط 12 کد فوق، دستور ‘color’ نوشته شده و پس از آن کد رنگی موردنظر را وارد کردهایم. چنانچه رنگ موردنظر ما جزو رنگهای تعریف شده متلب نباشد، کد RGB آن را وارد میکنیم. جزئیات بیشتر درباره کدهای RGB و دستور color در آموزش رسم نمودار در متلب ارائه شدهاست. (لینک قرمز بالا)
جزئیاتی مانند عنوان نمودار، ویژگی خطوط، رسم چند نمودار روی هم و… مشابه با آنچه در بالا ذکر شد است. در ادامه نحوه رسم نمودار سه بعدی stem ارائه میشود.
رسم نمودار سه بعدی stem3 در متلب
برای رسم نمودار سه بعدی stem در متلب از دستور stem3 استفاده میشود. stem3(x,y,z) یک نمودار مشابه با نمودارهای قبل اما در فضای سه بعدی براساس دادههای x,y,z رسم میکند. طرز استفاده از دستور stem3 کاملا مشابه با دستور stem است. در مثالهای زیر نمودار سه بعدی با stem3 رسم میکنیم.
جزئیاتی مانند عنوان نمودار، ویژگی خطوط، رسم چند نمودار روی هم و… مشابه با آنچه در بالا ذکر شد است. برای درک بهتر، یک نمودار سه بعدی stem3 رسم میکنیم که این ویژگیها را داشته باشد.
x = -6:0.1:6;
y = sin(x);
z = cos(x);
stem3(y)
hold on
stem3(z)
title('Stem3')
xlabel('x axis')
ylabel('y axis')
رسم نمودار scatter در متلب
نمودار scatter که در اکسل هم با آن سروکار داریم، برای رسم دادههای پراکنده بسیار مفید است. برای رسم نمودار دادههای پراکنده از دستور scatter در متلب استفاده میکنیم. scatter(x,y) نمودار دادههای y برحسب x را رسم میکند. دادههای آزمایشگاهی معمولا به صورت پراکنده میباشند. برای مثال، نمودار دادههای پراکنده تابع سینوس را با scatter رسم میکنیم. در این مثال، دادههای پراکنده را به صورت دستی ایجاد میشود. به این صورت که به مقادیر تابع سینوس، یک عدد تصادفی (بین صفر تا یک) اضافه میکنیم.
x = linspace(0,3*pi,200);
y = sin(x) + rand(1,200);
scatter(x,y)
برای پر کردن دایرههای رسم شده در شکل بالا، عبارت filled را در دستور scatter اضافه میکنیم. همچنین مواردی مثل عنوان نمودار، عنوان محورها و… مشابه با قبل است. به مثال زیر دقت کنید.
x = linspace(0,3*pi,200);
y = sin(x) + rand(1,200);
scatter(x,y,'filled')
title('Scatter Plot , Matlabplus')
xlabel('x')
ylabel('sin(x)')
در شکل فوق، عنوان نمودار scatter و لیبلهای محور x و y تعریف شدهاست.
رسم نمودار سه بعدی scatter3 در متلب
برای رسم نمودار دادههای پرکنده scatter سه بعدی، از دستور scatter3 در متلب استفاده میشود. در مثال زیر یک نمودار سه بعدی scatter3 رسم میشود.
x = linspace(0,3*pi,300);
y = sin(x) + rand(1,300);
z = cos(x) + rand(1,300);
scatter3(x,y,z)
تمرینات این جلسه
در انتهای این جلسه 3 تمرین متلب مربوط به مباحث این جلسه ارائه شده است. لطفا این تمرینها را حل کرده و با پاسخ آن مقایسه کنید. پاسخ تمرینات متلب این جلسه در کانال تلگرام متلب پلاس منتشر میشود. از آیکونهای سمت راست صفحه میتوانید در این کانال عضو شوید.
تمرین اول) نمودار پله ای y = sin(5x)*exp(1 – x2) را در متلب رسم کنید. بازه x از صفر تا 3 و ضخامت خطوط 1.5 باشد.
تمرین دوم) نمودار stem دو بعدی z = sinh(x)*cos(x) را در بازه منفی 3 تا 3 رسم کنید.
تمرین سوم) نمودار stem سه بعدی z = sinh(x)*cos(y) را در بازه منفی 3 تا 3 (x و y) رسم کنید.
جمعبندی
خب جلسه بیست و هفتم از سری جلسات آموزش متلب به پایان رسید. این جلسه درباره رسم نمودار دادههای گسسته پله ای ، stem و scatter در متلب صحبت کردیم. این نمودارها برای نمایش دادههای گسسته بکار میروند. نحوه رسم، تکنیکها و جزئیات متنوعی برای این نوع نمودار بیان شد. در انتها چند تمرین برای یادگیری بیشتر به شما واگذار کردیم که پاسخ آنها در کانال تلگرامی متلب پلاس وجود دارد. بی صبرانه منتظر نظرات، سوال و ابهامات شما عزیزان هستیم. سعی میکنیم تا هرگونه سوال یا ابهامی که در این باره دارید را پاسخ دهیم.
توصیه میشود که حتما تمرینات این جلسه را انجام بدید و اگر سوال و ابهامی دارید در بخش نظرات (پایین همین صفحه) به ما بگید. از فهرست سمت راست هم میتونید به بقیه جلسات دسترسی داشته باشید.
دیدگاهتان را بنویسید