متلب
صفحات وبلاگ
نویسنده: پ متلب - جمعه ۱۸ فروردین ،۱۳٩۱

ترسیم دوبعدی

 

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

 

این ابزار شامل نمودارهای دوبعدی و سه بعدی و انواع نمودارهای

 

فراوانی می باشد.

 

 

Plot   رسم دوبعدی

 

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

 

 که نحوه ترسی آن دقیقاً مانند ترسیم دستی نمودار که خـــودمان

 

انجام می دهیم بدینگونه که در بازه خاصی x را معرفی می کـــنیم

 

وy متناظر هر کدام را بدست آورده و در پایان براساس اعـــــــــــداد

 

محاسبه شده نقاط مربوطه پیدا شده و نــــقاط به هم وصـــــــــل

 

 می شود. طبیعتاً هر چقدر فاصله نقاط کمتر باشد دقت ترسیم

 

 بهتر می شود.

 

به مثال زیر توجه کنید:

 

>>x=-pi:pi/4:pi;

>>y=sin(x);

>>plot(x,y)

   

 

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

 

 حال دقت ترسیم را افزایش می دهیم:

 

                                                                                  

>>x=-pi:pi/10:pi;{enter}

>>y=sin(x);

>>plot(x,y)

 

 

 

در دستورات بالا در خط ول یک بازه به تعداد مشخص تقســیم می

 

 کنیم(xها را معرفی می کنیم) پس از آن در خط دوم مقــــدار y را

 

برای هرکدام ازxها پیدا می کنیم و در پایان در خط سوم نقاط پیاده

 

 شده و به هم وصل می شود.

 

  حال اگر بخواهیم دو نمودار cos,sin را کنار هـــــم رسم کنـــــیم،

 

کافیست در دستورplot مقدار محاسبه شده بـــرای cos را نیز قرار

 

دهیم.

 

این کار بدینگونه است، هر ترسیمی را که افزایـــش می دهیم، در

 

 دستورplot دقیقاً مانند دستور ترسیم یک نمودار پارامترها را پشت

 

 سر دستور آن می افزاییم به گونه ای که هـــــر جفت پارامتر برای

 

 کدام یک از ترسیمات پشت سرهم قرار گیرد.

 

باز اگر بخواهیم ترسیم دیگری اضافه کنیم مثــــل روش بالا اضافه

 

می کنیم.

>>x=-pi:pi/10:pi;

>>y=sin(x);

>>z=cos(x);

>>plot(x,y,z)

 

 

 

لطفاً به آخرین سطر دستورات توجه فرمایید.

 

حال اگر بخواهیم ترسیمات را با رنگ و یا... خاصی انــــجام دهیم

 

بدینگونه پیش می رویم.

 

برای معرفی رنگ در ترسیم از حروفات کلیدی استــفاده می شود

 

 که داخل کوتیشن در دسترplot نوشته می شود.

 

به مثال زیر توجه کنید:

plot(x,y,'r')

 

این دستور ترسیم را با رنگ قرمز انجام می دهد و به نوع ترسیم

 

 کاری ندارد.

plot(x,y,'^')

 

این دستور به رنگ کـــــــــاری ندارد و فقط نقاط را با مثلث نمایش

 

می دهد.

plot(x,y,':')

 

این دستور فقط ترسیم را به صورت خط چین انجام می دهد.

 

 

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

 

آنها را باهم ترکیب نمود.

(:^x,y,'r)plot

 

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

 

 

حرف اول رنگ (قرمز)... حرف دوم علامت(مثلث) و حرف سوم نوع

 

خط(نقطه چین) را تعیین می کند.

 

حروفات رنگ درplot                             حروفات ترسیم

b آبی                                               -  خط صاف

g سبز                                              :  نقطه چین

r قرمز                                               .-  خط نقطه

c فیروزه ای                                        --  خط چین

m بنفش                                           (خالی) بدون ترسیم خط

y زرد

k مشکی

 

حروفات نمایش نقطه

 

.       نقطه

O      دایره

X      ضربدر

+      علامت اضافه

*      ستاره

       sمربع

d      لوزی

^     مثلث(به طرف بالا)

      vمثلث(به طرف پایین)

     >مثلث(به طرف چپ)

     Pستاره پنج راسی  

     h ستاره شش راسی

 

گفتیم که می توان همه این حروفات را باهم ترکیب کرد بدینگونه که

 

('ترسیم,نقطه,رنگ') حال ترسیم بالایی را با تنظیمات جدیدانــــجام

 

می دهیم.

 

>>x=-pi:pi/10:pi;

>>y=sin(x);

>>z=cos(x);

>>plot(x,y,'b:d',x,z,'rp-.')

 

 

 

در خط آخر فرمان مربوط به ترسیم و تنظیمات را می بینیـــــم که

 

 تنظیمات مربوط به هر کدام از ترسیم بلافاصله پس از پارامتــرها

 

 می آید.

 

در خط آخر دستور مقبل را می بینیم:

 

 

>>plot(x,y,'b:d',x,z,'rp-.')

پس از تعیین پارامترها (x,y) بلافاصله تنظیمات آن آماده اســت که

 

'b:d' می باشد که رنگ آن b آبی و نوع ترسیم آن :نقطـــه چین و

 

نشان نقطه آن d لوزی است... و ترسیم دوم که پارامترهـــــای آن

 

(x,z) و تنظیمات آن با رنگ قرمزr قرمز و نوع خط .- خط نقـــــطه و

 

 نقطه p  ستاره پنج راسی است.

 

در خط آخر دستور مقبل را می بینیم:

 

>>plot(x,y,'b:d',x,z,'rp-.')

 

پس از تعیین پارامترها (x,y) بلافاصله تنظیمات آن آماده اســـــت

 

که'b:d' می باشد که رنگ آن b آبی و نوع ترسیم آن :نقطه چیـن

 

 و نشان نقطه آن d لوزی است... و ترسیم دوم که پارامترهـــای

 

آن(x,z) و تنظیمات آن با رنگ قرمزr قرمز و نوع خط .- خط نقــطه و

 

نقطه p ستاره پنج راسی است.

 

تنظیمات صفحه رسم

 

در مواردی لازم است که برای نموداری که ترسیم نموده ایم نــام

 

و توضیحات خاصی ارائه کنیم. این توضیحات ممکن اســــــــت نام

 

 ترسیم نام محورها نوشتن برروی ترسیم و... باشد.

 

چند نمونه از ترسیمات:

 

 

Xlabel    برچسب محور x  

 

این دستور محور x را نامگذاری می کند.

Xlabel('string')

 

در دستور بالا به جای string کلـــــمه و حروفات مربوطـــه گــذارده

 

 می شود.

 

 

ylabel  برچسب محور y  

 

این دستور محور y را نامگذاری می کند.

ylabel('string')

 

در دستور بالا به جای string کلمه و حروفات مربوطـــــه گـــــذارده

 

می شود.

 

Tiltle    نام ترسیم

 

این دستور ترسیم را نامگذاری می کند.

Title('string')

به جای string نام مربوطه قرار می گیرد.

 

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

 

 

Legend     معلوم کردن رسم ها

 

اگر چندین نمودار رسم کرده باشیم ممکن است نتوانیم تشخـــیص

 

دهیم که کدام ترسیم مربوط یخ کدام نمودار است... بوســــــــــیله

 

دستور legend می توانیم برحسب رنگ و نوع ترسیم نمــــودارها را

 

از هم تمیز دهیم.

Legend('string 1','string 2')

 

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

 

نمودارها ترسیم شده در اینجا نیز همانوگونه عمل می شود.

 

 

 

به مثال زیر توجه فرمایید:

 

x=-pi:pi/10:pi

y=sin(x)

                                                                                     z=cos(x)                                                                               

plot(x,y,'r>-',x,z,'bd__')

xlabel('x')

ylabel('sin&cos')

title('sin&cos functions')

legend('sin','cos')

text(0,0,'sin')

text(1.7.,0,'cos')

 

 

در دستورات بالا text استفاده شده که برای نوشتن جمـــله ای در

 

مکان خاصی (مختصات) بکار می رود.

Text(x,y,'string')

  

چند ترسیم در یک صفحه

 

گفتیم که می توان در دستور plot چندین ترسیم را یکـــجا انجـام

 

داد. ولی اگر نتوانیم بصورت یکجا ترسیم کنیم و یا نـــــخـــــواهیم

 

ترسیمات بر روی هم بیافتد چه کار کنین.

 

  در دستور plot قبل از ترسیم صفحه پـــــاک می شــود(می توان

 

گفت دستور clf اجرا می شود) ولی وقتی بخـــواهیم بــــــــر روی

 

ترسیم انجان شده یک نمودار دیگری رسم کنیم بــــــاید ترسیــــم

 

قبلی پاک نشود.

 

دستورhold این کار را انجام می دهد.

 

Hold     نگه داشتن ترسیم

 

 با استفاده از این دستور مانع پاک شدن صفحه نمایش می شویم

 

تا نمودارهای بعدی بر روی نمودار اولی بیافتد(در این نمودارها همه

 

رنگ ها و نوع خط یکسان خواهند بود زیرا به طور جداگانه ترسیم می

 

شوند و از رنگ و نوع خط اولیه استفاده می کنند.

 

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

Hold on

 

Hold off

 تا زمانی که hold در حالت روشن است هیچ نموداری پــاک نخواهد

 

 شد و همه بر روی هم خواهد افتاد.

 

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

 

بوسیله دستورsubplot صفحه ترسیم را به تعداد مشخص تقـسیــم

 

 می کنیم.

 

بدینگونه که صفحه ترسیم را تقسیم کرده و قسمـت موردنـــــظر را

 

معلوم کرده و نمودار مربوطه را رسم می کنــــــیم و ســــپس نام و

 

تنظیمات را انجام می دهیم.

 

Subplot    رسم چندین رسم در یک صفحه

 

بوسیله این دستور می توانیم صفحه ترسیم را به چندین قســـمت

 

تقسیم کنیم.

 

این دستور را بدین گونه استفاده می کنیم.

Subplot(m,n,p)

 

با این دستور صفحه به m سطر و n ستون تقسیم میشودوقسمت

 

pام را آدرس دهی می کند.

 

که شماره قسمت از ردیف اول از بالا شروع می شود.

 

 

 

به مثال زیر توجه کنید:

X=-pi:pi/10:pi;

Y=sin(x);z=cos(x);t=sin(x).*cos(x);

Subplot(2,2,1);plot(x,y,'r');title('sin');

Subplot(2,2,2);plot(x,y,'y');title('cos');

Subplot(2,2,3);plot(x,t');title('sin*cos');

Subplot(2,2,4);plot(x,y+z);title('sin+cos');

 

لطفاً به نحوه کاربردsubplot و نحوه تنظیم ترسیمات توجه فرمایید.

 

ترسیمات سه بعدی و سطوح

 

دیدیم که دستور plot ابزاری برای رسم نمودارهای دوبعدی اســـت

 

 ولی مواقعی که می خواهیم نمودارهای سه بعدی را رسم نماییم

 

چه کار باید بکنیم.

 

دستورplot3 این کار را انجام می دهد.

 

Plot3   رسم سه بعدی

 

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

 

به این مثال توجه فرمایید:

>>t=-3*pi:pi/30:3*pi;

>>x=sin(t);

>>y=cos(t);

>>z=t:

>>plot3(x,y,z);

 

 

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

 

البته می توانیم بوسیله دستورplot3، سطوح و لایه ها را ترســـیم

 

 کنیم.

 

رسم سطح و لایه

 

رسم لایه و سطح با نمودار یکسان نمی باشد، نمودار یک منحنی

 

و...می باشد(در کل یک خط) ولی سطح اینگونه نمی باشد و یــک

 

فضای پیوسته(لایه) می باشد.

 

خودمان می توانیم هر سطحی که دلمان می خواهد بسازیم ولـی

 

برای راحتی کار، یک تابع سطح، در خد متلب قرار  داده شده است

 

 که با  دستورpeaks می توان به این سطح دست یافت.

 

Peaks      سطح نمونه

 

گفتیم که یک سطح پیش فرضی در متلب قرار داده شـتده که با این

 

 دستور می توان به این سطح دست یافت.

[x,y,z]=peaks(n)

N

 دقت ترسیم را نشـــــان می دهـــــد(بازه مربوطه به عدد وارد شده

 

 تقسیم می شود و چقدر n بیشتر باشد قطعات کوچکتر و هــــمین

 

طور شکستگی نرم تر و رسم دقیقتر خواهد بود)

 

در صورتی که می خواهید یم سطح بسازید، باید فاصله همه نقــاط

 

موجود بر روی سطح یکسان و به طور مساوی پخش شده باشــد و

 

البته x y z را نیز بر حسب توابع بیان می کنیم.

 

برای ساختن سطح باید شبکه ای کامل و همگن ساخته شــــود(

 

منظور از شبکه خطوط، خطوط عمود بر هـــم است که محل تقاطع

 

مکان نقاط سطح را نشان دهد).

 

در متلب شبکه را با کمک دستور meshgrid می سازیم.

   

Meshgrid    تشکیل شبکه

 

این دستور یک شبکه بای ایجاد سطوح می سازد.

 

[x,y]=meshgrid(x)   ->=      [x,y]=meshgrid(x,x)

[x,y]=meshgrid(x,y,z)

 

اگر یک مثال کوچک برای این دستور بزنیم:

 

>>[x,y]=meshgrid(-2,2)

X=

-2  -1  0  1  2

-2  -1  0  1  2

-2  -1  0  1  2

-2  -1  0  1  2

-2  -1  0  1  2

Y=

-2 -2 -2 -2 -2

-1 -1 -1 -1 -1

0   0   0  0  0    

1   1   1  1  1

2   2   2  2  2

 

می بینید که این دستور ماتریس 2*2 می سازد و اگر بیشتر دقت کنید

 

می بینید که هر کدام از سطر y و یا ستون x می تواند معرف یــک خط

 

باشد(یک سری خط موازی عمودی و افقی) که با تعریف z می توان به

 

سطح دست یافت.

 

 

 

>>z=x.^2+y.^2

Z=

8 5 4 5 8

5 2 1 2 5

4 1 0 1 4

5 2 1 2 5

8 5 4 5 8

 

کهz را براساس مقادیرx,y  بدست می آوریم((می دانیم کهx^2 یــــک

 

تابع دوبعدی کاسه ای است وy^2 نیز همچنین وقتی این دو در جهات

 

 باهم ترکیب شوند یک کاسه سه بعدی ساخته خواهد شد)).

 

با کمک دستور mesh سطح مربوطه را رسم می کنیم.

>>mesh(x,y,z)

 

می بینید که دقت ترسیم خیلی پایین است و آن هم به این دلــیل

 

 است که تعداد تقسیمات کم بوده است.

 

 Mesh   رسم شبکه تشکیل شده

 

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

 

سطح نمایش داده شده توسط این دستور صرفاً یک شبکه است.

 

این دستور بدینگونه نوشته می شود:

Mesh(x,y,z)

 

کهx,y,z با meshgrid تعیین شده اند.

 

مثال این دستور در  ذکر شده است. که رسم دقیق آن به صورت زیر

 

است.

>>[x,y]=meshgrid(-3:0.1:3)

>>z=x.^2+y.^2

>>mesh(x,y,z)

>>colorbar

>>title('mesh plotting for z=x^{2}+y^{2}')

 

نویسندگان وبلاگ:
کدهای اضافی کاربر :