آموزش Matlab قسمت سوم

1395/1/12 --- 4645

با سلام

در خدمت شما هستم با جلسه سوم  آموزش MATLAB . در این جلسه در رابطه با رسم نمودار  صحبت خواهم کرد .

همانطور که میدانید نرم افزار MATLAB امکانات خوبی در زمینه رسم نمودار دارد..خیلی از نمودار های ریاضی در MATLABبه آسانی قابل رسم هستند.

از مهم ترین دستورات برای رسم نمودار میتوان به دستور plotاشاره کرد.

با استفاده از دستور زیر مشخصات کامل این دستور را میتوانید مشاهده کنید .

help plot

فرض کنید که می خواهیم نمودار سینوس  را در فاصله بین صفر تا 2*pi رسم کنیم:

t=0:0.01:2*pi;

 

u=sin(t);

گام متغیر t  را برابر با 0.01 قرار دادم تا وقتیکه نمودار سینوس کشیده میشه حالت شکسته نداشته باشه.

دستور رسم نمودارهای دو بعدی در متلب دستور plot است.

plot(t,u)

با اجرای دستور بالا میبینید که نمودار سینوس کشیده میشود .

آموزش فسمت سوم متلب Matlab

در واقع دستور  

plot(t,x)

 عناصر بردار xرا بر حسب بردار t نظیر به نظیر به صورت نقاطی روی صفحه ی مختصات قرار میدهد.در نهایت این نقاط را بهم وصل و منحنی مورد نظر ایجاد میکند.

برای رسم نمودارهای ساده، استفاده از plot بسیار رایج است ولی این دستور را به سادگی می‌توان برای رسم نمودارهای پیچیده‌تر هم استفاده کرد. قطعه برنامه زیر چگونگی استفاده از این دستور را نشان می‌دهد:

» x=0:1.5:9
y=sqrt(x) .* (1-0.05*x)
plot(y)
x =

         0    1.5000    3.0000    4.5000    6.0000    7.5000    9.0000
y =
         0    1.1329    1.4722    1.6440    1.7146    1.7116    1.6500

»

آموزش فسمت سوم متلب Matlab

در نمودار فوق منحنی مورد نظر باید در بازه صفر تا ۹ رسم شود ولی محور افقی بجای صفر تا ۹، بازه صفر تا هفت را نشان می‌دهد. بجز این ، خطوط منحنی هم دارای شکستگی‌هایی است. برای حل مشکل اول کافیست متغییر x هم به عنوان ورودی به تابع plot فرستاده شود. برای مشکل شکستگی‌های خطوط نیز باید تعداد زیربازه‌ها افزایش یابد. برای رسم دوباره این نمودار می‌توانید از دستور زیر استفاده کنید و نتیجه را ببینید:

x=0:0.2:9
y=sqrt(x) .* (1-0.05*x)
plot(x,y)

آموزش فسمت سوم متلب Matlab

مثلا فرض کنید می خواهیم تابع  زیر را در بازه [5،5-] رسم کنیم 

1+cos(2x)
» x=-5:0.1:5;
y=1+cos(2*x);
plot(x,y)
»

نمودار آن به صورت زیر خواهد بود

آموزش فسمت سوم متلب Matlab

حال فرض کنید می خواهیم رنگ نمودار را سبز و خط آن را ستاره ای کنیم ،پس می نویسیم:

plot(x,y,'g*')

نتیجه به صورت زیر است :

آموزش فسمت سوم متلب Matlab

حالا یک مثال دیگر را بررسی میکنیم

فرض کنیم سنگی با سرعت اولیه 60 در زمان صفر به طور عمودی به بالا پرتاب شود.نمودار مسافت-زمان را تا  زمان 12.3  با گام 0.1 رسم کنید.

» g = 9.8;
v0 = 60 ;
t = 0: 0.1: 12.3;
x = v0*t - g/2 * t.^2 ;
» plot(t,x)
»

آموزش فسمت سوم متلب Matlab

برای نمودار میتوان یک عنوان انتخاب کرد.برای هر یک از محور ها نیز میتوان نام مناسبی انتخاب کرد برای مثال در مثال فوق میتوانیم این دستورات را اضافه کنیم و تغییرات را ببینیم

title('Motion')
xlabel('Time')
ylabel('Displacement')

میتوان چند منحنی را نیز در یک صفحه مختصات رسم کرد

plot(x,y1,x,y2)

این دستور منحنی های  y1 و y2

را بر حسب xو با دو رنگ متفاوت رسم خواهد کرد

>>x = -pi:0.1:pi;

y1 = sin (x);

y2 = cos (x);

plot(x, y1, x, y2);
>>

چند نکته 

legend('sin')
xlabel('t')

دستور xlabel باعث گذاشتن برچسب بر روی محور x ها میشه. بین دو علامت ' '  هرچی بنویسید در روی محور x ها نشون داده میشه.

ylabel('u')

دستور ylabel باعث گذاشتن برچسب بر روی محور y ها، دستور title باعث گذاشتن عنوان بر روی نمودار و دستور legend باعث گذاشتن راهنما در گوشه نمودار میشه. بین دو علامت ' ' هرچی بنویسید همون نشون داده خواهد شد.

همانطور که میدانید نمودار ها همگی با رنگ پیش فرض  آبی رسم میشوند. اگر بخواهید رنگ نمودار را تغییر دهید باید در همان دستور plot این کار را انجام دهید:

راه اول: تغییر رنگ به یکی از رنگهای سیاه، سفید، فیروزه ای، قرمز، سبز، آبی، زرد و بنفش.

plot(t,u,' ')

بین دو علامت ' ' هر کدام از حروف زیر را که بنویسید رنگ متناسب با حرف نوشته شده تغییر خواهد کرد:

c : فیروزه ای

m : بنفش

b: آبی 

که اگر نوشته نشود هم رنگ آبی پیش فرض می باشد

r: قرمز

g: سبز

k: سیاه

w: سفید

y: زرد

برای مثال می خواهید رنگ نمودار قرمز شود:

plot(t,u,'r')

راه دوم: می خواهید از رنگهای ترکیبی دیگر استفاده کنید:

plot(t,u,'color',[r g b])

به جای سه عدد r و g و b  باید عددی بین 0 و 1 وارد کنید. عدد مربوط به r معرف رنگ قرمز، عدد مربوط به g معرف رنگ سبز و عدد مربوط به b معرف رنگ آبی میباشد. مسلما اگر سه عدد را به صورت [0 0 1] قرار دهید رنگ به صورت قرمز خواهد شد و اگر هر سه را برابر با 1 قرار دهید مشکی و اگر هر سه را برابر با 0 قرار دهید سفید خواهد شد. پش با انتخاب سه عدد بین 0 و 1 میلیونها رنگ می توانید داشته باشید:

plot(t,u,'color',[1 0.2 0.06])

حتما دقت کرده اید که وقتی نمودار را کشیدید با یک ضخامت پیش فرض نمودار برای شما کشیده شد. اگر که بخواهید ضخامت را هم عوض کنید باید از دستور LineWidth در دستور plot به صورت زیر استفاده کنید:

plot(t,u,'LineWidth',a)

یا

plot(t,u,'g','LineWidth',a)

یا

plot(t,u,'color',[1 .03 .5],'LineWidth',a)

منظور از a عددی است که ضخامت خط نمودار را  تعیین می کنه مثلا a=2:

plot(t,u,'k','LineWidth',2)

رسم چند نمودار مجزا در یک پنجره

بمنظور تقسیم پنجره خروجی به چند بخش میتوان از تابع subplot استفاده کرد.

شکل کلی آن به صورت زیر است :

subplot(m,n,p)

 

mتعداد بخش های افقی

nتعداد بخش های عمودی

pشماره بخش جاری

هر دیتور ترسیمی بعد از این دستور در مکان pام اعمال خواهد سد.خانه ها به صورت ستونی شمارش میشوند.

واضح است که مقدار pمیتواند بین 1   و  n*mباشد.در غیر این صورت خطا رخ میدهد

» x=linspace(0,2*pi,30);
subplot(2,2,1);plot(x,sin(x));
subplot(2,2,2);plot(x,cos(x));
subplot(2,2,3);plot(x,tan(x));
subplot(2,2,4);plot(x,sin(x)+cos(x));
»

خروجی کد های بالا به صورت زیر است:

آموزش فسمت سوم متلب Matlab

فکر میکنم برای امشب کافی باشه.

در این جلسه تا حدودی به طور مقدماتی با رسم نمودار های دو بعدی آشنا شدیم..رسم نمودار خیلی گستره تر از چیزی بود که من بیان کردم..چون هدفم اینه  که به طور مختصر در مورد این ها صحبت کنم تا وارد مبحث اصلی یعنی پردازش تصویر بشم. در جلسه ی بعد در مورد ساختار های تصمیم و انتخاب صحبت خواهیم کرد .

کلمات کلیدی