[آموزش] (رسم شکل) رسم چند شکل با هم، در متلب

P O U R I A

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

  1. نمایش چندین منحنی در یک شکل
  2. رسم چند شکل کنار هم در یک پنجره با دستور subplot در متلب
  3. رسم دو منحنی در یک شکل، با یک محور افقی مشترک و دو محور عمودی غیر مشترک (قرار گرفته در سمت چپ و راست شکل)، با دستور plotyy در متلب
  4. رسم دو یا چند شکل با محورهای مختصات غیر مشترک و اندازه های متفاوت، بر روی یکدیگر، در متلب



منبع:kelidestan.com
 
آخرین ویرایش:

P O U R I A

مدیر مهندسی شیمی مدیر تالار گفتگوی آزاد
مدیر تالار
نمایش چندین منحنی در یک شکل

نمایش چندین منحنی در یک شکل

معمولا بسیار پیش می آید که بخواهیم چندین منحنی را در یک شکل نمایش بدهیم تا بتوانیم آنها را با یکدیگر مقایسه کنیم، اما متلب به هر دستور ترسیم شکل که می رسد، یک پنجره جدید باز کرده و منحنی را در آن نمایش می دهد. برای تغییر این وضعیت، می توانیم از دستور hold استفاده کنیم. این دستور، مشخص می کند که منحنی جدید باید در پنجره شکل قبلی که رسم شده است، ترسیم شود (hold on) و یا اینکه یک پنجره جدید باز شده و سپس رسم شود (hold off). چنانچه دستور hold on را اجرا کنیم، از آن به بعد، تمامی منحنی هایی که متلب باید در پنجره های جدید نمایش دهد را در شکل همان پنجره ای که قبلا باز شده است، نمایش می دهد. به مثال زیر توجه کنید :

مثال :


کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace][COLOR=#0000FF]ezplot[/COLOR][COLOR=#008800]([/COLOR][COLOR=#A020F0]'x^2'[/COLOR],[COLOR=#008800][[/COLOR]-[COLOR=#3333FF]3[/COLOR],[COLOR=#3333FF]3[/COLOR][COLOR=#008800]][/COLOR][COLOR=#008800])[/COLOR]
[COLOR=#0000FF]hold[/COLOR] on
[COLOR=#0000FF]ezplot[/COLOR][COLOR=#008800]([/COLOR][COLOR=#A020F0]'x^2-2'[/COLOR],[COLOR=#008800][[/COLOR]-[COLOR=#3333FF]3[/COLOR],[COLOR=#3333FF]3[/COLOR][COLOR=#008800]][/COLOR][COLOR=#008800])[/COLOR][/FONT]
[/FONT][/COLOR]
نتیجه :

matlab8.jpg
مشاهده می کنید که هر دو منحنی، در یک شکل رسم شده اند.
حال چنانچه پس از استفاده از دستور hold on ، بخواهیم منحنی های بعدی به طور جداگانه رسم شوند، باید دستور hold off را اجرا کنیم.

رسم چندین منحنی در یک شکل با دستور plot :
با استفاده از دستور plot نیز می توانیم چندین منحنی را در یک شکل رسم کنیم. به مثال زیر توجه کنید :

مثال :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace]x=-[COLOR=#3333FF]3[/COLOR]:[COLOR=#3333FF]0.1[/COLOR]:[COLOR=#3333FF]3[/COLOR];
[COLOR=#0000FF]plot[/COLOR][COLOR=#008800]([/COLOR]x,x.^[COLOR=#3333FF]2[/COLOR] ,x,x.^[COLOR=#3333FF]2[/COLOR]-[COLOR=#3333FF]2[/COLOR][COLOR=#008800])[/COLOR][/FONT]
[/FONT][/COLOR]
نتیجه :


matlab9.jpgهمان طور که مشاهده می کنید، دستور plot به صورت خودکار، منحنی ها را با رنگ های متفاوتی نمایش می دهد (برخلاف استفاده از hold on که خود باید رنگ های متفاوتی برای منحنی ها تعریف کنیم).
 

P O U R I A

مدیر مهندسی شیمی مدیر تالار گفتگوی آزاد
مدیر تالار
رسم چند شکل کنار هم در یک پنجره با دستور subplot در متلب

رسم چند شکل کنار هم در یک پنجره با دستور subplot در متلب

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

مثال :
فرض کنید بخواهیم 4 تابع زیر را با دستور ezplot رسم کنیم :
[FONT=MathJax_Math]y[/FONT][FONT=MathJax_Main]=[/FONT][FONT=MathJax_Math]x[/FONT]

[FONT=MathJax_Math]y[/FONT][FONT=MathJax_Main]=[/FONT][FONT=MathJax_Math]x[/FONT][SUP][FONT=MathJax_Main]2[/FONT][/SUP]

[FONT=MathJax_Math]y[/FONT][FONT=MathJax_Main]=[/FONT][FONT=MathJax_Math]x[/FONT][SUP][FONT=MathJax_Main]3[/FONT][/SUP]

[FONT=MathJax_Math]y[/FONT][FONT=MathJax_Main]=[/FONT][FONT=MathJax_Math]x[/FONT][SUP][FONT=MathJax_Main]4[/FONT][/SUP]
و همچنین بخواهیم که نتیجه به صورت 4 شکل جداگانه، اما در یک پنجره و در کنار هم نمایش داده شود. برای این منظور، کدهای زیر را می نویسیم :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace][COLOR=#0000FF]subplot[/COLOR][COLOR=#008800]([/COLOR][COLOR=#3333FF]2[/COLOR],[COLOR=#3333FF]2[/COLOR],[COLOR=#3333FF]1[/COLOR][COLOR=#008800])[/COLOR]
[COLOR=#0000FF]ezplot[/COLOR][COLOR=#008800]([/COLOR][COLOR=#A020F0]'x'[/COLOR],[COLOR=#008800][[/COLOR]-[COLOR=#3333FF]3[/COLOR],[COLOR=#3333FF]3[/COLOR][COLOR=#008800]][/COLOR][COLOR=#008800])[/COLOR]
[COLOR=#0000FF]title[/COLOR][COLOR=#008800]([/COLOR][COLOR=#A020F0]'y=x'[/COLOR][COLOR=#008800])[/COLOR]
 
[COLOR=#0000FF]subplot[/COLOR][COLOR=#008800]([/COLOR][COLOR=#3333FF]2[/COLOR],[COLOR=#3333FF]2[/COLOR],[COLOR=#3333FF]2[/COLOR][COLOR=#008800])[/COLOR]
[COLOR=#0000FF]ezplot[/COLOR][COLOR=#008800]([/COLOR][COLOR=#A020F0]'x^2'[/COLOR],[COLOR=#008800][[/COLOR]-[COLOR=#3333FF]3[/COLOR],[COLOR=#3333FF]3[/COLOR][COLOR=#008800]][/COLOR][COLOR=#008800])[/COLOR]
[COLOR=#0000FF]title[/COLOR][COLOR=#008800]([/COLOR][COLOR=#A020F0]'y=x^2'[/COLOR][COLOR=#008800])[/COLOR]
 
[COLOR=#0000FF]subplot[/COLOR][COLOR=#008800]([/COLOR][COLOR=#3333FF]2[/COLOR],[COLOR=#3333FF]2[/COLOR],[COLOR=#3333FF]3[/COLOR][COLOR=#008800])[/COLOR]
[COLOR=#0000FF]ezplot[/COLOR][COLOR=#008800]([/COLOR][COLOR=#A020F0]'x^3'[/COLOR],[COLOR=#008800][[/COLOR]-[COLOR=#3333FF]3[/COLOR],[COLOR=#3333FF]3[/COLOR][COLOR=#008800]][/COLOR][COLOR=#008800])[/COLOR]
[COLOR=#0000FF]title[/COLOR][COLOR=#008800]([/COLOR][COLOR=#A020F0]'y=x^3'[/COLOR][COLOR=#008800])[/COLOR]
 
[COLOR=#0000FF]subplot[/COLOR][COLOR=#008800]([/COLOR][COLOR=#3333FF]2[/COLOR],[COLOR=#3333FF]2[/COLOR],[COLOR=#3333FF]4[/COLOR][COLOR=#008800])[/COLOR]
[COLOR=#0000FF]ezplot[/COLOR][COLOR=#008800]([/COLOR][COLOR=#A020F0]'x^4'[/COLOR],[COLOR=#008800][[/COLOR]-[COLOR=#3333FF]3[/COLOR],[COLOR=#3333FF]3[/COLOR][COLOR=#008800]][/COLOR][COLOR=#008800])[/COLOR]
[COLOR=#0000FF]title[/COLOR][COLOR=#008800]([/COLOR][COLOR=#A020F0]'y=x^4'[/COLOR][COLOR=#008800])[/COLOR][/FONT]
[/FONT][/COLOR]
نتیجه :

matlab39.jpg
مشاهده می کنید که چهار شکل مورد نظرمان، در کنار هم و در یک پنجره نمایش داده شده اند. اما اکنون شرح بدهیم که چگونه با دستور subplot ، تعداد شکل ها و موقعیت آنها در کنار هم را تعیین کرده ایم. اگر به کدها نگاه کنید، متوجه خواهید شد که برای هر شکل، 3 خط کد نوشته ایم، خط اول با دستور subplot است که تعیین می کند موقعیت آن شکل در کنار سایر شکل ها چگونه باید باشد، خط دوم با دستور ezplot است که برای رسم تابع مورد نظرمان می باشد و خط سوم عنوانی را به شکل اختصاص می دهد تا آن را در کنار سایر شکل ها، به راحتی تشخیص بدهیم. چون 4 شکل داریم، بنابراین 4 بار از دستور subplot در کدها استفاده کردیم. برای 4 شکل، مقادیری که باید درون پرانتز هر دستور subplot نوشته شود، به صورت شکل زیر می باشد :
matlab40.jpg
با توجه به شکل بالا، مشاهده می کنید که در پنجره نمایش شکل ها، 2 ردیف و 2 ستون متشکل از شکل ها خواهیم داشت. بنابراین عدد اول درون پرانتز دستور subplot ، نشان دهنده تعداد کل ردیف ها و عدد دوم درون پرانتز دستور subplot ، نشان دهنده تعداد کل ستون ها برای چیدمان شکل ها در کنار هم می باشد. برای هر موقعیت، یک عدد در نظر گرفته شده است که چون 4 شکل داریم، این عدد از 1 تا 4 می تواند باشد. این عدد، سومین عدد، درون پرانتز دستور subplot خواهد بود. بنابراین با دستور subplot ، قبل از هر دستور ezplot ، موقعیت شکل مربوط به آن دستور ezplot را مشخص کرده ایم.
 

P O U R I A

مدیر مهندسی شیمی مدیر تالار گفتگوی آزاد
مدیر تالار
رسم دو منحنی در یک شکل، با یک محور افقی مشترک و دو محور عمودی غیر مشترک (قرار گرفته در سمت چپ و راست شکل)، با دستور plotyy در متلب

رسم دو منحنی در یک شکل، با یک محور افقی مشترک و دو محور عمودی غیر مشترک (قرار گرفته در سمت چپ و راست شکل)، با دستور plotyy در متلب

گاهی نیاز داریم که دو منحنی دوبعدی را در یک شکل رسم کنیم، به گونه ای که دارای محور افقی مشترک، اما محور عمودی غیر مشترک باشند. دستور plotyy می تواند برای رسم این موارد به کار رود. این دستور، دو منحنی را به دو رنگ متفاوت نمایش می دهد.به مثال زیر توجه کنید :

مثال :


کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace][COLOR=#0000FF]clear[/COLOR] [COLOR=#0000FF]all[/COLOR]
[COLOR=#0000FF]close[/COLOR] [COLOR=#0000FF]all[/COLOR]
[COLOR=#0000FF]clc[/COLOR]
 
X1=[COLOR=#3333FF]0[/COLOR]:[COLOR=#3333FF]0.1[/COLOR]:[COLOR=#3333FF]2[/COLOR]*[COLOR=#0000FF]pi[/COLOR];
Y1=[COLOR=#0000FF]sin[/COLOR][COLOR=#008800]([/COLOR]X1[COLOR=#008800])[/COLOR];
 
X2=[COLOR=#3333FF]0[/COLOR]:[COLOR=#3333FF]0.1[/COLOR]:[COLOR=#3333FF]2[/COLOR]*[COLOR=#0000FF]pi[/COLOR];
Y2=[COLOR=#0000FF]cos[/COLOR][COLOR=#008800]([/COLOR]X2[COLOR=#008800])[/COLOR];
 
[COLOR=#0000FF]plotyy[/COLOR][COLOR=#008800]([/COLOR]X1,Y1,X2,Y2[COLOR=#008800])[/COLOR]
 
[COLOR=#0000FF]xlabel[/COLOR][COLOR=#008800]([/COLOR][COLOR=#A020F0]'x axis'[/COLOR][COLOR=#008800])[/COLOR]
[COLOR=#0000FF]ylabel[/COLOR][COLOR=#008800]([/COLOR][COLOR=#A020F0]'y axis'[/COLOR][COLOR=#008800])[/COLOR][/FONT]
[/FONT][/COLOR]
نتیجه :

136.jpg
 

P O U R I A

مدیر مهندسی شیمی مدیر تالار گفتگوی آزاد
مدیر تالار
رسم دو یا چند شکل با محورهای مختصات غیر مشترک و اندازه های متفاوت، بر روی یکدیگر، در متلب

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

در مباحثی دیگر از سایت باشگاه مهندسان شرح دادیم که چنانچه بخواهیم دو یا چند شکل را در یک پنجره رسم کنیم، باید از دستور hold on استفاده کنیم، اما در آن موارد، محورهای مختصات مشترک بود، اکنون فرض کنید که بخواهیم محورهای مختصات شکل ها متفاوت باشد و همچنین اندازه شکل ها را نیز متفاوت در نظر بگیریم. به عنوان مثال می خواهیم نتیجه نهایی به شکل زیر باشد :
matlab-287.jpg
همان طور که مشاهده می کنید، یک شکل به صورت کوچک تر و با محورهای مختصات جداگانه، بر روی شکلی دیگر قرار گرفته است. اکنون مراحل ساخت این شکل نهایی را به صورت یک مثال شرح می دهیم :

مثال :
ابتدا یکی از شکل های مورد نظرمان را به طور جداگانه رسم می کنیم (می خواهیم هر شکل را به صورت جداگانه ببینیم) :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace][COLOR=#0000FF]clc[/COLOR]
[COLOR=#0000FF]clear[/COLOR] [COLOR=#0000FF]all[/COLOR]
[COLOR=#0000FF]close[/COLOR] [COLOR=#0000FF]all[/COLOR]

[COLOR=#0000FF]pcolor[/COLOR][COLOR=#008800]([/COLOR][COLOR=#008800][[/COLOR][COLOR=#3333FF]1[/COLOR]:[COLOR=#3333FF]10[/COLOR];[COLOR=#3333FF]1[/COLOR]:[COLOR=#3333FF]10[/COLOR][COLOR=#008800]][/COLOR][COLOR=#008800])[/COLOR];[/FONT]
[/FONT][/COLOR]
سه خط اول کدها برای عدم تداخل برنامه فعلی با برنامه های قبلی اجرا شده در متلب می باشد.

نتیجه :

matlab-289.jpg
اکنون شکل دوم را به صورت جداگانه رسم می کنیم :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace][COLOR=#0000FF]clc[/COLOR]
[COLOR=#0000FF]clear[/COLOR] [COLOR=#0000FF]all[/COLOR]
[COLOR=#0000FF]close[/COLOR] [COLOR=#0000FF]all[/COLOR]

[COLOR=#0000FF]mesh[/COLOR][COLOR=#008800]([/COLOR][COLOR=#0000FF]peaks[/COLOR][COLOR=#008800]([/COLOR][COLOR=#3333FF]20[/COLOR][COLOR=#008800])[/COLOR][COLOR=#008800])[/COLOR];[/FONT]
[/FONT][/COLOR]
نتیجه :
matlab-290.jpg

اکنون آن کدها را کنار می گذاریم و می خواهیم کدهایی را بنویسیم که دو شکل را در یک پنجره نمایش بدهد و شکل دوم، با محورهای مختصات جداگانه و البته با اندازه ای کوچکتر، بر روی بخشی از شکل اول نمایش داده شود. کدها به صورت زیر می باشند :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace][COLOR=#0000FF]clc[/COLOR]
[COLOR=#0000FF]clear[/COLOR] [COLOR=#0000FF]all[/COLOR]
[COLOR=#0000FF]close[/COLOR] [COLOR=#0000FF]all[/COLOR]

[COLOR=#0000FF]axes[/COLOR][COLOR=#008800]([/COLOR][COLOR=#A020F0]'position'[/COLOR],[COLOR=#008800][[/COLOR][COLOR=#3333FF]0.1[/COLOR]  [COLOR=#3333FF]0.1[/COLOR]  [COLOR=#3333FF]0.8[/COLOR]  [COLOR=#3333FF]0.8[/COLOR][COLOR=#008800]][/COLOR][COLOR=#008800])[/COLOR]
[COLOR=#0000FF]pcolor[/COLOR][COLOR=#008800]([/COLOR][COLOR=#008800][[/COLOR][COLOR=#3333FF]1[/COLOR]:[COLOR=#3333FF]10[/COLOR];[COLOR=#3333FF]1[/COLOR]:[COLOR=#3333FF]10[/COLOR][COLOR=#008800]][/COLOR][COLOR=#008800])[/COLOR];
[COLOR=#0000FF]axes[/COLOR][COLOR=#008800]([/COLOR][COLOR=#A020F0]'position'[/COLOR],[COLOR=#008800][[/COLOR][COLOR=#3333FF]0.34[/COLOR]  [COLOR=#3333FF]0.3[/COLOR]  [COLOR=#3333FF]0.4[/COLOR]  [COLOR=#3333FF]0.5[/COLOR][COLOR=#008800]][/COLOR][COLOR=#008800])[/COLOR]
[COLOR=#0000FF]mesh[/COLOR][COLOR=#008800]([/COLOR][COLOR=#0000FF]peaks[/COLOR][COLOR=#008800]([/COLOR][COLOR=#3333FF]20[/COLOR][COLOR=#008800])[/COLOR][COLOR=#008800])[/COLOR];[/FONT]
[/FONT][/COLOR]
همان طور که مشاهده می کنید، با دو بار استفاده از دستور axes ، دو محور مختصات جداگانه ساخته ایم. قبل از دستور رسم هر شکل، با دستور axes ، محورهای مختصات را به شکل متفاوتی تعریف کرده ایم. برای مشخصه position ، باید برداری با 4 عدد تعریف شود که ساختار کلی آن به صورت زیر می باشد :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace][COLOR=#008800][[/COLOR]x_start  y_start  x_length  y_length[COLOR=#008800]][/COLOR][/FONT]
[/FONT][/COLOR]
این 4 عدد، بر اساس اندازه پنجره ای هستند که شکل در آن نمایش داده می شود. به جای x_start باید مقدار متناظر برای محل شروع محور مختصات را بر اساس محور افقی (محور x) بنویسیم. به جای y_start نیز باید مقدار متناظر برای محل شروع محور مختصات را بر اساس محور عمودی (محور y) بنویسیم. دو مقدار x_length و y_length نیز میزان طول محورهای مختصات در دو جهت محور x و y را تعیین می کنند.

نتیجه :
matlab-288.jpg
 
بالا