Upload
takhtjamshid
View
332
Download
3
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 =
5
دستور 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 روتسد زا هدافتسا زا سو پ ديهد رييغت ار
نمائيد.