35
  MATLAB ز ا هد اﺳ ياﻫ ر   : ه ﻬﻴﻪ ﻴﻤﻲ  ﻣﻬﻨﺪﺳﻲ هﺮو نا ﺗﻬ ها د     هﺸﻜا د 

Learning Matlab Softgozar

Embed Size (px)

Citation preview

5/9/2018 Learning Matlab Softgozar - slidepdf.com

http://slidepdf.com/reader/full/learning-matlab-softgozar 1/35

 

MATLAB زا هدافتسا يامنهار 

نويد مستوفي : تهيه  كننده

 

 گروه مهندسي شيمي  دانشكده فني  –  دانگشاه تهران

 

5/9/2018 Learning Matlab Softgozar - slidepdf.com

http://slidepdf.com/reader/full/learning-matlab-softgozar 2/35

 ١

  مقدمه -١

   MATLAB چيست؟ ١-١

نرم افزار  MATLABبرنامه  كاپميوتري است  كه براي  كساني  كه با محاسبات عددي ،و بويـژـه جـبر 

  MATrix LABoratory يسيلگنا ترابع زا رازفا مرن نيا مان خطي سر و  كار دارند ،تهيه شده است.

ل مسـائل شـامل عمليـات  ـ حـ هب نادنمشناد و نيسدنهم نتخاس رداق نآ  هيلوا فده و هدش سابتقا

 FORTRAN و C نوـچمه لوادـتم ي ـ سـيون همانرب ياهنابز رد همانرب نتشون هب زاين نودب يسيرتام

وري  كـه در حـال  ـ طـب دنا هدش هدوزفا رازفا مرن نيا هب يرتشيب رايسب ياهتيلباق نامز تشذا  گب بود.

ي  ــ سدنهم حاضر  MATLABبه ابزار پر قدرتي براي ترسيم داده ها ،برنامه نويسي و انجام محاسبات 

و ژپوهشي تبديل شده است.

 

ط  كـار موجـود اسـت و نشـان دهنـده محـل ـ يـحم رد هك  تسا يتمالع » تمالع هوزج نيا لوط رد

شما نيازي نداريد  كه  آن را بنويسيد. نوشتن دستورات مي باشد.

 

help زا هدا ف ت سا ٢-١

ه دسـت بيـاوريد مـي توانيـد در  ـ بـ يتاعالطا يصاخ عبات اي و روتسد دروم رد ديهاوخب هك  يتروص رد

ت را  ـ شـگزاب ديلك  و هتشون ار رظن دروم عبات اي روتسد مان نآ  زا سو پ help هملك  MATLAB هرجنپ

فشار دهيد:

» help magic

MAGIC Magic square.

MAGIC(N) is an N-by-N matrix constructed from the integers

1 through N^2 with equal row, column, and diagonal sums.

Produces valid magic squares for N = 1,3,4,5,...

 

MATLAB كمك  هرجنر پوتسد نيا روش دگير استفاده از  helpبكار بردن دستور  helpwinاست.

ات مـورد نيـاز را در پنجـره جـدگاانـه اي بدسـت  آوريـد. ـ حـيضوت ات دهد يم هزاجا و دنك  يم زاب ار

توضيحات داده شده در اين پنجره همانهايي هستند  كه دستور  helpارائه مي نمايد.

 

الزم به توضيح است  كه نام دستورات و توابع در  helpبا حروف بزرگ  آورده مــي شـوند در حاليكـه

 MATLABنسبت به بزرگ و  كچوك بودن حروف حساس است و هگنام استفاده از اين دستورات و 

توابع بايد  آنها را با حروف  كچوك بكار برد.

 

5/9/2018 Learning Matlab Softgozar - slidepdf.com

http://slidepdf.com/reader/full/learning-matlab-softgozar 3/35

 ٢

  demo زا هدا ف ت سا ٣-١

ي توانيـد مثالـهاي متعـددي از امكانـات  ـ مـ دستور demo پنجره جديدي باز مي  كند  كه شما در  آن 

ايند و  مـن يم ديلوت تايئزج اب هارمه و بلاج ياهرادومن اهلاثم نيا زا يرايسب  MATLABرا بيابيد.

توصيه مي شود  كه  هچمنين توضيحات مفيدي در باره نحوه استفاده از  MATLABارائه مي دهند.ها را مشـاهده  كنيـد تـا متوجـه شـويد  كـه چـه  كارهـايي مـي تـوان بـا  ـ لـاثم نيا زا يدادعت حتما"

بوژيه دقت  كنيد  كه گچونه برنامه هاي ساده مـي تواننـد نتـايج پچييـده اي   MATLABانجام داد.

توليد نمايند.

 

عمليات ابتدايي -٢

  يف  كردن  آرايه ها و عمليات جبري روي  آنها ر ع ت ١ -٢

در MATLAB چهار نوع  آرايه مي توان تعريف  كرد:

اعداد اسكالر  كه تك عضوي هستند. .١

(يك بعدي). بردارها  كه شامل يك سطر يا ستون مي باشند .٢

(دو بعدي). ماتريسها  كه از اعضاي چيده شده در يك  آرايش مربعي تشكيل مي  گردند .٣

 آرايه هاي با ابعاد بيش از دو. .٤

دارد. ـ نـ دوجو يراشعا و حيحص دادعا نيب يتوافت و دنشاب فرح اي و ددع دنناوت يم هيارآ  كي ياضعا

دد و يـا حـرف در يـك متغـير MATLAB ،مقـدار جـاگيزين شـده را  ـ عـ كي ينيزگياج تروص رد

بالفاصله نشان مي دهد گمر  آنكه عبارت تعريف متغير با  semicolonخاتمه يابد.

» a=2.5

a =

2.5000

» a=3.2;

» a

a =

3.2000

» p='hello'

 p =

hello

 

5/9/2018 Learning Matlab Softgozar - slidepdf.com

http://slidepdf.com/reader/full/learning-matlab-softgozar 4/35

 ٣

 MATLABبين حروف  كچوك و بزرگ فرق قائل است:

» A

??? Undefined function or variable 'A'.

 

بـهتر اسـت  كـه در انتـهاي وال" ــ م مع از  آنجا  كه نشان دادن مقادير به شكل فوق قدري طوالني است 

ه  ــ م نا بر در صورتي  كه اين عمل را فراموش  كنيد و  دستور معرفي متغير از  semicolonاستفاده  كرد.

شروع به نشان دادن مقاذير يك  آرايه طوالني نمايد  كافي است  كه  CONTROL Cرا فشار دهيد تـا 

ا نوشـتن نـام متغـير  ـ بـ همانطور  كه در باال ديديد هميشه مي توان  نشان دادن مقادير متوقف  گردد.

ن دسـتورها  ـ يـب هلصاف طخ كي MATLAB دينك  يم هدهاشم نينچمه مقدار  آن را مشاهده نمود.

براي حذف اين خطوط اضافي مي توانيد از دستور زير استفاده  كنيد: مي  گذارد.

» format compact

 

اكنون چند بردار تعريف مي  كنيم:

» v=[1 2 3]

v =

1 2 3

» w=['abcd' '1234']

w =

abcd1234

 

بايد از  كروشه استفاده  كرد ولي استفاده از  آنها براي متغيرهــاي براي تعريف بردارهاي عددي حتما"

لي اسـتفاده  ا ــ خ ( كه در توابع  MATLABبه عنوان جاي  حالت خاصي از بردار حرفي الزامي نيست.

عبارتست از بردار تهي  كه به صورت [ ] تعريف مي  گردد. بسياري دارد)

 

نحوه تعريف ماتريسها به صورت زير است:

» m=[1 2 3

4 5 6]

m =

1 2 3

4 5 6» n=['abcd'

'1234']

n =

abcd

1234

 

اعضاي يك ماتريس را مي شود بطور جدگاانه مشاهده  كرد و يا تغيير داد:

» m(2,3)

ans =

6

5/9/2018 Learning Matlab Softgozar - slidepdf.com

http://slidepdf.com/reader/full/learning-matlab-softgozar 5/35

 ٤

» m(2,3)=7

m =

1 2 3

4 5 7

 

عمليات ساده جبري روي بردارها و ماتريسها به صورت زير انجام مي شود:

» 2*m

ans =

2 4 6

8 10 14

» m+1

ans =

2 3 4

5 6 8

» n1=[2 5 4

-1 -2 0];

» m+n1

ans =

3 7 7

3 3 7

 

م جـدا ـ هـ زا لوگريو اب مه و هلصاف اب مه ناوت يم ار سيرتام رطس كي ياضعا هك  تسا ركذ هب مزال

بكار بردن  semicolonدر تعريف يك ماتريس به معناي انتقال به سطر بعدي مي باشد:  كرد.

» q=[1, 2, 3

4 5 6; 7 8 9]

q =

1 2 3

4 5 6

7 8 9

 

( : ) كاربرد زيادي در رجوع به سطرها ،ستونها و يا بخشي از  آرايه دارد: عمگلر دو نقطه

» q(1,:)

ans =1 2 3

» q(:,2)

ans =

2

5

8

» q(1:2,2:end)

ans =

2 3

5 6

 

5/9/2018 Learning Matlab Softgozar - slidepdf.com

http://slidepdf.com/reader/full/learning-matlab-softgozar 6/35

 ٥

گار بخواهيد نام متغيرهاي ايجاد شده را ببينيد مي توانيد از دستور  whoاستفاده نماييد:

» who

Your variables are:

a n q w

m p v  

ها دسـتور  whosرا بكـار ـ نـآ  دروم رد رت هفاضا تاعالطا هارمه هب دوجوم ياهريغتم مان هدهاشم يارب

ببريد:

» whos

Name Size Bytes Class

a 1x1 8 double array

m 2x3 48 double arrayn 2x4 16 char array

p 1x5 10 char array

q 3x3 72 double array

v 1x3 24 double array

w 1x8 16 char array

Grand total is 31 elements using 122 bytes

 

ه مسـاوي از هـم قـرار دارنـد روش سـاده اي در ـ لـصاف هب نآ  ياضعا هك  يددع ياهرادرب ديلوت يارب

   tبرداري باشد  كه عضو اول  آن  ،٠عضو  آخر  آن ٢ و اعضاي فرض  كنيد  كه  MATLABوجود دارد.

   آن به فاصله مساوي ٥/٠ از يكدگير باشند

» t=0:.5:2

t =

0 0.5000 1.0000 1.5000 2.0000

 

د پيـش بينـي شـده در ـ يـدج تاناكما زا ( آرايه هايي  كه بيش از دو بعد دارند)  آرايه هاي چند بعدي

ه مـاتريس   mكـه قبـال" ـ بـ ريز لكش هب ار موس دعب ناوت يم لاثم ناونع هب  MATLAB 5هستند.

تعريف شده افزود:

» m(:,:,2)=ones(2,3)

m(:,:,1) =

1 2 3

4 5 7

m(:,:,2) =

1 1 1

1 1 1

 

ه ـ حـفص موس دعب هب اصطالحا" افزودن بعدهاي چهارم و بيشتر نيز به طريق مشابه امكان پذير است. گفته مي شود ولي نام خاصي براي ابعاد چهارم به بعد وجود ندارد.

5/9/2018 Learning Matlab Softgozar - slidepdf.com

http://slidepdf.com/reader/full/learning-matlab-softgozar 7/35

 ٦

 

براي بدست  آوردن طول يك بردار مي توانيد از دستور  lengthاستفاده  كنيد:

» length(t)

ans =

دستور  sizeتعداد سطرها و ستونهاي يك ماتريس را نمايش مي دهد:

» size(n)

ans =

2 4

 

ول  آرايـه در ـ طـ نآ  ياه هفلوم هك  دهد يم ار يرادرب يدعب دني چاه هيارآ  دروم رد size زا هدافتسا

.است

  آن

 ابعاد

 از يك

 هر 

برخي از توابعي  كه در ساختن  آرايه ها بكار مي روند عبارتند از:

  ones(2)  يك ماتريس ٢*٢ با مولفه هاي ١ ايجاد مي  كند

  ones(2,3)  يك ماتريس ٣*٢ با مولفه هاي ١ ايجاد مي  كند

  zeros(2)  يك ماتريس ٣*٢ با مولفه هاي صفر ايجاد مي  كند

  eye(3)  يك ماتريس يكه ٣*٣ ايجاد مي  كند

  linspace(-1,5,7)  و ٥ ايجاد مي  كند -١ نيب يواسم لصاوف اب هفلوم ٧ اب يرادرب

  linspace(-1,2,8)  برداري با ٨ مولفه با فواصل گلاريتمي مساوي بين ١-١٠ و ١٠٢ ايجاد مي  كند

 

تعدادي از توابعي  كه روي  آرايه ها عمل مي  كنند عبارتند از:

  sum(x) x ياه هفلوم عمج لصاح

  cumsum(x) حاصل جمع مولفه هاي  xاز اول تا هر مولفه

    prod(x)  ياه هفلوم برضلصاح

  cumprod(x)  حاصلضرب مولفه هاي  xاز اول تا هر مولفه

  max(x) بزگرترين مولفه  xرا پيدا مي  كند

  max(x)   كچوكترين مولفه  xرا پيدا مي  كند

  sort(x) مولفه هاي  xرا مرتب مي  كند

  mean(x) x ياه هفلوم يباسح نيگنايم

  std(x) x ياه هفلوم رايعم فارحنا

 

5/9/2018 Learning Matlab Softgozar - slidepdf.com

http://slidepdf.com/reader/full/learning-matlab-softgozar 8/35

 ٧

  ره  كردن و بازيابي داده ها ي خ ذ ٢ -٢

را ذخـيره  كنيـد از  (workspace) اي موجـود در محيـط  كـار ـ هـريغتم هيلك  ديهاوخب هك  يتروص رد

دستور  saveاستفاده  كنيد:

» save

Saving to: matlab.mat

 

ده را ـ نـورن پيا رد دوجوم ياه هداد اين دستور ،داده ها را در پرونده  matlab.matذخيره مي نمايد.

مي توان به طريق زير بازيابي نمود:

» load

Loading from: matlab.mat

 درصورتي  كه الزم باشد مي توانيد نام پرونده ذخيره را خودتان تعيين  كنيد:

» save myfile

 

و  آن را با دستور زير بازيابي نماييد:

» load myfile

 

گار مي خواهيد  كه فقط بعضي از متغيرها را ذخيره  كنيد ،نام  آنها را بعد از نام پرونده بياوريد:

» save myfile t f  

د  كـافي اسـت نـام  آنـها را پـس از ـ يـنك  كاه پظفاح زا ار اهريغتم زا يدادعت ديهاوخب هك  يتروص رد

دستور   clearبياوريد:

» who

Your variables are:

a f n t w

ans m p v

» clear a f 

» who

Your variables are:

ans n t w

m p v  

ا از حافظـه پـاك ـ هـريغتم هيلك  ،نآ  زا سي پريغتم مان ركذ نودب clear  روتسد زا هدافتسا تروص ردمي شوند.

5/9/2018 Learning Matlab Softgozar - slidepdf.com

http://slidepdf.com/reader/full/learning-matlab-softgozar 9/35

 ٨

كل   binaryذخـيره  ــ ش هب ار اه هداد دش هداد ناشن الاب رد هك  يتروص هب save روتسد هك  دينك  هجوت

در ايـن صـورت  ن داده هـا را بازيـابي  كنيـد. ـ يـا ديناوت يم MATLAB طيحم رد طقف و ديامن يم

ته باشـيد  كـه  ــ ش دا در مواردي  كه نياز  متغيرها با همان نامي  كه ذخيره شده اند ،بازيابي مي  گردند.

داده ها را در محيطهاي دگيري بازيابي نماييد بايد متغيرها را به صورت  asciiذخيره  كنيد:» save name t -ascii

» clear 

» load name

» who

Your variables are:

name  

ان نـام پرونـده ـ مـه ،ريغتم مان ascii هدنورك پي يبايزاب ماگنه دينك  يم هدهاشم الاب رد هك  روطنامهام  ـ نـ رد ار هلابند هكنآ  رگم تسا (extension) پرونده  asciiايجاد شده فاقد دنباله ضمنا" خواهد بود.

پرونده ذكر  كنيد.

 

يات ماتريسي روي  آرايه ها ل مع ٣-٢

ام داد  كـه بـه  آنـها عمليـات ماتريسـي و  ـ جـنا اه هيارآ  يور تايلمع عون ود ناوت يم MATLAB رد

ع و  ــ مج ،يسيرتام برض ،هداهنارت هبساحم لماش يسيرتام تايلمع عمليات عضو به عضو مي  گويند.

ت پريـم بدسـت  ــ مالع كمك  اب سـيرـتام كي هداهنارت تفريق  آرايـه هاي هم اندازه و غيره مي شود.مي  آيد:

» r=rand(2,4)

r =

0.9501 0.6068 0.8913 0.4565

0.2311 0.4860 0.7621 0.0185

» r'

ans =

0.9501 0.2311

0.6068 0.4860

0.8913 0.76210.4565 0.0185

 

ها بـا اسـتفاده از عالمتـهاي مربوطـه ـ سـيرتام قيرفت و عمج و * تمالع زا هدافتسا اب يسيرتام برض

انجام مي  گيرند:

» v=[1:4];

» r*v'

ans =

6.6636

3.5634

5/9/2018 Learning Matlab Softgozar - slidepdf.com

http://slidepdf.com/reader/full/learning-matlab-softgozar 10/35

 ٩

» s=[0:3; 2:-.5:.5];

» s+r 

ans =

0.9501 1.6068 2.8913 3.4565

2.2311 1.9860 1.7621 0.5185

 

تعدادي از توابع ماتريسي در زير  آورده شده اند:

  det(a) دترمينان ماتريس مربعي

  inv(a) ماتريس وارون

  eig(a) مقادير و بردارهاي وژيه ماتريس مربعي

  poly(a) چند جمله اي مشخصه ماتريس

 

يات عضو به عضو روي  آرايه ها ل مع ٤-٢ي دو نـوع عمليـات  ـ لـك  روطب انجام عمليات جبري روي  آرايه ها در  MATLABنيازمند دقت است.

اشـتباه  و٢ ،-عمليـات بـرداري-ماتريسـي. ـ ضـع هب وضع تايلمع-١ مي توان روي  آرايه ها انجام داد:

دو بردار زير را در نظر گبيريد:  گرفتن اين دو نوع عمليات باعث بروز مشكل در محاسبات مي  گردد.

» a=[1 2 3];

» b=[2 -1 0];

 

فرض  كنيد  كه مي خواهيد اين دو را در هم ضرب  كنيد:

» a*b

??? Error using ==> *

Inner matrix dimensions must agree.

 

يي ها ــ ن دليل  گرفتن پيام خطا از عمل فوق اين است  كه در  MATLABاستفاده از عالمت ضرب به ت

بنابراين عمل باال را مي توان با ترانهاده بردار دوم به انجام رسانيد: به معناي ضرب ماتريسي است.

» a*b'

ans =

0

 

١*٢+٢*(-١)+٣*٠=٠ اين عمل در حقيقت ضرب اسكالر دو ماتريس است ،يعني:

 

ه قبـل از عالمـت ـ طـقن كي دياب ديروآ  تسد هب ار رادرب ود نيا وضع هب وضع برض ديهاوخب رگا لاح

ضرب گبذاريد:

» a.*b

ans =

2 -2 0

 

5/9/2018 Learning Matlab Softgozar - slidepdf.com

http://slidepdf.com/reader/full/learning-matlab-softgozar 11/35

 ١٠

همين دستورالعمل را مي توان براي تقسيم و به توان رساندن  آرايه ها بكار بست:

» a.^2

ans =

1 4 9

 در صورت فراموش  كردن نقطه قبل از عالمت توان:

» a^2

??? Error using ==> ^

Matrix must be square.

 

format و disp تاروتسد اب شيامن هحفص يور اهيجورخ ميظنت  ٥-٢

در ايـن  ده  كنيـد. اه ــ ش گار مقدار يك متغير را بخواهيد بدانيد مي توانيد  آن را با نوشتن نام متغير م

طر  ـ سـ رد ار رادقم سپس و هداد ناشن ار يواست تمالع نآ  لابند هب و ريغتم مان MATLAB تروصدون  آنكـه الزم باشـد دوبـاره نـام  آن و عالمـت  ـ بـ ريغتم رادقم نديد يارب يا سطور بعد مي نويسد.

تساوي را مشاهده  كنيد مي توانيد دستور  dispرا بكار ببريد.

» x=[2 4 5];

» disp(x)

2 4 5

» y='That is better';

» disp(y)

That is better 

 

پنجره  MATLABرا مي توانيد با دستور clc پاك  كنيد:

» clc

 

ه خطـوط اضـافي هگنـام ارائـه ـ كـ  دوش يم ثعاب format compact روتسد ديديد همانطور  كه قبال"

رض  كنيـد  كـه  ـ فـ دستور  formatداراي  كاربردهاي فراوان دگيري نيز هست. نتايـج حذف  گردنـد.

مي خواهيد مولفه هاي بردار زير را روي صفحه نمايش ببينيد:

» v=exp(-10*(1:5))

v =1.0e-004 *

0.4540 0.0000 0.0000 0.0000 0.0000

 

د بـا ـ يـناوت يم تيعضو نيا رد واضح است  كه در حالت فعلي نمي توانيد مقادير مولفه ها را بخوانيد.

 كمك دستور  formatنحوه نمايش اعداد را تغيير دهيد:

 

5/9/2018 Learning Matlab Softgozar - slidepdf.com

http://slidepdf.com/reader/full/learning-matlab-softgozar 12/35

 ١١

» format long

» v

v =

1.0e-004 *

Columns 1 through 4

0.45399929762485 0.00002061153622 0.00000000093576 0.00000000000004Column 5

0.00000000000000

 

د از ممـيز را افزايـش ـ عـب هدش هداد ناـشن دادعا دادعت روـتسد نيا هكـنيا دوجو اب دينك  يم هدهاشم

در  د. ـ هـد مي دهد ولي هنوز قادر نيست  كه همه مولفه هاي بردار مورد نظر را بطور مناسبي نمايش 

چنين حالتي بهتر است اعداد را با استفاده از نماد علمي به نمايش گبذاريد:

» format short e

» v

v =4.5400e-005 2.0612e-009 9.3576e-014 4.2484e-018 1.9287e-022

 

ن دستـور را ـ يـا هب طوبرم تاحيضوت هك  دوش يم هيصوت format روتسد تاناكما زا رتشيب عالطا يارب

در  helpمطالعه  كنيد.

 

چند جمله ايها -٣

ه مولفـه هـاي  آن ضرايـب چنـد  ـ كـ  يرطـس رادرب كي تروص هب MATLAB رد يا هلمج دنك چي  p(x) = x

٣-٢x + ٥ يا هـلمج دـنل چا ــ ث براي م جمله اي به ترتيب نزولي هستند معرفي مي شود.

در  MATLABبه شكل زير معرفي مي  گردد:

» p=[1 0 -2 5];

 

ه هاي  يك چند جمله اي ش ي ر ١ -٣

ريشه هاي يك چند جمله اي را مي توانيد به صورت زير بدست  آورد:

» r=roots(p)

r =

-2.0946

1.0473 + 1.1359i

1.0473 - 1.1359i

 

با دانستن ريشه هاي معادله مي توانيد ضرايب چند جمله اي مربوطه را محاسبه نمائيد:

» p2=poly(r)

 p2 =

1.0000 0.0000 -2.0000 5.0000

 

5/9/2018 Learning Matlab Softgozar - slidepdf.com

http://slidepdf.com/reader/full/learning-matlab-softgozar 13/35

 ١٢

  اسبه مقدار  يك چند جمله اي حم ٢-٣

(٥)  pبـه  بـراي مثـال مقـدار ايد. ـ مـن يم هبساحم هطقن ره رد ار يا هلمج دنر چادقم  polyval عبات

طريق زير محاسبه مي  گردد:

» polyval(p,5)ans =

120

 

رب و تقسيم چند جمله ايها ض ٣ -٣

چنـد  د توابــع  convو  deconvرا بكـار بـبريد. ـ ــ ي ان تو براي ضـرب و تقسيم چند جملـه ايـها مـي 

اصلضرب ايـن دو چنـد جملـه اي بـه  ــ ح  a(x)=xو ١-  b(x)=xرا در نظر گبيريد.٢+x+١ ياهيا هلمج

طريق زير بدست مي  آيد:

» a=[1 1 1]; b=[1 -1];» c=conv(a,b)

c =

1 0 0 -1

 

و تقسيم  a/ bنيز به صورت زير قابل محاسبه است:

» [q,r]=deconv(a,b)

q =

1 2

r =0 0 3

 

تق چند جمله اي شم ٤ -٣

مشتق چند جمله اي را مي توانيد با بكار بردن تابع    polyderمحاسبه  كنيد.

» c=polyder(a)

c =

2 1

 

را مي توانيد به صورت زير بدست  آوريد: (a* b) مشتق حاصلضرب دو چند جمله اي

» d=polyder(a,b)

d =

3 0 0

 

ابع مشـتق تقسـيم دو چنـد ـ تـ ،دشاب ٢ ربارب  polyder  عبات يجورخ ياهناموگرآ  دادعت هك  يتروص رد

را تعيين مي نمايد: (a/ b) جمله اي

 

5/9/2018 Learning Matlab Softgozar - slidepdf.com

http://slidepdf.com/reader/full/learning-matlab-softgozar 14/35

 ١٣

 

» [q,d]=polyder(a,b)

q =

1 -2 -2

d =

1 -2 1

 

ازش منحني چند جمله اي ر ب ٤ -٣

تابع   polyfitضرايب بهترين چند جمله اي را پيدا مي  كند  كه از ميان مجموعه نقاط داده شده عبور 

به عنوان مثال مجموعه نقاط زير را در نظر گبيريد: مي نمايد.

» x=[1 2 3 4 5];

» y=[5.5 43.1 128 290.7 498.4];

 

ن نقـاط فـوق ـ يـب زا هك  دنك  يم هـبساحم ار موـس هجرد يا هلمج دنن چيرتـهب بيارـض ريز روتسد

مي  گذرد:

» p=polyfit(x,y,3)

 p =

-0.1917 31.5821 -60.3262 35.3400

 

حال مي توانيد براي مقايسه منحني محاسبه شده و داده هاي اوليه را در يك نمودار رسم  كنيد:

» x2=1:.1:5;

» y2=polyval(p,x2);» plot(x,y,'o',x2,y2)

 

1 1.5 2 2.5 3 3.5 4 4.5 50

50

100

150

200

250

300

350

400

450

500

 

5/9/2018 Learning Matlab Softgozar - slidepdf.com

http://slidepdf.com/reader/full/learning-matlab-softgozar 15/35

 ١٤

  عمليات و توابع منطقي -٤

  يسه منطقي ا ق م ١ -٤

در  MATLABعالمتهاي زير براي مقايسه مقادير عددي و حرفي بكار مي روند.

  <  كچوكتر از

  <=  كچوكتر از يا مساوي با

  > بزگرتر از

  >= بزگرتر از يا مساوي با

== مساوي با

  ~= مخالف با

 

مثالـهايي ام داد. ـ جـنا هيارآ  ياضعا و رلاكسا اي هيارآ  ود ،رلاكسا ود نيب ناوت يم ار يا هسياقم نينچ

ه  كنيـد  كـه حــاصل همـه عمليـات  ـ ـ جـوت براي نحوه عمل اين عمگلرها در زيـر  آورده مـي شوند.

منطقـي مي تواند ٠ به معني نادرست يا ١ به معني درست باشد.

» 3<5

ans =

1

» [1 2]>=[0 3]

ans =

1 0

» a=[1 2 3

2 3 4];

» b=[-1 2 1

0 2 4];

» a~=b

ans =

1 0 1

1 1 0

 بردار زير را در نظر گبيريد:

» x=[1 2 -1 0 -5 4 -1.5 3 2.5 -.5];

 

عبارت زير مولفه هاي مثبت اين بردار را نمايش مي دهد:

 

» x(x>0)

ans =

1.0000 2.0000 4.0000 3.0000 2.5000

 

5/9/2018 Learning Matlab Softgozar - slidepdf.com

http://slidepdf.com/reader/full/learning-matlab-softgozar 16/35

 ١٥

و اين عبارت تعداد مولفه هايي را  كه بين صفر و ٣ هستند تعيين مي  كند:

» length(x((x>=0)&(x<=3)))

ans =

5

 

٤-٢ عمگلرهاي منطقي

اين عمگلرها عبــارتند  روابط منطقي را مي توان با استفاده از عمگلرهاي منطقي با هم تركيب  كرد.

از:

  & (تركيب عطفي) و

  | (تركيب فصلي) يا

  xor  (مانع جمع) يا

  ~ نقيض 

مثالهايي از طرز عمل اين عمگلرها در زير  آورده شده اند:

» m=[1 2 4; -2 3 -1];

» ~(m>0)

ans =

0 0 0

1 0 1

» (m>0)|(m<=2)

ans =

1 1 1

1 1 1

» (m>0)&(m<=2)

ans =

1 1 0

0 0 0

» xor([0 0 1 1],[0 1 0 1])

ans =

0 1 1 0 

توجه  كنيد  كه   xorيك تابع است و دو بردار ورودي به  آن بايد هم اندازه باشند.

 

find و all ،any يقطنم عب ا و ت ٣-٤

تابع  anyمعين مي  كند  كه  آيا مولفه غير صفر در يك بردار وجود دارد يا خير.

» v=[-2 1 3 5];

» any(v<1)

ans =1

5/9/2018 Learning Matlab Softgozar - slidepdf.com

http://slidepdf.com/reader/full/learning-matlab-softgozar 17/35

 ١٦

» any(v>6)

ans =

0

 

تابع  allمعين مي  كند  كه  آيا همه مقايسه ها درست هستند يا خير.» all(v<1)

ans =

0

» all(v<6)

ans =

1

 

ت ـ سـا ترابع عباوت نيا يجورخ تروص نيا رد توابع فوق را مي توانيد براي ماتريسها نيز بكار ببريد.

از حاصل مقايسه هاي  گفته شده براي هر ستون ماتريس.

 

تابع  findمكان مولفه هاي غير صفر را در يك  آرايه نشان مي دهد.

» find(v>3)

ans =

4

 

اد وژيه دع ا ٤ -٤

عالوه بر اعداد حقيقي MATLAB ،قادر است حاصل عباراتي را  كه از نظر جبري انجام پذير نيستند 

و تقسـيم صفـر بـر صفـر غـير قـابل  (Inf ) ي نـهايت ـ بـ رفص رب ددع كي ميسقت را نيز پوشش دهد.

.( Not a Number  اي  NaN) محاسبه است

» x=[1 2 0]./[2 0 0]

Warning: Divide by zero.

x =

0.5000 Inf NaN

 

هچمنين اعداد موهومي را به ساگدي اعداد حقيقي مي توانيد در محاسبات استفاده  كنيد.» y=sqrt(-1)

y =

0 + 1.0000i

 

توابع  isnan ،isinf  ،finiteو  isrealبه شما امكان مي دهد  كه اين اعداد را شناسايي  كنيد:

» finite(x)

ans =

1 0 0

5/9/2018 Learning Matlab Softgozar - slidepdf.com

http://slidepdf.com/reader/full/learning-matlab-softgozar 18/35

 ١٧

» isinf(x)

ans =

0 1 0

» isnan(x)

ans =0 0 1

» isreal(x)

ans =

1

» isreal(y)

ans =

0

 

ترسيم داده ها -٥

  ارهاي ٢ بعدي دومن ١-٥

مجموعه دستورات زير نحوه ترسيم يك تابع بر حسب يك متغير مستقل را نشان مي دهد:

» x=linspace(0,2); y=x.*exp(-x);

» plot(x,y)

» grid

» xlabel('x')

» ylabel('y')» title('y=x.e^{-x}')

» text(1,.2,'centre')

 

0 0.2 0.4 0.6 0.8 1 1.2 1.4 1.6 1.8 20

0.05

0.1

0.15

0.2

0.25

0.3

0.35

0.4

x

      y

y=x.e-x

centre

 

5/9/2018 Learning Matlab Softgozar - slidepdf.com

http://slidepdf.com/reader/full/learning-matlab-softgozar 19/35

 ١٨

هفت خط فوق به ترتيب اعمال زير را انجام مي دهند:

را ايجاد مي  كند. (y) و تابع (x) بردار متغيرهاي مستقل -١

مقادير  yرا بر حسب  xرسم مي نمايد. -٢

شبكه را به نمودار مي افزايد. -٣توضيح محور افقي را مي نويسد. -٤

توضيح محور عمودي را مي نويسد. -٥

تيتر نمودار را در باالي  آن مي نويسد. -٦

(در ايـن مثـال  ي مشـخص شـده ـ فـرح ريغتم ((١ و ٠/٢) (در اين مثال نقطه در نقطه مورد نظر -٧

را مي نويسد. (centre

 

ذخـيره ،رادوـمن

 پنجـره

 File منـوي

 در

 Save As تور ـ سـد

  كمك

 به

 را شده

 ايجاد

 نمودار

 توانيد

 مي

  .ffig نآ  هلابند و درك  ديهاوخ دراو ناتدوخ ار نآ  مان هك  هدنورك پي رد ار رادومن روتسد نيا نماييد.

ن نمـودار را در دفعـات بعـدي  كـار بـا  MATLABبـا  ـ يـا ديناوت يم امش مي باشد ذخيره مي  كند.

استفاده از دستور  openبازيابي نماييد.

 

د. ـ يـنك  هدافتسا عباوت مسر يارب (بجاي خط) در هگنام رسم نمودارها مي توانيد از عالمتهاي مختلف

هچمنين مي توانيد بيش از يك تابع را در يك نمودار نمايش دهيد.

» plot(x,y,'.',x,x.*sin(x),'-.')

و در صورت لزوم نام توابع را نيز در همان نمودار نشان دهيد.» legend('x.e^{-x}','x.sin x')

 

0 0.2 0.4 0.6 0.8 1 1.2 1.4 1.6 1.8 20

0.2

0.4

0.6

0.8

1

1.2

1.4

1.6

1.8

2

x.e-x

x.sin x

5/9/2018 Learning Matlab Softgozar - slidepdf.com

http://slidepdf.com/reader/full/learning-matlab-softgozar 20/35

 ١٩

مي توانيد بيش از يك نمودار را در يك پنجره نشان دهيد:

» subplot(2,1,1), plot(x,y)

» ylabel('x.e^{-x}')

» subplot(2,1,2), plot(x,x.*sin(x))

» ylabel('x.sin x')

 

دد ـ عـ و (سطري و ستوني) دو عدد اول در دستور  subplotتعداد تقسيمات صفحه را معين مي  كنند

را مشخص مي نمايد. (يا تغيير روي نمودار موجود) سوم مكان رسم نمودار

 

نمودار را مي توانيد با استفاده از دستور  clf پاك  كنيد.

» clf 

 

axis دسـتور

.نمـائيد

 بـاز

 نمـودار

 م ـ سـر

 براي

 جديدي

 پنجره

 توانيد

 مي

 figure

 دستور

 از استفاده

 با

حدود باال پوايين محورهاي مختصات را به صورت يك بردار ارائه مي نمايد.

» figure(2)

» plot(x,y)

» axis

ans =

0 2.0000 0 0.4000

 

0 0.2 0.4 0.6 0.8 1 1.2 1.4 1.6 1.8 2

0

0.1

0.2

0.3

0.4

  x .  e

  -  x

0 0.2 0.4 0.6 0.8 1 1.2 1.4 1.6 1.8 20

0.5

1

1.5

2

  x .  s   i  n

   x

5/9/2018 Learning Matlab Softgozar - slidepdf.com

http://slidepdf.com/reader/full/learning-matlab-softgozar 21/35

 ٢٠

ور عمـودي را نشـان  ـ ـ حـم يالاب و نيئاد پودح و يقفا روـحم يالاب و نيئاد پودح بيترتب قوف دادعا

ردار مـورد  ـ بـ ديناوت يم ديهد رييغت رادومن يور ار دودح نيا هك  دشاب مزال هك  يعقاوم رد مي دهند.

نظر خودتان  كه مولفه هاي  آن حدود فوق باشند را به دستور  axisبدهيد.

» axis([0 .5 0 .3])

 

م سـر مـه ب ـ سـح رب رادرب ود تروص هب هتسباو ريغتم و لقتسم ريغتم ريداقم الاب ياهلاثم يمامت رد

د مـي توانيـد از  ـ شـاب صخشم لقتسم ريغتم بسح رب هتسباو ريغتم تيعبات هك  يتروص رد شده اند.

دستور  fplotبراي رسم  آن استفاده  كنيد:

» fplot('x*exp(-x)',[0 2]) 

ودن ـ بـ هداس تروص رد)  آگرومان اول اين دستور يك بردار حرفي است  كه مشخص  كننده رابطه تابع

ده باشـد) ـ شـ داجيا دياب هناگادج هك ) يا نام  m-fileحاوي تابع رابطه تحليلي تابع ،همانند مثال فوق)

خص  شـم ار لقتسم ريغتم يالاب و نيئاد پح هك  تسا يوضع ود رادرب كي fplot مود ناموگرآ  است.

مي  كند.

 

:اند

 شده

  آورده

 زير

 در

 بعدي

 دو

 ترسيم

 دستورهاي

 از تعدادي

  semilogx(x,y) (محور  xگلاريتمي) نمودار نيمه گلاريتمي

  semilogy(x,y) (محور  yگلاريتمي) نمودار نيمه گلاريتمي

  loglog(x,y) نمودار تمام گلاريتمي

   polar(r,theta) رسم در دسگتاه مختصات قطبي

  bar(x,y)  نمودار ميله اي

  area(x,y) نمودار مساحت

 

0 0.05 0.1 0.15 0.2 0.25 0.3 0.35 0.4 0.45 0.50

0.05

0.1

0.15

0.2

0.25

0.3

5/9/2018 Learning Matlab Softgozar - slidepdf.com

http://slidepdf.com/reader/full/learning-matlab-softgozar 22/35

 ٢١

  ارهاي ٣ بعدي دومن ٢-٥

ي سـه  ـ نـحنم كي دستورهاي زيادي در  MATLABبراي ترسيم نمودارهاي سه بعدي وجود دارند.

بعدي را مي توانيد به  كمك دستور   plot3ببينيد:

» t=0:.01:6*pi;» plot3(cos(t),sin(t),t)

» xlabel('cos(t)')

» ylabel('sin(t)')

» zlabel('t')

 

-1

-0.5

0

0.5

1

-1

-0.5

0

0.5

10

5

10

15

20

cos(t)sin(t)

        t

 

سطوح سه بعدي را مي توانيد با استفاده از دستور   surfترسيم  كنيد:

» [x,y]=meshgrid(-pi:pi/8:pi,-pi:pi/8:pi);

» z=cos(x).*cos(y);

» surf(x,y,z)

» view(30,45)

 

-4

-2

0

2

4 -4

-2

0

2

4

-1

-0.5

0

0.5

1

 

5/9/2018 Learning Matlab Softgozar - slidepdf.com

http://slidepdf.com/reader/full/learning-matlab-softgozar 23/35

 ٢٢

  بردارهاي ورودي به اين دستور دستور  meshgridشبكه دو بعدي روي صفحه  xyرا ايجاد مي  كند.

ا  كمـك دسـتور  ـ بـ ديناوت يم ار هدش داجيا حطس مشخص  كننده تقسيمات در جهات  xو  yهستند.

 colorbar  روتـسد زا دـيناوت ي ــ م  z روحم دادعا اب اهگنر قباطت يارب نينچمه  shadingهموار  كنيد.

استفاده  كنيد.» shading interp

» colorbar 

 

ري مـانند  meshz ،meshc ،meshو  waterfallنـيز ـ گيـد تاروـتـسد زا يدعب هس حوطس مسر ياربمي توانيد  كمك گبيريد.

 

ارهاي ٥/٢ بعدي دومن ٣-٥

نمودارهاي به اصطالح ٥/٢ بعدي براي ديدن سطوح ٣ بعدي روي صفحـ  ـه مختصـات ٢ بعـدي بكـار 

يكي از اين روشها رسم خطوط همتراز يك سطح است. مي روند.

 

» [x,y]=meshgrid(-2:.1:2,-2:.1:2);» z=2-((x-1).^2+4*(y-1).^2+2*x.*y);

» [c,h]=contour(x,y,z,[-15 -10 -5 -2 0 0.5]);

» clabel(c,h), xlabel('x'), ylabel('y')

5/9/2018 Learning Matlab Softgozar - slidepdf.com

http://slidepdf.com/reader/full/learning-matlab-softgozar 24/35

 ٢٣

 -2 -1.5 -1 -0.5 0 0.5 1 1.5 2

-2

-1.5

-1

-0.5

0

0.5

1

1.5

2

x

      y

- 15 

-15

- 10 

- 10 -10

 - 5  

 - 5 

 -5

 - 2 

 - 2 

 - 2  

 - 2 

 -2

  0 

  0

  0 

0 .5  

0 .5 

 

مقـادير  كـه

 ترازي ـ مـه

 منحنيهاي

  آن

 اساس

 بر

  كه

 است

 برداري

 contour 

 دستور

 در

 چهارم

  آگرومان

 clabel روتـسد ان داده خواهنـد شـد. ـ شـن رادومن يور تسا رادرب نآ  ياه هفلوم اب ربارب اهنآ  يددع

مقادير خطوط همتراز را روي نمودار نشان مي دهد.

 

ر صفحـه  xyگنريسـت و رگنـهاي متفـاوتي بـه ـ بـ دومع يا هيواز زا ار حطس هك  تسا نآ  رگيد شور

مقادير مختلف  zنسبت داد:

» pcolor(x,y,z)

» shading interp

» colorbar 

 

(m-files) يسيون همانرب -٦ا  ـ جـكي ار اهنآ  سپس و دينك  هريخذ هدنورك پي رد ديناوت يم ار MATLAB تاروتسد زا يا هعومجم

داراي  را باشـد بـايد حتمـا" ــ ج چنين پرونده اي براي  آنكه در محيط  MATLABقابل ا اجرا نمائيد.

5/9/2018 Learning Matlab Softgozar - slidepdf.com

http://slidepdf.com/reader/full/learning-matlab-softgozar 25/35

 ٢٤

 ،دـينك  هدافتـسا (MATLAB Editor ) MATLAB رگـ شـياريو در صورتي  كه از  دنباله " ".mباشد.

تفاده از  ـ سـا تروص رد دنباله " ".mبطور خودكار در هگنام ذخيره پرونده به نام  آن افزوده مي  گردد.

ه پرونـده  ـ كـ  دينك  لصاح نانيمطا ( Notepad ريظن) MATLAB رگشياريو زا ريغب يرگيد رگشياريو

به روش  asciiو با دنباله " ".mذخيره  گردد. حتما" 

ا تـاكيد شـده اسـت و نتـايج ـ هـ در اين بخش از يادداشت فقط بر نحوه برنامه نويسي و اجراي برنامه 

  به خواننده توصيه مي  گردد  كه خود برنامه ها را اجراي برنامه هاي مورد بحث نشان داده نشده اند.

اجرا  كرده و نتايج  آنها را مشاهده نمايد.

 

مه اصلي ا ن ر ب ١ -٦

ه اي از  عـومجم زا تسترابع يلصا همانرب  m-fileها مي توانند به دو شكل برنامه اصلي و تابع باشند.

امي  كـه نـام  ـ گنـه دستورها  كه مي توان  آنها را بطور جدگاانه در محيط  كار  MATLABاجرا نمود.

بـه  ب اجـرا مـي  گردنـد. ـ يـترت هب اهروتسد نيا ديسيونب  MATLAB راك  طيحم رد ار يلصا همانرب

ار معلـوم ،دسـتورات زيـر را در  ـ شـف و فلتخم ياهامد رد ،لماك  زام  گجح هبساحم يارب لاثم ناونع

ويرايگشر  MATLABبنويسيد و پسس تحت عنوان   pvt.mذخيره  كنيد:

 

% A sample scritp file: pvt.m

disp(' Calculating the volume of an ideal gas.')

R = 8314; % Gas constant (J/kmol.K)t = ...

input(' Vector of temperature (K) = ');

p = input(' Pressure (bar) = ')*1e5;

v = R*t/p; % Ideal gas law

% Plotting the results

plot(t,v)

xlabel('T (K)')

ylabel('V (m^3/kmol)')

title('Ideal gas volume vs temperature')

ال  آن در همـان ســطر  ـ ـ بـندب هچنآ  و % عالمت نشاگنر وجـود توضيحات در بـرنامه است. % عالمت

بيـاگنر  آن اسـت  كـه  . . . ن عالمـت ـ يـنچمه مي  آيد به هگنام اجراي برنامه ناديده  گرفته مي شود.

ت  ـ مـالع نيا هدافتسا دروم دستور مورد نظر در اين سطر تمام نشده و در سطر بعدي ادامه مي يابد.

ن قسـمت از برنامـه  ـ يـا رت تحار هعلاطم يارب هك  تسا ينالوط يتابساحم ياهروتسد دروم رد رتشيب

بهتر است در دو يا سه خط نوشته شود.

 

MATLAB راـك  طـيحم رد ار نآ  ماـن هـك  ت ـ سـا يفاك  نآ  يارجا يارب ، pvt.m هدنورد پاجيا زا سپ

(نمودار در زير نشان داده نشده است). بنويسيد و نتايج را مشاهده  كنيد

5/9/2018 Learning Matlab Softgozar - slidepdf.com

http://slidepdf.com/reader/full/learning-matlab-softgozar 26/35

 ٢٥

 

» pvt

Calculating the volume of an ideal gas.

Vector of temperature (K) = 100:25:300

Pressure (bar) = 10

 

اده از  diaryبراي ايجاد برنامه ف ت سا ٢-٦

  در صورت استفاده از دستور زير يك روش ايجاد برنامه براي مبتديان بكار بردن دستور  diaryاست.

» diary xyz

 

xyz هدـنورپ د. ـ نـدري  گم كح xyz هدنورر پد نآ  زا سپ MATLAB راك  طيحم ياه هتشون يمامت

در اين حــالت مـي توانيـد  بدون دنباله خواهد بود گمر  آنكه خودتان براي  آن دنباله مشخص  كنيد.

  شروع به نوشتن دستورات مورد نظر در محيط  كار   MATLABكنيد ،نتايج را همان جا ببينيد و در

  ،ديديسر هاوخلد هجيتن و تابساحم ناياه پب هك  يماگنه صورت لزوم تصحيحات الزم را انجام دهيد.

پرونده  xyzرا به  كمك دستور زير ببنديد:

» diary off 

 

ا ـ بـ سپس و دينك  كان پآ  زا ار يفاضا ياهروتسد و طوطخ ،هدرك  زاب ار xyz هدنورد پيناوت يم نونكا

د  كـه بـه نتـايج اجـراي  آن  ـ يـا به اين ترتيب يك  m-fileايجاد  كرده  دنباله   .mآن را ذخيره نمائيد.

اطمينان داريد. 

بع ا ت ٣ -٦

ان  ـ تـزاين دروم تابساحم هك  ار يعباوت ديناوت يم امش ،دنتسه MATLAB هارمه هك  يعباوت رب هوالع

د داده را در ورودي دريـافت مـي  كنـد و پـس از  ــ يك تابع يك يا چن را انجام بدهد نيز ايجاد  كنيد.

خط اول يك  انجام محاسبات الزم نتايج را در قالب يك يا چند متغير خروجي به شما برمي  گرداند.

تابع  كه خط تعريف تابع نيز ناميده مي شود بايد از ترتيب زير پيروي نمايد:

  function هملك  -ير خروجـي بـايد  آنـها را در ـ غـتم كي زا شيب دوجو تروص رد نام متغير يا متغيرهاي خروجي. -

 كروشه  گذاشته و با ويگرول از هم جدا  كنيد.

= عالمت -

پرونده اي  كه تابع در  آن ذخيره مي  گردد بايد داراي همين نام با دنباله  .mباشد. نام تابع. -

در داخل پرانتز. ( كه با ويگرول از هم جدا شده باشند)  آگرومان يا  آگرومانهاي ورودي -

و فشـارها

 در

 را  كـامل

  گـاز

 حجـم

 ،ددرـگ 

 ذخـيره

 ideal.m پرونـده

 در

 ايد ـ بـ

  كه

 ،ريز

 تابع

 مثال

 براي

دماهاي مختلف محاسبه مي نمايد:

5/9/2018 Learning Matlab Softgozar - slidepdf.com

http://slidepdf.com/reader/full/learning-matlab-softgozar 27/35

 ٢٦

function v = ideal(t,p)

% ideal: Calculation of ideal gas specific volume

% v=ideal(t,p) takes the vector of temperature (t) in K

% and the vector of pressure (p) in Pa and returns the

% matrix of specific volume (v) in m3/kmol.

% Start of calculations

R = 8314; % Gas constant (J/kmol.K)

for k = 1:length(p)

v(k,:) = R*t/p(k); % Ideal gas law

end

ار  ـ كـب يرگيد عبات رد اي و يلصا همانرب كي رد ،MATLAB راك  طيحم رد ديناوت يم ار عبات نيا لاح

مثال" (نتايج در اينجا نشان داده نشده اند): ببريد.

» p=1:10; t=300:10:400;» vol=ideal(t,p);

» surf(t,p,vol)

» view(135,45), colorbar 

 

وه بكـاربردن  آن را ـ حـن و عبات راك  ،عبات فيرعت طخ زا سپ ،ديسيون يم هك  يعباوت رد دوش يم هيصوت

ابع مـي  آينـد را مـي توانيـد  ـ تـ يادتبا رد هك  يا هتسويح پيضوت طوطخ در چند خط توضيح دهيد.

همانند دگير توابع و دستورهاي موجود در  MATLABبا استفاده از دستور  helpمرور  كنيد.

 

» help ideal

ideal: Calculation of ideal gas specific volume

v=ideal(t,p) takes the vector of temperature (t) in K 

and the vector of pressure (p) in Pa and returns the

matrix of specific volume (v) in m3/kmol.

 

ترل جريان محاسبات ن ك ٤ -٦

   MATLABداراي چندين تركيب  كنترل جريان محاسبات است  كه به برنامه امكان مي دهد  كه در

ن دسـتورها در  ـ يـا حين اجرا تصميمات الزم را اتخاذ  كرده و ترتيب اجراي دستورات را  كنترل  كند.

زير شرح داده مي شوند.

 

  –  if . . . (else . . .) endدستور   ifبرنامه را قادر مي سازد  كه تصميم گبيرد  كه چه دستورهايي بايد

مثال: اجرا  گردند.

x = input(' x = ');

if x >= 0

y=x^2

end

5/9/2018 Learning Matlab Softgozar - slidepdf.com

http://slidepdf.com/reader/full/learning-matlab-softgozar 28/35

 ٢٧

در صـورت درسـت بـودن ايـن  د. ـ شـاب يقطنم ترابع كي دياب ديآ  يم if  هملك  لابند هب هك  يترابع

را مـي  گردنـد و در  ـ جـا بيترتب دنراد رارق end و if  نيب ياهرطس رد هك  يياهروتسد ،يقطنم ترابع

صورت نادرست بودن اين عبارت منطقي ،دستورهاي  گفته شده ناديده  گرفته مي شوند.

 مثال: شما هچمنين مي توانيد از دستور  elseاستفاده  كنيد.

x = input(' x = ');

if x >= 0

y=x^2

else

y=-x^2

end

هاي بيـن   ifو  elseاجــرا  تور ــ سد هعومجم ،دشاب تسرد رظن دروم يقطنم ترابع رگا تلاـح نيا رد

مي  گردند و در غير اين صورت دستورهاي بين  elseو  endقابل اجرا مي باشند.

 

ده بيـن   forو  endرا بـه ـ شـ جرد ياهروتسد هك  دهد يم هزاجا همانرب هب for  روتسد  –  for . . . end

مثال: دفعات معيني تكرار نمايد.

k = 0;

for x = 0:0.2:1

k = k + 1

y = exp(-x)

end

    –  while . . . endدر مواردي  كه الزم باشد  كه در حين اجراي برنامه مجموعه اي از دستورات تكرار

ا شـروط معينـي  ـ يـ طرش ندش اضرا ات تايلمع نيا هكلب دشابن مولعم راركت تاعفد دادعت يلو دندرگ 

مثال: ادامه يابند ،مي توان از دستور  whileاستفاده نمود.

x = 0;

while x < 1

y = sin(x)

x = x + 0.1;

end

ارت  ـ بـع كي دياب ديآ  يم while هملك  لابند هب هك  يترابع ،دش هتفگ  if  روتسد دروم رد هچنآ  دننامه

 ،يـقطنم تراـبع ن ـ يـا ندوب قداص تروص رد منطقي باشد  كه در واقع همان شرط مورد نظر است.

دستورهايي  كه در سطرهاي بين  whileو  endقرار دارند بترتيب اجرا مي  گردند تا  آنجايي  كه شرط 

مورد نظر دگير برقرار نباشد.

 

5/9/2018 Learning Matlab Softgozar - slidepdf.com

http://slidepdf.com/reader/full/learning-matlab-softgozar 29/35

 ٢٨

د  كـه برنامـه بـر حسـب مقـادير  ـ شـاب مزال هك  يتقو  –  switch . . . case . . . (otherwise . . .) end

 switch-case بـيكرت ندرـب راـكب ،دـنك  ارـجا ار يتوا ــ فت دستورهاي م مختلف يك متغيـر ،متناظرا"

مثال: راحت تر از بكار بردن چندين دستور   ifمتداخل است.

a = input('a =');

switch a

case 1

disp('One')

case 2

disp('Two')

case 3

disp('Three')

end

ورد اسـتفاده قـرار  گـيرند  ـ مـ دنناوت يم يسيون همانرب رد هك  رگيد ديفم روتسد ود - pause و  break 

شما مي توانيد در صورت لزوم قبل از  كامل شدن حلقه به  كمك دستور  . pause و  break  زا دنترابع

ي مـاند  ـ مـ فقوتم دسرب  pause روتسد هب ارجا نيح رد همانرب هك  يماگنه    breakاز  آن خارج شويد.

  pause زا دـعب روت ـ سـد زا همانرب يارجا سپس و ديهد راشف ديلك  هحفص يور ار يديلك  امش هكنيا ات

مثال: ادامه مي يابد.

k = 0;

for x = 0:0.2:1

if k > 5

disp('k > 5')

breakend

k = k + 1;

y = exp(-x);

disp([' k = ',num2str(k),' y = ',num2str(y)])

pause

end

ا اينكـه  كليـدي روي  ـ تـ دنام يم فقوتم y و k  ريداقم نداد ناشن زا سر پاب ره همانرب ،قوف لاثم رد

ابد  ـ يـ يم همادا ردقنآ  لمع نيا و ددري  گم راركت رگيد راب for  هقلح سپس صفحه  كليد فشرده شود.

(و در  for  ه ـ قـلح زا همانرب جورخ ثعاب  break  روتسد عقوم نيا رد تا اينكه مقدار   kاز ٥ بيشتر شود.

مي شود. اين مثال پايان اجراي برنامه)

 

خطايابي برنامه ها -٧نمائيد: (debugging) شما مي توانيد از راههاي زير ،برنامه هايتان را خطايابي

برنامه را به چند بخش  كوتاهتر تقسيم  كنيد و هر بخش را جدگاانه امتحان  كنيد. -

د بـه  آسـاني بـا ـ يـناوت اين  كار را مي  نتايج محاسبات را در مراحل مياني جريان برنامه بنويسيد. -

برداشتن (;)  semicolonاز انتهاي دستور محاسباتي ويا نوشتن نام متغير مورد نظر انجام دهيد.

5/9/2018 Learning Matlab Softgozar - slidepdf.com

http://slidepdf.com/reader/full/learning-matlab-softgozar 30/35

 ٢٩

ا  كجـا  ـ تـ همانرب هك  ديبايرد همانرب زا يصخشم ياهناكم رد disp نداد رارق اب ديناوت يم نينچمه

به پيش رفته است.

ه هـايي  ـ قـلح دادعت زا همانرب رد و دينك  هدافتسا يسيرتام تايلمع زا هك  دينك  يعس ناكما دح ات -

 كه همان  كار را انجام مي دهند بكاهيد.بـه  (ترجيحـا" را  كنيـد ـ جـا MATLAB راك  طيحم رد هناگادج روطب ار همانرب كش دروم طوطخ -

تا درستي و يا نادرستي محاسبه را دريابيد. (copy-paste كمك 

ام  ـ غـيه پك  دينك  تقد هژيوب و تسا هدش هداد همانرب زا يرطس هي چور اطخ ماغيه پك  دينك  تقد -

خطا چه مي باشد و چه معنايي دارد.

امكانات خطايابي موجود در نرم افزار را به  كمك گبيريد. -

مهاي خطا ا غ ي ١ پ -٧ه  ـ بـ طوبرم دينك  يم تفايرد MATLAB اب راك  يادتبا رد امش هك  يياطخ ياهماغيم پجح نيرتشيب

تفاده از  ـ سـا اب ار همانرب حيحصت هوحن شخب نيا رد عمليات و جاگيزيني هاي برداري/ماتريسي است.

پيغامهاي خطاي دريافتي با ذكر يك مثال نشان داده مي شود.

 

داده هـاي اس قـانون  گـاز  كـامل رسـم  كنـيد. ـ سـا رب ار PVT حطس ديهاوخ يم هك  ديريگب رظن رد

م ويژـه  گـاز را  ــجح ورودي به برنامه محدوده هاي فشار و دما به صورت برداري هستند و برنامه بايد 

ه انجـام  ــ ن بهتر است  كه محاسبه حجم در يك تابع جدگاا محاسبه نمايد و پسس سطح را رسم  كند.رار  كنيـد ،نيـازي بـه نوشـتن مجـدد  ـ كـت زين يرگيد تلاح هلداعم اب ار هبساحم ديهاوخب رگا ات دريگ 

ه اصلـي و  ــ م فرض  كنيد  كه برنا برنامه اصلي نداشته باشيد و فقط تابع محاسبه حجم را تغيير دهيد.

تابع مورد نياز را در وهله اول به صورت زير ايجاد  كرده ايد:

 

(main.m) برنامه اصلي

% Input

p = input(' Pressure (bar) = ');

t = input(' Temperature (K) = ');

% Calculation

v = ideal(t,p*1e5);

% Plotting results

surf(p,vol,t)

 

5/9/2018 Learning Matlab Softgozar - slidepdf.com

http://slidepdf.com/reader/full/learning-matlab-softgozar 31/35

 ٣٠

(ideal.m) تابع

function v = ideal(t,p)

R = 8314; % Gas constant (J/kmol.K)

v = R*t/p; % Ideal gas law

حال در صورتي  كه اين برنامه را اجرا  كنيد، پيغام خطاي زير را دريافت مي  كنيد:

» main

Pressure (bar) = [1:10]

Temperature (K) = 300:5:400

??? Error using ==> /

Matrix dimensions must agree.

Error in ==> C:\MATLABR11\work\ideal.m

On line 4 ==> v = R*t/p; % Ideal gas law

Error in ==> C:\MATLABR11\work\main.m

On line 6 ==> v = ideal(t,p*1e5);

 

ه مراجعـه بـه تـابع اسـت ـ بـ طوبرم هك  يلصا همانرب ٦ رطس زا لاكشا دينك  يم هظحالم هك  روطنامه

ود دارد. ـ جـو  p و t رادرب ود ميسقت هوحن رد  گرفته شده و در حقيقت خطا در سطر ٤ تابع و مشخصا"

در  ام چنيـن عملـي را بدهـد. ـ جـنا هزاجا دياب اهسيرتام داعبا ،يسيرتام تايلمع رد هك  ديروايب داي هب

له مقصـود از عبـارت  ئ ــ س در اين م اينجا با دو بردار  tو   pنمي توان عمل تقسيم را انجام داد و اصوال"

 ٤ رطـس نيارباـنب د. ـ شـاب يمن يسيرتام هبساحم ماجنا لماك  زام  گجح هبساحم يارب هدش هدرب راكب

تـا  اي ماتريسـي) ــ ج (بكار بردن تقسيم عضو به عضو ب تابع  ideal.mبه شكل زير تغيير داده مي شود

محاسبه حجم به صورت ماتريسي صورت گنيرد:

function v = ideal(t,p)

R = 8314; % Gas constant (J/kmol.K)

v = R*t./p; % Ideal gas law

اما با اجراي مجدد برنامه مي بينيد  كه مشكل حل نشده است:» main

Pressure (bar) = [1:10]

Temperature (K) = 300:5:400

??? Error using ==> ./

Matrix dimensions must agree.

Error in ==> C:\MATLABR11\work\ideal.m

On line 4 ==> v = R*t./p; % Ideal gas law

Error in ==> C:\MATLABR11\work\main.m

On line 6 ==> v = ideal(t,p*1e5);

5/9/2018 Learning Matlab Softgozar - slidepdf.com

http://slidepdf.com/reader/full/learning-matlab-softgozar 32/35

 ٣١

 

گار تعداد مولفه هاي بردارهاي  tو   pرا در محيط  كار  MATLABبخواهيم:

» length(p)

ans =

10» length(t)

ans =

21

 

ي تـوان بـر ـ مـن زين وضع هب وضع تايلمع نياربانب و دنتسين هزادنا مه رادرب ود نيا هك  دوش يم هديد

يد و  ائ ــ م در اينجا چاره اي نيست جز  آنكه از يك حلقه در محاسبات استفاده ن روي  آن دو انجام داد.

مقادير حجم وژيه را بر حسب دما ،هر بار در يك فشار معين ،محاسبه نمائيد:

function v = ideal(t,p)

R = 8314; % Gas constant (J/kmol.K)

for k = 1:length(p)

v(:,k) = R*t/p(k); % Ideal gas law

end

اما اين بار نيز با پيغام خطا مواجه مي شويد:

» main

Pressure (bar) = [1:10]

Temperature (K) = 300:5:400

??? In an assignment A(:,matrix) = B, the number of elements in the subscript of A

and the number of columns in B must be the same.

Error in ==> C:\MATLABR11\work\ideal.m

On line 5 ==> v(:,k) = R*t/p(k); % Ideal gas law

Error in ==> C:\MATLABR11\work\main.m

On line 6 ==> v = ideal(t,p*1e5);

 

ك ـ يـ مجح هبساحم ترابع تسار تمس هجيتن رد و تسا يرطس رادرب كي امد رادرب هك  دينك  هجوت

توني قـرار  ـ سـ رادرب كي ترابع نامه ت پچمس رد هك  تسا يلاح رد نيا بردار سطري خواهد بود.

كل زيـر تصحيـح  شـ ه ـ بـ دياب ideal.m عبات نياربانب دارد و پيغام خطا نيز از همينجا ناشي مي شود.

 گردد:

function v = ideal(t,p)

R = 8314; % Gas constant (J/kmol.K)

for k = 1:length(p)

v(k,:) = R*t/p(k); % Ideal gas law

end

5/9/2018 Learning Matlab Softgozar - slidepdf.com

http://slidepdf.com/reader/full/learning-matlab-softgozar 33/35

 ٣٢

اين بار با اجرا  كردن برنامه اصلي پيغام زير را مشاهده مي  كنيد:

» main

Pressure (bar) = [1:10]

Temperature (K) = 300:5:400

??? Undefined function or variable 'vol'.

Error in ==> C:\MATLABR11\work\main.m

On line 9 ==> surf(p,vol,t)

 

اما گار دقت  كنيد مي بينيد  كه اين بار پيغام خطا مربوط به تابع  ideal.mنيست باز هم پيغام خطا!

ه خوبـي  ـ بـ ار دوخ راك  عبات تقيقح رد بلكه خطا از دستور مربوط به رسم داده ها  گرفته شده است.

 v ريـغتم خطاي اين دفعه مربوط به اشتباه در نام متغير اسـت. انجام داده و رفع اشكال شده است.

ولـي  volقبـال" ت. ـ سـا هدش هدرب راكب vol مان اب surf  روتسد رد تعريف شده است اشتباها"  كه قبال"

ن سـطر ،برنامـه  يـا حـيحصت زا س ـ پـ تعريف نشده است و در نتيجه   MATLABآن را نمي شناسد.

اصلي به صورت زير خواهد بود:

% Input

p = input(' Pressure (bar) = ');

t = input(' Temperature (K) = ');

% Calculation

v = ideal(t,p*1e5);

% Plotting results

surf(p,v,t)

اجراي اين برنامه پيغام زير را به دنبال خواهد داشت:

» main

Pressure (bar) = [1:10]

Temperature (K) = 300:5:400

??? Error using ==> surface

Matrix dimensions must agree.

Error in ==> C:\MATLABR11\toolbox\matlab\graph3d\surf.mOn line 59 ==> hh = surface(varargin{:});

Error in ==> C:\MATLABR11\work\main.m

On line 9 ==> surf(p,v,t)

 

ا ـ بـ خطاي اين دفعه باز هم مربوط به دستور   surfو اين بار در باره نحوه معرفي  آرايه ها به  آن است.

هاي اول و دوم ايـن دسـتور  ــ ناموگر اين دستـور مشخص مي  گردد  كه  آ (help) مراجعه به توضيحات

هاي اول و  ـ نـاموگرآ  لوط تلاح نيا رد مي توانند بردار باشند ولي  آگرومان سـوم بايد ماتريس باشد.

5/9/2018 Learning Matlab Softgozar - slidepdf.com

http://slidepdf.com/reader/full/learning-matlab-softgozar 34/35

 ٣٣

ذا طبـق ايـن توضيحـات  ـ لـ دوم بايد به ترتيب برابر با تعداد ستونها و سطرهاي  آگرومان سوم باشد.

با مشاهده ابعاد اين متغير: متغير  vبايد  آگرومان سوم دستور   surfباشد و ضمنا"

» size(v)

ans =

10 21 

بنـابراين برنامـه ايد بـردار   pباشـد. ـ بـ مود ناموگرآ  و t رادرب دياب لوا ناموگرآ  هك  ديئوگب ديناوت يم

اصلي بايد به شكل زير اصالح  گردد:

% Input

p = input(' Pressure (bar) = ');

t = input(' Temperature (K) = ');

% Calculation

v = ideal(t,p*1e5);

% Plotting results

surf(t,p,v)

xlabel('T (K)')

ylabel('P (bar)')

zlabel('V (m^3/kmol)')

view(135,30)

در صورت اجراي برنامه نتيجه نهايي را خواهيد ديد.

» mainPressure (bar) = [1:10]

Temperature (K) = 300:5:400

 

5/9/2018 Learning Matlab Softgozar - slidepdf.com

http://slidepdf.com/reader/full/learning-matlab-softgozar 35/35

 ٣٤

  keyboard و echo ياهروتسد ٢-٧

ي قبـل از  آنكـه اجـرا  گـردد روي  ـ لـصا همانرب زا رطس ره هك  ددري  گم ثعاب echo روتسد ندرب راكب

اين دستور بوژيه  بنابراين ترتيب اجراي دستورات مشخص مي شود. صفحه نمايش نشان داده شود.

در  د واقـع شـود. ــ في هگنامي  كه در برنامه حلقه ها و دستورات شرطي متعدد وجود دارد مي تواند م  صورتي  كه بخواهيد اين دستور در هگنام اجراي تابع خاصي بكار بيفتد بايد نام تابع مورد نظر را بعد

دا  كـردن خطـاي  ـ يـه پب ينادنك چمك  دراوم زا يرايسب رد روتسد نيا ،لاح ره هب از  echoبياوريد.

طري  كـه برنامـه در  آن متوقـف شـده اسـت را  ـ سـ MATLAB دراوم رتشيب رد اريز دنك  يمن همانرب

مشخص مي نمايد.

 

ه بـه  آن دستــور ـ كـ  يماگنه همانرب يارجا ،همانرب نايم رد keyboard روـتسد زا هدافتسا تروص رد

ان را انجـام دهيـد. ــ ت ظر متوقف مي  گردد و به شما اجازه مي دهد  كه عمليات مورد ن مي رسد موقتا"برنامـه پـس از  آنكـه  د نمـود. ـ يـهاوخ هدهاشم رگشيامن هحفص يور ار K  » تمالع يتلاح نينر چد

ايـن دسـتور بويژـه در  ه مـي يـابد. ــ م دا دستور  returnرا وارد نموديد از جايي  كه متوقف شده بود ،ا

شـما بـا  ام خطـا مـي دهـد. ـ غـير پيغتم كي رادقم اي و هزادنا هطساوب همانرب هك  دور يم راكب يعقاوم

  استفاده از دستور  keyboardامكان مي يابيد  كه اندازه و يا مقدار متغير مورد سئوال را ديده و يا  آن

راي ادامـه برنامـه مشـاهده  ـ جـا رد ار رييغت نيا رثا return روتسد زا هدافتسا زا سو پ ديهد رييغت ار

نمائيد.