متلب
صفحات وبلاگ
نویسنده: پ متلب - چهارشنبه ۱٦ فروردین ،۱۳٩۱

MATLABایجاد ماتریس در

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

: MATLABایجاد یک ماتریس در

 فقط کافیست عناصر ماتریس را داخل کروشه گذاشتهMATLABبرای ایجاد یک ماتریس در  

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

>> A=[1 2 3]

 

A =

 

     1     2     3

 

 

>> B=[5 12 14;12 9 65;171 65 36]

 

B =

 

     5    12    14

    12     9    65

   171    65    36

برای ایجاد ترانهاده ماتریس بایستی از کوتیشن استفاده کنید:

 

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

>> A=[4 5 6]

 

A =

 

     4     5     6

 

>> A'

 

ans =

 

     4

     5

     6

جمع ماتیس ها:

 

جمع دو ماتریس با درایه های برابر به راحتی با علامت جمع قابل استفاده است :

 

>> A=[1 2 3];

>> B=[4 5 6];

>> C=A+B

 

C =

 

     5     7     9

ضرب ماتریس ها:

ضرب در ماتریس ها به راحتی جمع آنهاست ولی حتما از ضرب پذیری آنها اطمینان داشته باشید:

 

>> A=[1 2 3];

>> B=[5;6;3];

>> C=A*B

 

C =

 

    26

نکته مهم :اگر قرار باشد تک تک عناصر دو ماتریس را در هم ضرب یا بر هم تقسیم کنیم از یک علامت نقطه قبل از عملگر بهره می بریم:

 

>> A=[1 2 3;4 5 6;7 8 9];

>> B=[3 2 1;6 5 4;9 8 7];

>> C=A.*B

 

C =

 

     3     4     3

    24    25    24

    63    64    63

 

 آشنا می کنم:MATLABدر ادمه شما را با چند ماتریس پیش ساخته در

ماتریس صفر:

 می توان ماتریس با تمام درایه های صفر ایجاد کرد.zeros(n)با استفاده از تابع

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

>> A=zeros(3)

 

A =

 

     0     0     0

     0     0     0

     0     0     0

 

>> B=zeros(2,3)

 

B =

 

     0     0     0

     0     0     0

ماتریس همانی:

 ماتریس همانی ایجاد کنید:eye(n)با استفاده از تابع 

>> A=eye(3)

 

A =

 

     1     0     0

     0     1     0

     0     0     1

 

>> A=eye(2,3)

 

A =

 

     1     0     0

     0     1     0

ما تریس یک:

 

 ماتریس با تمام اعضای یک ایجاد کنید:ones(n)با استفاده از تابع   

 

>> A=ones(3)

 

A =

 

     1     1     1

     1     1     1

     1     1     1

 

>> B=ones(2,3)

 

B =

 

     1     1     1

     1     1     1

برای دسترسی به یک عضو ماتریس می توان با اندیس به آن دسترسی داشت:

>> A=[1 2 3;4 5 6; 7 8 9]

 

A =

 

     1     2     3

     4     5     6

     7     8     9

 

>> B=A(2,3)

 

B =

 

     6

 

>> C=A(1,1)

 

C =

 

     1

می توان هر عضو ماتریس را به راحتی تغییر داد برای مثال در ماتریس بالا سطر دوم و ستون اول را به 10 تغییر می دهیم.

>> A(2,1)=10

 

A =

 

     1     2     3

    10     5     6

     7     8     9

 

ایجاد بردار:

 

با علامت کولن می توان به راحتی بردار ایجاد کرد:

بردار=ابتدای بردار:گام حرکت:انتهای بردار

 

>> i=1:2:10

 

i =

 

     1     3     5     7     9

اگر گام حرکت را مشخص نکنید به صورت پیش فرض مقدار یک را خواهد داشت:

 

>> j=-3:3

 

j =

 

    -3    -2    -1     0     1     2     3

 

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

 

>> u=(1:3)'

 

u =

 

     1

     2

     3

انتخاب سطر ها و ستون ها:

 

از دو نقطه به راحتی می توان برای انتخاب سطر یا ستون بهره برد:

 

انتخاب ستون:

>> s=[10 15 26;54 36 65;98 32 98]

 

s =

 

    10    15    26

    54    36    65

    98    32    98

 

>> s(:,1)

 

ans =

 

    10

    54

    98

انتخاب سطر:

 

 

>> s(1,:)

 

ans =

 

    10    15    26

 

انتخاب سطر و ستون خاص:

 

>> s(1:2,2:3)

 

ans =

 

    15    26

    36    65

:sumتا بع

این تابع جمع ستون ها را می دهد:

 

 داریم:sبرای ماتریس

>> sum(s)

 

ans =

 

   162    83   189

 

:repmatتابع

 

برای تولید یک ماتریس که کلیه سطر ها و ستون های آن تکراری است بکار می رود:

سطر ها را دو بار و ستون ها را سه بار تکرار می کنیم:

 

>> B=[1 2 3 4]

 

B =

 

     1     2     3     4

 

>> BB=repmat(B,3,2)

 

BB =

 

     1     2     3     4     1     2     3     4

     1     2     3     4     1     2     3     4

     1     2     3     4     1     2     3     4

حذف عناصر از ماتریس

 

فرض کنید می خواهیم یک عضو از یک بردار و یا ماتریس را حذف کنیم:در این صورت از علامت کروشه باز و بسته    استفاده می کنیم.

 

مثال:

>> a=1:2:10

 

a =

 

     1     3     5     7     9

 

>> a(3)=[]

 

a =

 

     1     3     7     9

 

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

>> a=[1 2 3;4 5 6;7 8 9]

 

a =

 

     1     2     3

     4     5     6

     7     8     9

 

>> a(2,2)=[]

???  Indexed empty matrix assignment is not allowed.

 

تغییر شکل ماتریس ها:

 

:reshapeدستور

 

 می توان ماتریس دیگری ایجاد کنیم که تعداد سطر و ستون آن را مشخص کرده ایم:reshapeبا دستور

 

 

>> a=[1 2 3;4 5 6;7 8 9;10 11 12]

 

a =

 

     1     2     3

     4     5     6

     7     8     9

    10    11    12

 

>> b=reshape(a,2,6)

 

b =

 

     1     7     2     8     3     9

     4    10     5    11     6    12

 

>> b=reshape(a,1,12)

 

b =

 

     1     4     7    10     2     5     8    11     3     6     9    12

 

و یا داریم

 

>> w=1:6;

>> z=reshape(w,2,3)

 

z =

 

     1     3     5

     2     4     6

 

ماتریس های خاص:

 

:magic(n)تابع

 

  n(n^2+1)ی  ایجاد می کند بطوری که مجموع سطر ها و ستون های ماتریس مساوی و برابر n  ماتریس مرتبه 

است:

 

>> magic(3)

 

ans =

 

     8     1     6

     3     5     7

     4     9     2

:pascal(n)تابع

 

جدول پاسکال راتولید می کند:

 

 

>> pascal(4)

 

ans =

 

     1     1     1     1

     1     2     3     4

     1     3     6    10

     1     4    10    20

:hilb(n)تابع

 

 را ایجاد می کند:nماتریس هیلبرت مرتبه

>> hilb(4)

 

ans =

 

    1.0000    0.5000    0.3333    0.2500

    0.5000    0.3333    0.2500    0.2000

    0.3333    0.2500    0.2000    0.1667

    0.2500    0.2000    0.1667    0.1429

 

ماتریس بالا و پایین مثلثی:

 

:trilتابع

 

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

 

>> a=[1 2 3;4 5 6;7 8 9;10 11 12]

 

a =

 

     1     2     3

     4     5     6

     7     8     9

    10    11    12

 

>> tril(a)

 

ans =

 

     1     0     0

     4     5     0

     7     8     9

    10    11    12

:triuتا بع

 

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

 

 

>> triu(a)

 

ans =

 

     1     2     3

     0     5     6

     0     0     9

     0     0     0

:rand(n)تابع

 

برای ایجاد مقادیر تصادفی بین صفر و یک بکار می رود:

>> rand(3)

 

ans =

 

    0.9501    0.4860    0.4565

    0.2311    0.8913    0.0185

    0.6068    0.7621    0.8214

 

>> rand(2,3)

 

ans =

 

    0.4447    0.7919    0.7382

    0.6154    0.9218    0.1763

 

 

برگرفته از http://matlabseven.blogfa.com

 

نویسنده: پ متلب - چهارشنبه ۱٦ فروردین ،۱۳٩۱

ساده تریتن نوع استفاده از این دستور نوشتن figure در خط فرمان است که یک پنجره با مقادی پیش فرض
ایجاد می کند.
منظور از مقادیر پیش فرض، اندازه، مکان و دیگر ویژهگی های پنچره می باشد.
حال کافی است با استفاده از دستوری مثل plot نمودار دلخواه را بر روی پنجره بکشیم.
مثال 1)
 figure
 plot([1 3])
وقتی یک ماتریس به عنوان آرگمان تابع plot استفاده می شود.ستونهای ماتریس را بر حسب اندیس آنرسم می کند.
در مورد بردارها تفاوتی بین سطری یا ستونی بودن آن نیست.
با کمی دقت در بالای پنجره مثال قبل سمت چپ می توانید عبارت figure 1 را ببنید.
(ممکن است به جای 1 عددی دیگری باشد).عدد 1 نشان دهنده دستگیره(handel)نامیده می شود.
در هنگام ایجاد پنجره مطلب یه آن یک عدد اختصاص می دهد.با استفاده از دستگیره می توان
در میان انبوهی از پنجره ها با پنجره مورد نظر کارکرد.
h=figure
با استفاده از این نوع دستور مقدار دستگیره به متغیر h اختصاص پیدا می کند.
مثال 2)
h1=figure;
h2=figure;
figure(h1)
plot([1 2],[3 4])
figure(h2)
plot([1 2;3 4])
figure(n) کهnیک عدد صحیح باعث می شود که
الف) اگر پنچره ای با شمارهn وجود داشته باشد عنوان پنجره فعال روی پنجره های دیگر قرار قرار بگیرد
  ب)  پنجره ای با این شماره ایجاد شود.

نویسنده: پ متلب - سه‌شنبه ۱٥ فروردین ،۱۳٩۱

حتما تا حالا نمودارهایی رو دیده اید که دارای دو محور y می باشند که هر محور y هم رنج داده های متفاوتی از محور دیگه داره. مثلا یه محور بازه بین 0 تا 1000 رو نشون میده که مثلا مربوط به متغیر ارتفاع هستش و یه محور دیگه بازه بین 0.1 تا 0.3 رو نشون می ده که مربوط به تغییرات چگالی هستش.

خب معلومه که چون بازه این دو محور خیلی خیلی با هم اختلاف دارند اگه هر دو تای ارتفاع و چگالی رو تو یه نمودار بکشیم مطمئنا تغییرات چگالی به طور واضح دیده نخواهد شد. برای این کار باید از نمودارهایی با دو محور استفاده کنیم. شاید یکی از مهمترین این نمودارها تو مهندسی نمودار فشار - دما  تو محاسبات حرارت و یا ترمودینامیک باشه.

برای فهم بیشتر ابتدا دستورات زیر رو توی command window اجرا کنید:

>>x = 0:0.01:20;

>>y1 = 200*exp(-0.05*x).*sin(x);

>>y2 = 0.8*exp(-0.5*x).*sin(10*x);

حالا می خواهیم هر دو نمودار y1 و y2 رو نسبت به x بکشیم. دستور زیر را اجرا کنید:

>>plot(x,y1,'b',x,y2,'g')
همانطور که میبینید (شکل 1) از اونجا که بازه تغییرات y1 خیلی بزرگتر از y2 هستش اصلا تغییرات y2 در این شکل دیده نمیشه و برای مثال شما نمیتونید همچین شکلی رو توی پایان نامه یا مقاله قرار دهید.
پس بهتر است که از یک نمودار با دو محور y استفاده کنیم که در یک محور نمودار y1 و در دیگری y2 را رسم کنیم. دستور نمودارهای دو محوره در متلب plotyy می باشد. دستور زیر را اجرا نمائید:

>> plotyy(x,y1,x,y2)

همانطور که دیده می شود (شکل 2) نموداری با دو محور y برای ما رسم می شود که در محور سمت چپ نمودار اولی یعنی y1 بر حسب x و در محور سمت راست نمودار دومی یعنی y2 بر حسب x رسم شده است. در این عکس می توان تغییرات y2 را به وضوح مشاهده نمود.

در رابطه به نمودار های دو محوره چندین بحث وجود دارد که باید به آنها اشاره کنیم:

1- چگونه یک محور و یا هر دو محور y و یا محور x را لگاریتمی کنیم؟

جواب: همانطور که می دانیم در نمودارهای دو بعدی نوع محورها می توانند خطی و یا لگاریتمی باشند. برای توضیحات بیشتر می توانید به «ایجاد نمودارهای دوبعدی با محورهای لگاریتمی در متلب» در همین وبلاگ مراجعه کنید.

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

به جای دستور plotyy(x,y1,x,y2) که نوشتیم می توانستیم یکی از دستورات زیر را اجرا کنیم:

plotyy(x,y1,x,y2) = plotyy(x,y1,x,y2,'plot') = plotyy(x,y1,x,y2,@plot)

عبارت 'plot' در دستور دوم و یا @plot در دستور سوم به این معنی است که هر دو محور y دارای نوع خطی می باشند. چون هر دو محور y دارای نوع خطی می باشند نوشتن یک عبارت 'plot'  و یا @plot  برای هر دو به کار می رود. همانطور که دیدیم ننوشتن هیچ عبارتی هم به صورت default نوع محور را خطی می کند.

اما اگرکه مثلا بخواهیم محور y مربوط به نمودار y1 خطی و نمودار y2 لگاریتمی باشد باید به صورت زیر بنویسیم:

>> plotyy(x,y1,x,y2,'plot','semilogy')

واضح است که به جای عبارت 'semilogy' می توان @semilogy و به جای 'plot' می توان @plot را نوشت.

دیگر حالتها را می توان به صورت زیر نوشت:

الف- هر دو محور y لگاریتمی و محور x خطی :                                                               >>plotyy(x,y1,x,y2,'semilogy')

ب- هر دو محور y لگاریتمی و محور x لگاریتمی :                                                                 ‌>>plotyy(x,y1,x,y2,'loglog')

عبارت plotyy(x,y1,x,y2,'loglog','plot') دارای خطای منطقی می باشد علت آن هم این است که از آنجا که ما یک محور x داریم این محور نمی تواند در آن واحد هم خطی باشد و هم لگاریتمی که در این عبارت محور x برای y1 لگاریتمی و برای y2 خطی می باشد. پس باید حواسمان را جمع کنیم.!

2- رنگ نمودارها و محورها را چگونه تغییر دهیم و یا چگونه ضخامت خط را تغییر داده و یا marker بر نمودار بگذاریم و یا اینکه چگونه برچسب برای محورها قرار دهیم؟

برچسب گذاری برای محور x و محور y سمت چپ با همان دستورات xlabel و ylabel انجام می پذیرد:

>>xlabel('x')

>>ylabel('y_1')

می توان با دستور title هم یک عنوان به نمودار داد و یا با دستور legend می توان برای نمودار راهنما قرار داد:

>>title('Type of Graph - -> plotyy')

>>legend('y_1','y_2')

اما مشکل قرار دادن برچسب بر روی محور y سمت راست می باشد.

برای قرار دادن بر چسب بر روی محور y سمت راست نیاز است که دستورات set و get را توضیح دهیم که چون هنوز پست مربوط به این دستورات را برایتان قرار نداده ام مجبورم فقط خود دستورات را بنویسم. اگرکه در فهم آن مشکلی داشتید می توانید منتظر بمانید تا من در پست های آینده این دستورات مهم را توضیح دهم.

برای گذاشتن برچسب بر روی محور y سمت راست و یا تغییر دادن رنگ نمودارهای آبی و سبز و یا تغییر رنگ محورها باید ابتدا دستور plotyy را به شکل زیر بنویسیم:

>>[AX P1 P2]=plotyy(x,y1,x,y2);

با این کار سه متغیر به نامهای AX و P1 و P2 در workspace ساخته می شوند که متغیر AX یک بردار با دو مولفه می باشد. مولفه AX(1) نشان دهنده محور y سمت چپ و مولفه AX(2) نشان دهنده محور y سمت راست می باشد.

متغیر P1 نشان دهنده نمودار اولی یعنی y1 بر حسب x و متغیر P2 نشان دهنده نمودار دومی یعنی y2 بر حسب x می باشد. پس برای نمونه اگر که می خواهیم رنگ نمودار y1 بر حسب x که در اینجا آبی هست را تغییر دهیم باید خاصیت رنگ متغیر P1 را تغییر دهیم و یا اگر می خواهیم برای نمودار y2 بر حسب x از marker استفاده کنیم باید برای متغیر P2 از marker استفاده کنیم.

مثلا اگر قرار است رنگ محور سمت چپ را عوض کنیم باید در واقع رنگ AX(1) را عوض کنیم و یا مثلا اگر قرار است برای محور سمت راست برچسب بگذاریم باید خاصیت ylabel را برای AX(2) عوض کنیم.

اما تغییر خاصیت نمودارها مانند رنگ، ضخامت خط، مارکر و ...: با دستورات زیر می توان رنگ نمودارها را به دلخواه عوض کرد:

>>set(P1,'color','r')

>>set(P2,'color',[0.5 0 1])

با دستور اول رنگ نمودار y1 قرمز می شود. می توان به جای 'r' از دیگر حروف استفاده کرد. برای مطالعه بیشتر به بخش «نمودار های دو بعدی در متلب» همین وبلاگ مراجعه نمائید.

دستور دوم نوع دیگری از ترکیب رنگها می باشد. متلب با خاصیت RGB سروکار دارد. سه عددی که در دستور بعدی به کار رفته است به ترتیب عدد اول سهم رنگ قرمز (R) و عدد دوم سهم رنگ سبز (G) و عدد سوم سهم رنگ آبی (B) را نشان می دهد. که این اعداد باید بین صفر و یک باشند. مثلا اگر هر سه را یک قرار دهیم رنگ حاصله سفید و اگر هر سه را صفر قرار دهیم رنگ حاصله مشکی خواهد بود. برای مثال  به جای عبارت set(P1,'color','r') از عبارت set(P1,'color',[1 0 0]) نیز می توان استفاده کرد.

مثلا می خواهیم نوع خط نمودار y2 را به خط چین تغییر دهیم و یا نوع خط نمودار y1 را نقطه چین کنیم و مثلا ضخامت خط نمودار y1 را 3 قرار دهیم:

>>set(P2,'linestyle','--')

>>set(P1,'linestyle',':','Linewidth',2)

و یا اینکه برای نمودار y2 از marker دایره استفاده کنیم:

>>set(P2,'marker','o')

تغییر رنگ خود محورها:

همانطور که در شکل 2 مشاهده می کنید به صورت پیش فرض رنگ محور سمت چپ آبی و محور سمت راست سبز می باشد. اگر که بخواهید خاصیت رنگ این محورها را تغییر دهید همانطور که گفته شد باید خاصیت رنگ AX(1) برای محور سمت چپ و خاصیت رنگ AX(2) برای محور سمت راست را تغییر دهیم. هر محور خاصیتی به نام ycolor دارد که ما با دستور set می توانیم یک رنگی رو به اون set کنیم:

>>set(AX(1),'ycolor','k')

>>set(AX(2),'ycolor','m')

با دستور اول رنگ محور سمت چپ مشکی شده و با دستور دوم رنگ محور سمت راست بنفش می شود. می توانید از ترکیب رنگهای RGB هم استفاده نمائید مانند:

>>set(AX(1),'ycolor',[1 1 1])

با این دستور رنگ محور سمت چپ سفید می شود.

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

>>set(AX,'ycolor','r')

با این دستور رنگ هر دو محور قرمز خواهد شد.

 

گذاشتن بر چسب برای محور y سمت راست:

همانطور که اشاره کردیم با دستور ylabel می توانیم برای محور سمت چپ برچسب بگذاریم اما برای محور سمت راست باید از دستور دیگری استفاده نمائیم. هر محوری خاصیتی به نام string دارد که در واقع برچسبی است که بر آن محور قرار میگیرد. پس به زبان ساده ما باید string محور سمت راست را تغییر دهیم. اما علاوه بر این مطلب باید بدانیم که این string مربوط می شه به خاصیت ylabel اون محور. به طور ساده اگه بخوام بگم باید بگیم ما می خواهیم خاصیت ylabel مربوط به محور AX(2) رو تغییر بدهیم، یعنی چی که تغییر بدهیم؟ یعنی اینکه خاصیت string اون رو به هر چیزی که ما می خواهیم تغییر دهیم. این مطالبی رو که گفتم به زبان متلب باید به صورت زیر بنویسیم:

>>set(get(AX(2),'ylabel'),'string','y_2')

به کمک دستور get(AX(2),'ylabel') به متلب می فهمونیم که چه چیزی رو تو حافظه بگیره و ما با این دستور می گیم که خاصیت ylabe از محور سمت راست رو بگیر. خوب متلب میگه گرفتم، حالا با دستور set میگیم string اون رو به y_2 تغییر بده. به جای y_2 هر چیزی که بنویسید به عنوان برچسب محور سمت راست قرار داده خواهد شد.

واضح است که به جای دستور ylabel('y_1') می توان از دستور زیر استفاده کرد:

>>set(get(AX(1),'ylabel'),'string','y_1')

که به نظر کار بیهوده ای می رسد چراکه دستور ylabel('y_1') خیلی کوتاه تر و فهم آن ساده تر می باشد!

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

>>set(AX,'xcolor','g')

با این دستور رنگ محور x سبز می شود. با دستور زیر هم میتونید رنگ محور x بالا رو تغییر بدید:

>> set(gca,'xcolor','k')

با این دستور رنگ محور بالایی مشکی خواهد شد. (gca مخفف get current axis می باشد.)

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

شکل های 1 و2 و 3 و همچنین m فایل مربوط به این پست را در آدرس زیر به صورت یه فایل rar قرار داده ام که می تونید دانلود کنید. پسورد فایل rar هم هستش: www.elmoya.mihanblog.com

https://rapidshare.com/files/459251068/Plotyy_files.rar


نویسنده: پ متلب - سه‌شنبه ۱٥ فروردین ،۱۳٩۱

حتما تا حالا نمودارهایی رو دیده اید که دارای دو محور y می باشند که هر محور y هم رنج داده های متفاوتی از محور دیگه داره. مثلا یه محور بازه بین 0 تا 1000 رو نشون میده که مثلا مربوط به متغیر ارتفاع هستش و یه محور دیگه بازه بین 0.1 تا 0.3 رو نشون می ده که مربوط به تغییرات چگالی هستش.

خب معلومه که چون بازه این دو محور خیلی خیلی با هم اختلاف دارند اگه هر دو تای ارتفاع و چگالی رو تو یه نمودار بکشیم مطمئنا تغییرات چگالی به طور واضح دیده نخواهد شد. برای این کار باید از نمودارهایی با دو محور استفاده کنیم. شاید یکی از مهمترین این نمودارها تو مهندسی نمودار فشار - دما  تو محاسبات حرارت و یا ترمودینامیک باشه.

برای فهم بیشتر ابتدا دستورات زیر رو توی command window اجرا کنید:

>>x = 0:0.01:20;

>>y1 = 200*exp(-0.05*x).*sin(x);

>>y2 = 0.8*exp(-0.5*x).*sin(10*x);

حالا می خواهیم هر دو نمودار y1 و y2 رو نسبت به x بکشیم. دستور زیر را اجرا کنید:

>>plot(x,y1,'b',x,y2,'g')
همانطور که میبینید (شکل 1) از اونجا که بازه تغییرات y1 خیلی بزرگتر از y2 هستش اصلا تغییرات y2 در این شکل دیده نمیشه و برای مثال شما نمیتونید همچین شکلی رو توی پایان نامه یا مقاله قرار دهید.
پس بهتر است که از یک نمودار با دو محور y استفاده کنیم که در یک محور نمودار y1 و در دیگری y2 را رسم کنیم. دستور نمودارهای دو محوره در متلب plotyy می باشد. دستور زیر را اجرا نمائید:

>> plotyy(x,y1,x,y2)

همانطور که دیده می شود (شکل 2) نموداری با دو محور y برای ما رسم می شود که در محور سمت چپ نمودار اولی یعنی y1 بر حسب x و در محور سمت راست نمودار دومی یعنی y2 بر حسب x رسم شده است. در این عکس می توان تغییرات y2 را به وضوح مشاهده نمود.

در رابطه به نمودار های دو محوره چندین بحث وجود دارد که باید به آنها اشاره کنیم:

1- چگونه یک محور و یا هر دو محور y و یا محور x را لگاریتمی کنیم؟

جواب: همانطور که می دانیم در نمودارهای دو بعدی نوع محورها می توانند خطی و یا لگاریتمی باشند. برای توضیحات بیشتر می توانید به «ایجاد نمودارهای دوبعدی با محورهای لگاریتمی در متلب» در همین وبلاگ مراجعه کنید.

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

به جای دستور plotyy(x,y1,x,y2) که نوشتیم می توانستیم یکی از دستورات زیر را اجرا کنیم:

plotyy(x,y1,x,y2) = plotyy(x,y1,x,y2,'plot') = plotyy(x,y1,x,y2,@plot)

عبارت 'plot' در دستور دوم و یا @plot در دستور سوم به این معنی است که هر دو محور y دارای نوع خطی می باشند. چون هر دو محور y دارای نوع خطی می باشند نوشتن یک عبارت 'plot'  و یا @plot  برای هر دو به کار می رود. همانطور که دیدیم ننوشتن هیچ عبارتی هم به صورت default نوع محور را خطی می کند.

اما اگرکه مثلا بخواهیم محور y مربوط به نمودار y1 خطی و نمودار y2 لگاریتمی باشد باید به صورت زیر بنویسیم:

>> plotyy(x,y1,x,y2,'plot','semilogy')

واضح است که به جای عبارت 'semilogy' می توان @semilogy و به جای 'plot' می توان @plot را نوشت.

دیگر حالتها را می توان به صورت زیر نوشت:

الف- هر دو محور y لگاریتمی و محور x خطی :                                                               >>plotyy(x,y1,x,y2,'semilogy')

ب- هر دو محور y لگاریتمی و محور x لگاریتمی :                                                                 ‌>>plotyy(x,y1,x,y2,'loglog')

عبارت plotyy(x,y1,x,y2,'loglog','plot') دارای خطای منطقی می باشد علت آن هم این است که از آنجا که ما یک محور x داریم این محور نمی تواند در آن واحد هم خطی باشد و هم لگاریتمی که در این عبارت محور x برای y1 لگاریتمی و برای y2 خطی می باشد. پس باید حواسمان را جمع کنیم.!

2- رنگ نمودارها و محورها را چگونه تغییر دهیم و یا چگونه ضخامت خط را تغییر داده و یا marker بر نمودار بگذاریم و یا اینکه چگونه برچسب برای محورها قرار دهیم؟

برچسب گذاری برای محور x و محور y سمت چپ با همان دستورات xlabel و ylabel انجام می پذیرد:

>>xlabel('x')

>>ylabel('y_1')

می توان با دستور title هم یک عنوان به نمودار داد و یا با دستور legend می توان برای نمودار راهنما قرار داد:

>>title('Type of Graph - -> plotyy')

>>legend('y_1','y_2')

اما مشکل قرار دادن برچسب بر روی محور y سمت راست می باشد.

برای قرار دادن بر چسب بر روی محور y سمت راست نیاز است که دستورات set و get را توضیح دهیم که چون هنوز پست مربوط به این دستورات را برایتان قرار نداده ام مجبورم فقط خود دستورات را بنویسم. اگرکه در فهم آن مشکلی داشتید می توانید منتظر بمانید تا من در پست های آینده این دستورات مهم را توضیح دهم.

برای گذاشتن برچسب بر روی محور y سمت راست و یا تغییر دادن رنگ نمودارهای آبی و سبز و یا تغییر رنگ محورها باید ابتدا دستور plotyy را به شکل زیر بنویسیم:

>>[AX P1 P2]=plotyy(x,y1,x,y2);

با این کار سه متغیر به نامهای AX و P1 و P2 در workspace ساخته می شوند که متغیر AX یک بردار با دو مولفه می باشد. مولفه AX(1) نشان دهنده محور y سمت چپ و مولفه AX(2) نشان دهنده محور y سمت راست می باشد.

متغیر P1 نشان دهنده نمودار اولی یعنی y1 بر حسب x و متغیر P2 نشان دهنده نمودار دومی یعنی y2 بر حسب x می باشد. پس برای نمونه اگر که می خواهیم رنگ نمودار y1 بر حسب x که در اینجا آبی هست را تغییر دهیم باید خاصیت رنگ متغیر P1 را تغییر دهیم و یا اگر می خواهیم برای نمودار y2 بر حسب x از marker استفاده کنیم باید برای متغیر P2 از marker استفاده کنیم.

مثلا اگر قرار است رنگ محور سمت چپ را عوض کنیم باید در واقع رنگ AX(1) را عوض کنیم و یا مثلا اگر قرار است برای محور سمت راست برچسب بگذاریم باید خاصیت ylabel را برای AX(2) عوض کنیم.

اما تغییر خاصیت نمودارها مانند رنگ، ضخامت خط، مارکر و ...: با دستورات زیر می توان رنگ نمودارها را به دلخواه عوض کرد:

>>set(P1,'color','r')

>>set(P2,'color',[0.5 0 1])

با دستور اول رنگ نمودار y1 قرمز می شود. می توان به جای 'r' از دیگر حروف استفاده کرد. برای مطالعه بیشتر به بخش «نمودار های دو بعدی در متلب» همین وبلاگ مراجعه نمائید.

دستور دوم نوع دیگری از ترکیب رنگها می باشد. متلب با خاصیت RGB سروکار دارد. سه عددی که در دستور بعدی به کار رفته است به ترتیب عدد اول سهم رنگ قرمز (R) و عدد دوم سهم رنگ سبز (G) و عدد سوم سهم رنگ آبی (B) را نشان می دهد. که این اعداد باید بین صفر و یک باشند. مثلا اگر هر سه را یک قرار دهیم رنگ حاصله سفید و اگر هر سه را صفر قرار دهیم رنگ حاصله مشکی خواهد بود. برای مثال  به جای عبارت set(P1,'color','r') از عبارت set(P1,'color',[1 0 0]) نیز می توان استفاده کرد.

مثلا می خواهیم نوع خط نمودار y2 را به خط چین تغییر دهیم و یا نوع خط نمودار y1 را نقطه چین کنیم و مثلا ضخامت خط نمودار y1 را 3 قرار دهیم:

>>set(P2,'linestyle','--')

>>set(P1,'linestyle',':','Linewidth',2)

و یا اینکه برای نمودار y2 از marker دایره استفاده کنیم:

>>set(P2,'marker','o')

تغییر رنگ خود محورها:

همانطور که در شکل 2 مشاهده می کنید به صورت پیش فرض رنگ محور سمت چپ آبی و محور سمت راست سبز می باشد. اگر که بخواهید خاصیت رنگ این محورها را تغییر دهید همانطور که گفته شد باید خاصیت رنگ AX(1) برای محور سمت چپ و خاصیت رنگ AX(2) برای محور سمت راست را تغییر دهیم. هر محور خاصیتی به نام ycolor دارد که ما با دستور set می توانیم یک رنگی رو به اون set کنیم:

>>set(AX(1),'ycolor','k')

>>set(AX(2),'ycolor','m')

با دستور اول رنگ محور سمت چپ مشکی شده و با دستور دوم رنگ محور سمت راست بنفش می شود. می توانید از ترکیب رنگهای RGB هم استفاده نمائید مانند:

>>set(AX(1),'ycolor',[1 1 1])

با این دستور رنگ محور سمت چپ سفید می شود.

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

>>set(AX,'ycolor','r')

با این دستور رنگ هر دو محور قرمز خواهد شد.

 

گذاشتن بر چسب برای محور y سمت راست:

همانطور که اشاره کردیم با دستور ylabel می توانیم برای محور سمت چپ برچسب بگذاریم اما برای محور سمت راست باید از دستور دیگری استفاده نمائیم. هر محوری خاصیتی به نام string دارد که در واقع برچسبی است که بر آن محور قرار میگیرد. پس به زبان ساده ما باید string محور سمت راست را تغییر دهیم. اما علاوه بر این مطلب باید بدانیم که این string مربوط می شه به خاصیت ylabel اون محور. به طور ساده اگه بخوام بگم باید بگیم ما می خواهیم خاصیت ylabel مربوط به محور AX(2) رو تغییر بدهیم، یعنی چی که تغییر بدهیم؟ یعنی اینکه خاصیت string اون رو به هر چیزی که ما می خواهیم تغییر دهیم. این مطالبی رو که گفتم به زبان متلب باید به صورت زیر بنویسیم:

>>set(get(AX(2),'ylabel'),'string','y_2')

به کمک دستور get(AX(2),'ylabel') به متلب می فهمونیم که چه چیزی رو تو حافظه بگیره و ما با این دستور می گیم که خاصیت ylabe از محور سمت راست رو بگیر. خوب متلب میگه گرفتم، حالا با دستور set میگیم string اون رو به y_2 تغییر بده. به جای y_2 هر چیزی که بنویسید به عنوان برچسب محور سمت راست قرار داده خواهد شد.

واضح است که به جای دستور ylabel('y_1') می توان از دستور زیر استفاده کرد:

>>set(get(AX(1),'ylabel'),'string','y_1')

که به نظر کار بیهوده ای می رسد چراکه دستور ylabel('y_1') خیلی کوتاه تر و فهم آن ساده تر می باشد!

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

>>set(AX,'xcolor','g')

با این دستور رنگ محور x سبز می شود. با دستور زیر هم میتونید رنگ محور x بالا رو تغییر بدید:

>> set(gca,'xcolor','k')

با این دستور رنگ محور بالایی مشکی خواهد شد. (gca مخفف get current axis می باشد.)

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

شکل های 1 و2 و 3 و همچنین m فایل مربوط به این پست را در آدرس زیر به صورت یه فایل rar قرار داده ام که می تونید دانلود کنید. پسورد فایل rar هم هستش: www.elmoya.mihanblog.com

https://rapidshare.com/files/459251068/Plotyy_files.rar


نویسنده: پ متلب - سه‌شنبه ۱٥ فروردین ،۱۳٩۱

یکی از پایه ای ترین مباحث برای کسی که می خواهد با متلب کار کند دونستن کار با ماتریس ها و بردار ها هستش.

در این پست می خوام نحوه ایجاد بردارها و ماتریس ها و توابع مخصوص به ماتریس ها رو بهتون آموزش بدم. امیدوارم که بپسندین!

 

نحوه ایجاد بردار:

راه اول: یک زمانی اعضای بردار رو خودتون دستی می خواهید وارد کنید. مثلا یه بردار سرعت دارید که اعضای اون 20 و 25 و 30 می باشد. برای این کار این اعداد را با یک فاصله و بین دو علامت [ ] قرار می دهید:

>>velocity=[20  25  30]

با این کار بردار سرعت با سایز 1x3 برای شما ایجاد می گردد.

همانطور که مشاهده کردید با این کار شما یک بردار سطری ایجاد کرده اید. می توانید به جای فاصله بین اعداد از “,”  هم استفاده کنید:

>>velocity=[20,25,30]

پس طریقه ایجاد یک بردار سطری زمانیکه درایه های اون بردار رو خودتون وارد می کنید را فرا گرفتیم.

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

1- از ترانهاده استفاده کنیم. علامت ترانهاده در متلب یک تک کوتیشن هستش:

>>v = [20  25  30]’

2- به جای گذاشتن فاصله یا “,” در بین اعداد از “;” استفاده کنیم:

>>v = [25;25;30]

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

 

راه دوم:

راه دوم، ایجاد یک بردار با فاصله مساوی بین درایه های اون می باشد. برای مثال می خواهیم برداری با درایه های 1و3و5و7و9و11 ایجاد کنیم. میبینیم که در این بردار عدد اول 1 و بقیه اعداد دو تا دوتا اضافه شده اند تا به عدد آخر یعنی 11 رسیده اند. متلب یک فرم مشخصی برای این گونه بردارها دارد:

m:q:n

این فرم نوشتن یعنی از عدد m تا عدد n ، q تا q‌ تا برو جلو. در واقع گام بردار q می باشد:

>>A=1:2:11

با دستور بالا بردار A با درایه ای 1و3و5و7و9و11 ایجاد می گردد. که یک بردار سطری می باشد.

در ایجاد بردار سطری گذاشتن [ ] نیازی نمی باشد.

اما اگر بخواهید به همین فرم یک بردار ستونی ایجاد کنید و باید ‌[ ] را گذاشته و علامت ترانهاده را نیز به کار ببرید:

>>B=[1:2:11]’

نکات:

1- اگر عدد گام را ننویسید مثل A=1:4 خود متلب گام را برابر با یک می گیرد.

2- اگر بخواهید از گام منفی استفاده کنید حتما باید m از n بزرگتر باشد: B=5:-2:0

3- در این حالت باید حواستان باشد که ممکن است عدد n جزو درایه های یک بردار نباشد چراکه همه چیز بسته به گام دارد. برای مثال در مثال زیر عدد 10 جزو درایه های بردار نخواهد بود:

>>C=1:2:10

 

راه سوم: استفاده از دستور linspace(m,n,q)

به کمک این دستور می توان برداری را بدین صورت ایجاد کرد که عدد اول آن بردار m و عدد آخر n خواهد بود و  بین این دو عدد تعداد q-2 عدد دیگر قرار دارد که متلب خود فاصله بین اعداد را مشخص خواهد کرد:

>>linspace(3,5,4)

ans =

       3.0000    3.6667    4.3333    5.0000

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

>>linspace(3,5,4)’

نکته: متلب دستور دیگری به نام logspace هم دارد که کارش شبیه linspace است با این تفاوت که تقسیم بندی ها لگاریتمی می باشد.

 

اعمال بر روی بردارها:

1- برای انتخاب یک عضو از یک بردار باید جایگاه آن را به کار برد:

>>A=[-1  2  0  5]

>>A(3)

ans =

         0

اگر بخواهیم عضو اول تا سوم بردار A را نشان دهیم:

>>A(1:3)

اگر بخواهیم عضو دوم تا آخر بردار A را نشان دهیم:

>>A(2:end)

اگر بخواهیم عضوهای اول و دوم وچهارم از A را نشان دهیم:

>>A([1 2 4])

اگر بخواهیم عضو های اول و سوم از A را نشان دهیم:

>>A([1 3])

یا

>>A(1:2:3)

2- برای عوض کردن یک عضو یا چند عضو کافیست در برابر جایگاه آن مقدار جدید را وارد کنیم. مثلا می خواهیم عضو سوم از بردار A که صفر می باشد را برابر با 10 قرار دهیم:

>>A(3)=10

A=

    -1   2   10   5

حالا می خواهیم اعضای 1 تا 3 را عوض کنیم:

>>A(1:3)=[12  13  6]

A=

12  13  6  5

3- برای حذف یک یا چند عضو جایگاه آن را برابر با   [‌]  قرار می دهیم. مثلا می خواهیم عضد چهارم بردار A را حذف کنیم:

>>A(4)=[]

A=

     12  13  6

توجه کنید که با این کار سایز A هم 1x3 خواهد شد. برای حذف چندین عضو هم به همین ترتیب عمل می کنیم:

>>A(1:2)=[]

A=

     6

4- برای اضافه کردن هم می توانیم در برابر جایگاههای جدید مقادیر جدید را قرار دهیم. فرض کنید بردار B به صورت زیر باشد:

>>B=[1  2  5  -4]

حال می خواهیم به این بردار عضو پنجمی را با مقدار 9 اضافه کنیم:

>>B(5)=9

B=

    1  2  5  -4  9

توجه کنید که مثلا حالا می خواهید عضو نهمی با مقدار 3- به B اضافه کنید:

>>B(9)=-3

B=

     1  2  5  -4  9  0  0   0  -3

چون برای جایگاههای ششم و هفتم و هشتم مقداری داده نشد خود متلب آنها را برابر صفر در نظر میگیرد.

5- چسباندن دو بردار به یکدیگر. فرض کنید دو بردار  A و B را داریم و می خواهیم با کنار هم قرار دادن آنها بردار C را ایجاد کنیم:

اگر A و B سطری باشند:

>>C=[A B]

اگر A و B‌ ستونی باشند:

>>C=[A;B]

 

نحوه ایجاد ماتریس:

فرض کنید که می خواهیم ماتریس زیر را ایجاد کنیم:

           1200  5.0  0.25   1.1

data = 1400  4.1  0.23   0.8

           1500  3.2  0.22   0.3

کافی است سطر به سطر اعداد را بنویسیم و برای رفتن به سطر بعد از یک سمیکالون استفاده کنیم. می توانید برای ایجاد سطرها در بین اعداد از فاصله یا کاما استفاده کنید:

>>data = [1200  5.0  0.25  1.1;1400  4.1  0.23  0.8;1500  3.2  0.22 0.3]

اعمال بر ماتریس ها:

1- برای انتخاب یک عضو از ماتریس باید جایگاه سطر و ستون آنرا به ترتیب اول سطر و دوم ستون مشخص کنید. برای مقال برای انتخاب عدد 1400 باید بنویسیم:

>>data(2,1)

برای انتخاب مثلا دو عدد 4.1 و 0.23 باید بنویسیم:

>>data(2,2:3)

برای انتخاب همه اعضای ستون دوم باید یکی از حالتهای زیر را بنویسیم:

>>data(1:3,2) = data(1:end,2) = data(:,2)

2- برای عوض کردن اعضا باید سطر و ستون را مشخص کرده و برابر اعداد جایگزین نمائیم.

برای عوض کردن عدد سطر سوم و ستون چهارم با عدد 10:

>>data(3,4)=10

برای عوض کردن اعداد سطر سوم:

>>data(3,:)=[1 2 3 4]

برای عوض کردن اعضای ستون اول:

>>data(:,1)=[4;5;6]

3- برای حذف اعضا: دقت کنید که در حذف فقط می توانید یک سطر و یا سا ستون را کلا حذف کنید چراکه در غیر اینصورت حالت ماتریسی به هم خواهد خورد. برای حذف ستون سوم:

>>data(1:3,3)=[]

4- برای اضافه کردن اعضا: اضافه کردن هم می تواند به صورت سری یا ستونی باشد:

>>data(:,5)=[6;7;8]

>>data(4,:)=[1 0 -1 2]

>>data(6,6)=9

در عبارت آخر عوض سطر 6  و ستون 6 برابر با 9 قرار میگیرد و دیگر اعضا جدید برابر صفر خواهند شد.

http://elmoya.mihanblog.com/post/28

نویسنده: پ متلب - سه‌شنبه ۱٥ فروردین ،۱۳٩۱

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

1. fix(x)

دستور fix قسمت اعشاری عدد x را حذف می کند.

fix(-2.5) = -2

fix(1.05) = 1

 

2. round(x)

دستور round عدد x را به نزدیکترین عدد صحیح به خودش گرد می کند.

round(5.7) = 6

round(5.5) = 6

round(-3.8) = -4

round(-5.5) = -6

 

3. ceil(x)

دستور ceil عدد x را به کوچکترین عدد صحیح بزرگتر یا مساوی x گرد می کند.

ceil(-3.8) = -3

اعداد صحیح بزرگتر از 3.8- عبارتند از : 3- و 2- و 1- و 0 و 1 و . . . که کوچکرترین آنها 3- می باشد پس به 3- گرد می کند.

ceil(4.9) = 5

اعداد صحیح بزرگتر از 4.9 عبارتند از : 5 و  6 و 7 و . . . که کوچکترین آنها 5 می باشد پس به 5 گرد می کند.

 

4. floor(x)

دستور floor عدد x را به بزرگترین عدد صحیح کوچکتر یا مساوی x گرد می کند.

floor(7.5) = 7

اعداد صحیح کوچکتر یا مساوی 7.5 عبارتند از: 7 و 6 و 5 و . . . پس به بزرگترین آنها یعنی 7 گرد می کند.

و به همین ترتیب:

floor(-3.7) = -4

نویسنده: پ متلب - سه‌شنبه ۱٥ فروردین ،۱۳٩۱

قبل از اینکه بخواهم نحوه ایجاد نمودارهای 2 بعدی رو به شما عزیزان بگم باید یادآوری کنم فرض من بر این هست که شما دوستان مباحث ابتدایی متلب مثل ایجاد بردارها و ماتریس ها و کار کردن با m فایل ها را بلدید. اما ان شاء الله در آینده من ابتدایی ترین مباحث رو هم خدمتتون ارائه خواهم کرد. اما فعلاً نه!

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

t=0:0.01:2*pi;

u=sin(t);

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

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

plot(t,u)

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

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

grid on    یا    grid

دستور grid on یا grid باعث شبکه بندی صفحه مختصات میشه.

xlabel('t')

ylabel('u')

title('graph u vs t ')

legend('sin')

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

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

فرض کنید که می خواهید در روی بر چسب محور x علامت ریاضی آلفا یا بتا یا هر حرف یونانی دیگه قرار داده بشه. برای این کار در بین دو علامت ' ' کلمه alpha یا beta را تایپ میکنید و قبلش علامت \ را می گذارید:

xlabel('\alpha')

title('\beta')

حال فرض کنید که می خواهید اندیس بالا یا پایین در روی نوشته هاتون داشته باشید. اندیس پایین با علامت _ ایجاد میشه و اندیس بالا با علامت ^ ایجاد میشه:

xlabel('x_i')

legend('R^2')

اما فرض کنید که می خواهید بر روی برچسب محور x (یا محور y یا در عنوان و یا در راهنما) عبارت R را بنویسید که در اندیس پایین اون عبارت index باشه. شاید فکر کنید باید به صورت زیر بنویسید:

xlabel(R_index)

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

legend('R^index')

برای اینکه این دستور درست کار بکنه 2 راه وجود داره که راه اول کمی غیر منطقی به نظر میرسه:

راه اول:

xlabel(R_i_n_d_e_x)

legend(R^i^n^d^e^x)

این کار برای اندیسهایی که تعداد حروفشون کمه شاید به نظر غیر منطقی نیاد اما اگرکه کلمه اندیس بالا یا پایین 50 حرف باشه غیر منطقیه که بین 50 حرف از _ یا ^ استفاده کنیم. برای همین بهتره از راه دوم استفاده کنیم.

راه دوم: در این راه عبارت اندیس را بین دو آکولاد قرار می دهیم:

xlabel(R_{index})

ylabel(R^{index})

فرض کنید می خواهید در راهنمای نمودار خود عبارت آلفا به توان سیگما را نشان دهید:

legend(\alpha^{\sigma})

سایر علائم و حروف یونانی رو می تونید در قسمت help با جستجوی عبارت text properties در یک جدول کاملی پیدا کنید.

 

اما متوجه شدید که نمودار وقتی کشیده شد با رنگ پیش فرض یعنی آبی کشیده شد. اگر که بخواهید رنگ نمودار را تغییر دهید باید در همان دستور 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)

نویسنده: پ متلب - سه‌شنبه ۱٥ فروردین ،۱۳٩۱

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

نرم افزار متلب یکی از جامع ترین و مهندسی ترین نرم افزار های ریاضیاتی ، برنامه نویسی ، شبیه سازی و گرافیکی در بین نرم افزار های مهندسی به شمار میره. شاید تعجب کنید که گفتم مهندسی ترین نرم افزار در بین نرم افزارهای مهندسی! اما من اعتقاد دارم که خیلی از نرم افزارهایی که به اسم نرم افزارهای مهندسی شناخته میشه اصولا بدون دید مهندسی ایجاد شده اند و صرفا اسم مهندسی رو یدک میکشند.

نرم افزار MATLAB رو یک کمپانی معروف به نام Mathworks ایجاد کرده. متاسفانه این کمپانی کشور عزیز ما رو تحریم کرده به همین دلیل نمی تونید وارد سایت این شرکت (www.Mathworks.com) بشوید.

اما اگرکه بتونید یه جوری وارد سایت این کمپانی بشوید با عضو شدن در آن هر از چندگاهی این کمپانی ایمیلی برای شما خواهد زد و جدیدترین تغییرات متلب را به شما اطلاع خواهد داد.

در سایت این کمپانی بخش های متعددی وجود داره اما یکی از مهمترین آنها بخشی است به نام Matlab Central.

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

این بخش مهمترین و بهترین مرجع جهت آموزش متلب به شما و احیانا پاسخگویی به مشکلات و سوالات شما می باشه.

اگر که شما مطلبی رو در مورد MATLAB تو Google جستجو کنید مطمئنا چند آدرس اولی که توسط گوگل پیدا میشه مربوط به بخش Matlab Central از کمپانی Mathworks خواهد بود.

یکی از حرفه ای ترین کارهایی که این کمپانی کرده اینه که این کمپانی با روی باز از انتقادات شما در مورد توابع متلب استقبال کرده و حتی اگر که شما توابع جدید مربوط به رشته های تحت پوشش قرار گرفته توسط متلب را برای این کمپانی بفرستید و این کمپانی تشخیص بده که تابع شما مفید بوده و جزء توابع متلب نیست در ویرایش جدید نرم افزار این تابع رو به Databank خود اضافه میکنه و حتی اسم شما را به عنوان نویسنده این تابع در Help نرم افزار قرار میده.

با این کار این کمپانی نخبه های دنیار ور به صورت رایگان در اختیار خودش قرار میده و از دانش اونها در دنیای مجازی استفاده میکنه.

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

من اعتقادم اینه که از هر رشته ای که باشی اگر که به نرم افزار متلب مراجعه کنی محاله که این نرم افزار نتونه جوابی به شما بده و نیاز شما را برآورده نکنه.

Matlab مثل یه دریاچه ای میمونه که اگرکه قلابتو داخلش بندازی حتما یه ماهی صید می کنی. محاله قلابت خالی بیرون بیاد!

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

1. بخش برنامه نویسی  یا Programming.

2. بخش رابط گرافیکی یا Graphical User Interface  که به اختصار بهش بخش gui میگویند.

3. بخش شبیه سازی یا Simulink.

بخش برنامه نویسی متلب شبیه برنامه نویسی در نرم افزار های دیگه مثل فرترن ، پاسکال ، C ، C++ ، VB و ... هست. با یکسری دستورات base برنامه نویسی که توی همه نرم افزار های برنامه نویسی مشترک هستندو گاها syntax (نحوه نوشتن دستور) اونها متفاوته. البته متلب دراین بخش بسیار قدرتمند تر از نرم افزارهای دیگه هستش که اون هم به خاطر قابلیتهای گرافیکی، قدرت در توابع ریاضی مختلف و ... می باشه.

ان شاء الله در بخش برنامه نویسی با قدرت متلب بیشتر آشنا خواهید شد.

بخش gui مربوط به برنامه های ویژوال هستش. به برنامه هایی که موقع اجرا یه پنجره اجرا باز میشه و داخل اون کلید های OK و Cancel و مثلا چند تا checkbox و ... هستش برنامه های ویژوال میگن. از نمونه بارز برنامه هایی که اساسا کارشون ویژوال هستش میشه به ویژوال بیسیک و یا دلفی اشاره کرد. در قسمت gui متلب شما میتونید برنامه های ویژوال ایجاد کنید که انشا ءالله به وقتش به شما آموزش خواهم داد.

 

اما بخش مهم و کمی حرفه ای تر متلب بخش شبیه سازی یا سیمولینک هستش. شما در محیط سیمولینک اساسا کد ندارید و یکسری بلوک هایی دارید که نقش کدهای شما رو بازی می کنند. کار کردن با این بخش مهیج تر و کمی باکلاس تر ! هستش. به شما پیشنهاد می کنم این بخش رو از دست ندهید.

مطالب قدیمی تر » « مطالب جدیدتر
نویسندگان وبلاگ:
کدهای اضافی کاربر :