جزوه آموزشی مطلب ( matlab )

83
ب ل ط م ی ش وز م وه آ ز ج( MATLAB ) ی م ل س م ا مدزض ح م ز" ی$ ی ا( پ1391

Upload: sondra

Post on 10-Feb-2016

79 views

Category:

Documents


4 download

DESCRIPTION

جزوه آموزشی مطلب ( MATLAB ). محمدرضا مسلمی پاییز 1391. Matlab. High Level Languages such as C, Pascal etc. Assembly. What is MATLAB? MATLAB ( MATrix LABoratory ) یک زبان برنامه نویسی سطح بالا برای انجام برنامه های محاسباتی است. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: جزوه آموزشی  مطلب ( MATLAB )

جزوه آموزشی مطلب

(MATLAB)

محمدرضا مسلمی

1391 پاییز

Page 2: جزوه آموزشی  مطلب ( MATLAB )

What is MATLAB?MATLAB (MATrix LABoratory)

های • برنامه انجام برای باال س�طح نویس�ی برنام�ه زبان ی�ک محاسباتی است.

و • نویسی برنام�ه محاس�بات، انجام ک�ه اس�ت محیط�ی دارای راحت������ی ب������ه را آنه������ا نتای������ج مشاهده

می توان پیاده سازی نمود.از مهمترین کاربردهای آن می توان به موارد زیر اشاره نمود. •

ریاضیات و محاسبات عددی•پیاده سازی آلگو�های مختلف•مدل سازی، شبیه سازی و نمونه سازی•تحلیل داده های آماری•ترسیم نمودارهای مختلف آماری و مهندسی•پردازش تصویر•رباتیک•

Assembly

High Level Languages such as

C, Pascal etc.

Matlab

Page 3: جزوه آموزشی  مطلب ( MATLAB )

( مطلب برنامه ای ترجمه شدهcompile با مزایا و معایب خاص )خودش است.

اگرچه مترجم آن وجود دارد اما از نظر سرعت تعریفی ندارد. مزایا

سرعت باالی نمونه سازی یادگیری اسان به دلیل راهنمای بسیار کاملکتابخانه کامل برای توابع پردازش تصویرتوانایی نمایش عالیگستردگی استفاده در مراکز آموزشی و صنعتی

معایبسرعت کم برای برخی از انواع پردازش هامناسب نبودن برای پیاده سازی سیستم های مقیاس بزرگ

Page 4: جزوه آموزشی  مطلب ( MATLAB )

Matlab

CommandLinem-files

functions

mat-files

Command execution like DOS command

window

Series of Matlab

commands

InputOutput

capability

Data storage/ loading

برخی از ویژگی های محیط مطلب

Page 5: جزوه آموزشی  مطلب ( MATLAB )

.مطلب یک برنامه برای انجام محاسبات عددی است ه�ل ده�ط 1970در اواي�توس Cleve Moler ل دهه�ه وجود آمد. در اواي�ب ,

بازنويسي شد.C با زبان 1980 شركت 1984در Mathwork .تأسيس شد از استفاده ب�ا خط�ی ج�بر مس�ایل ح�ل برای برنام�ه ای�ن بار نخس�تین

ماتریس طراحی شد.( به همین دلیل نام آن مخفف آزمایشگاه ماتریسMATrix LABoratory )

است. ش ساخته�ع از پی�ل تواب�ه و شام�ترش یافت�یار گس�ه بس�ن برنام�امروزه ای

پردازش ها، داده تحلی�ل نظی�ر مختل�ف مس�ایل ح�ل برای بس�یاری سیگنال، بهینه سازی و انواع دیگر محاسبات علمی است.

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

همه چیز در مطلب به صورت یک ماتریس است. ت. یک�تور اس�ی بر دس�س مبتن�ل لینوک�یستم عام�ه س�ب شبی�ط مطل�محی

پرومپ�ت روی ص�فحه ظاه�ر شده و دس�تور مورد نظ�ر جلوی آ�ن وارد می شود.

د�کلی ک�ه و Enter>وقت�ی اجرا شده < زده م�ی شود دستور وارد شده پرومپت دیگری ظاهر می شود.

میکالون );( تمام شود هیچ نتیجه ای نمایش داده نمی�ه ای با س�اگر جملاز پرومپ�ت بعدی حاص�ل دس�تور نمای�ش داده می آ�ن قب�ل شود. بدون

شود.

Page 6: جزوه آموزشی  مطلب ( MATLAB )

هنگام�ی ک�ه برای اولی�ن بار ای�ن برنام�ه اجرا م�ی شود پنجره زی�ر ظاه�ر می شود.

• Current Directory▫ View folders and m-files

• Workspace▫ View program variables▫ Double click on a variable to see it in the Array

Editor

• Command Window• type commands

Command Historyview past commandssave a whole session

Page 7: جزوه آموزشی  مطلب ( MATLAB )

Command window: Type your instructions here and press ENTER to execute them.

Page 8: جزوه آموزشی  مطلب ( MATLAB )

Example: Declare a column matrix withvalues 1,2 and 3.

Page 9: جزوه آموزشی  مطلب ( MATLAB )

Command history: a list of instructions executed by MATLAB is shown here.

Page 10: جزوه آموزشی  مطلب ( MATLAB )

Workspace: shows a list of variables created by MATLAB.As you can see, the value of ‘aaa’is shown.

Page 11: جزوه آموزشی  مطلب ( MATLAB )

Another way to create a variable Is to press this button.

Page 12: جزوه آموزشی  مطلب ( MATLAB )

MATLAB will prompt you to enter the variable name.

Page 13: جزوه آموزشی  مطلب ( MATLAB )

As you can see, the variable name has been changed to bbb.

Page 14: جزوه آموزشی  مطلب ( MATLAB )

To assign a value to bbb, you can do it intwo ways: 1) Using the command window.

2) Or by double clicking on bbb.

Page 15: جزوه آموزشی  مطلب ( MATLAB )

When you click on bbb, the variableeditor window appears. You can typein new values into bbb by filling in the cells.

Page 16: جزوه آموزشی  مطلب ( MATLAB )

An example is shown here.Try and do it yourself.

Page 17: جزوه آموزشی  مطلب ( MATLAB )

To display variables at the console, you can type the variable name, or you can type disp(variable_name).

Page 18: جزوه آموزشی  مطلب ( MATLAB )

To clear all variables from memory and close all figures, use the clear, close all command.

Page 19: جزوه آموزشی  مطلب ( MATLAB )

As you can see, all workspace variables are deleted when you execute this command.

Page 20: جزوه آموزشی  مطلب ( MATLAB )

To clear the command window,use the clc (clear console) command.

Page 21: جزوه آموزشی  مطلب ( MATLAB )

Example: search for function mean

Page 22: جزوه آموزشی  مطلب ( MATLAB )

To create an m-file, 1) type edit at the command window, or 2) Press this button.

Page 23: جزوه آموزشی  مطلب ( MATLAB )

The previous command willdisplay the editor window.The editor creates an m-filethat can be used to write your MATLAB programs.

Page 24: جزوه آموزشی  مطلب ( MATLAB )

To execute a program, pressthe RUN button.

Page 25: جزوه آموزشی  مطلب ( MATLAB )

This window will appear. Press the Change Directory button.

Page 26: جزوه آموزشی  مطلب ( MATLAB )

متغیرهادر مطلب نیازی به پیش تعریف متغیرها و تعیین نوع آنها در ابتدای •

برنامه نیست.

برای تعریف یک متغیر تنها کافی است که کمیت مورد نظر را به آن •منسوب کنیم.

پس از این انتساب، هر یک از متغیر های تعریف شده یک ماتریس • می باشند.1*1

مطلب بین حروف بزرگ و کوچک فرق قائل است.•>> XUndefined function or variable 'X'.

int a;double b;float c;

مثال>> x = 5;>> x1 = 2;>> y = ‘hello’;

Page 27: جزوه آموزشی  مطلب ( MATLAB )

بردارها و ماتریس ها به یکی از روش x=[1 2 5 1]برای تعریف یک بردار سطری مانند •

های زیر عمل می کنیم.

>> x = [1 2 5 1];>> x = [1,2,5,1]

x = 1 2 5 1

برای تعریف یک بردار ستونی به یکی از روش های زیر عمل می کنیم.•>> x1 = [1;2;5;1];>> x1 = [1 2 5 1]’;

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

• y = transpose(x1);

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

• y = x1’ y = 1 2

5 1

Page 28: جزوه آموزشی  مطلب ( MATLAB )

means complex conjugate of transposed ‘دقت کنید: •مثال•

>> z=[1+3i , 2-4i ; 2 , -5+10i];>> z'

ans =

1.0000 - 3.0000i 2.0000 2.0000 + 4.0000i -5.0000 -10.0000i

>> transpose(z)

ans =

1.0000 + 3.0000i 2.0000 2.0000 - 4.0000i -5.0000 +10.0000i

استفاده کنیم فاصله بین خطوط در format compactاگر از دستور نمایش پاسخ ها حذف می شود.

Page 29: جزوه آموزشی  مطلب ( MATLAB )

تعریف بردارها و ماتریس های طوالنیدر صورتی که بخواهیم یک بردار طوالنی دارای یک ریتم و آهنگ خاص •

تعریف کنیم می توانیم از روش زیر استفاده کنیم.>> t = 1:10t = 1 2 3 4 5 6 7 8 9 10

>> k =2:-0.5:-1k = 2.0000 1.5000 1.0000 0.5000 0 -0.5000 -1.0000

>> phi = -pi:pi/6:piphi = -3.1416 -2.6180 -2.0944 -1.5708 -1.0472 -0.5236 0 0.5236 1.0472 1.5708 2.0944 2.6180 3.1416

Page 30: جزوه آموزشی  مطلب ( MATLAB )

می linspace(a,b,n) یا linspace(a,b)روش دیگر استفاده از دستور باشد.

این دستور برای تولید بردارهایی با فواصل خطی استفاده می شود. مثال:sai = linspace(-pi,pi,11)

sai =

-3.1416 -2.5133 -1.8850 -1.2566 -0.6283 0 0.6283 1.2566 1.8850 2.5133 3.1416

A = linspace(1,36,12);

در نظر گرفته 100 را مشخص نکنیم به صورت اتوماتیک nدر صورتی که می شود.

>> B = [1:4; 5:8]

B =

1 2 3 4 5 6 7 8

Page 31: جزوه آموزشی  مطلب ( MATLAB )

استفاده می کنیم. whoبرای مشاهده نام متغیرهای ایجاد شده از دستور >> whoYour variables are:B ans k phi sai t x z

whosبرای دیدن لیست متغیرها به همراه سایز و نوع آنها از دستور استفاده می کنیم.

>> whos Name Size Bytes Class Attributes B 2x4 64 double ans 1x100 800 double k 1x7 56 double phi 1x13 104 double sai 1x11 88 double t 1x10 80 double x 1x5 10 char z 2x2 64 double complex

Page 32: جزوه آموزشی  مطلب ( MATLAB )

تولید بردارها با استفاده از توابع از پیش تعریف شده مطلب

m*n: zeros(m,n)تولید یک ماتریس صفر به سایز >> zeros(2,3)ans = 0 0 0 0 0 0

m*n:ones(m,n)تولید ماتریس یک به سایز >> ones(1,3)ans = 1 1 1

rand(m,n)(:0,1)تولید یک ماتریس تصادفی با توزیع یکنواخت روی بازه >> rand(1,4)ans = 0.8147 0.9058 0.1270 0.9134

Page 33: جزوه آموزشی  مطلب ( MATLAB )

:n*nتولید یک ماتریس مربعی یکه به سایز eye(n)

>> X = eye(3)X = 1 0 0 0 1 0 0 0 1

Page 34: جزوه آموزشی  مطلب ( MATLAB )

برخی از توابعی که روی آرایه ها عمل می کنند: را با هم جمع می کند: xتمام مولفه های بردار

sum(x)>> A=[1 2 3];>> sum(A)ans = 6>> BB = 1 2 3 4 5 6 7 8>> sum(B)ans = 6 8 10 12>> sum(sum(B))ans = 36

Page 35: جزوه آموزشی  مطلب ( MATLAB )

را از اول تا آن مولفه با هم جمع می کند: xتمام مولفه های بردار cumsum(x)

>> cumsum(1:5)ans = 1 3 6 10 15

prod(x) را در هم ضرب می کند: xتمام مولفه های بردار >> AA = 1 2 3>> prod(A)ans = 6 >> B

B = 1 2 3 4 5 6 7 8>> prod(B)ans = 5 12 21 32

Page 36: جزوه آموزشی  مطلب ( MATLAB )

بزرگترین مولفه بردارx :را پیدا می کند max(x)>> max(A)ans = 3

در ماتریسها با این دستور بزرگترین مولفه هر ستون پیدا می شود.>> max(B)ans = 5 6 7 8

کوچکترین مولفه بردارx :را پیدا می کند min(x)

sort(x) را مرتب می کند: xمولفه های >> C=[2,-2,1,0,5,1,7];>> sort(C)ans = -2 0 1 1 2 5 7

Page 37: جزوه آموزشی  مطلب ( MATLAB )

مقدار متوسط یا میانگینx :را پیدا می کند mean(x)

>> mean(A)ans = 2 ماتریس تنک: ماتریس است که تنها تعداد کمی از درایه های آن مقدار دارد و

بقیه عناصر آن صفر است. برای صرفه جویی در میزان حافظه و افزایش سرعت از دستورات زیر

استفاده می کنیم:Sparse(m,n) یک ماتریس تنک به سایز مشخص شده تولید می کند. تمام :

درایه های این ماتریس صفر است.>> zeros(2,3)ans = 0 0 0 0 0 0>> sparse(2,3)ans = All zero sparse: 2-by-3

Page 38: جزوه آموزشی  مطلب ( MATLAB )

Sparse(A) قالب تعریف ماتریس :A.را به حالت تنک تبدیل می کند >> II=eye(3)II = 1 0 0 0 1 0 0 0 1

>> sparse(II)ans = (1,1) 1 (2,2) 1 (3,3) 1

Speye(n) یک ماتریس یکه مربعی :n*n.را به فرم تنک تبدیل می کند >> speye(3)ans = (1,1) 1 (2,2) 1 (3,3) 1

Page 39: جزوه آموزشی  مطلب ( MATLAB )

spones(S) به جای تمام عناصر ماتریس :S.عدد یک می گذارد استفاده می fullبرای نمایش یک ماتریس تنک به فرم معمولی از دستور

کنیم.>> full(II)ans = 1 0 0 0 1 0 0 0 1

Page 40: جزوه آموزشی  مطلب ( MATLAB )

نحوه نامگذاری )ایندکس( درایه های ماتریس از C شروع می شوند. )نه مانند 1اندیس های یک ماتریس در مطلب از •

صفر(اندیس ماتریس� ها در مطلب اعداد مثبت می باشند.•

A(-2), A(0)

Error: ??? Subscript indices must either be real positive integers or logicals.

A(4,2)Error: ??? Index exceeds matrix dimensions.

Page 41: جزوه آموزشی  مطلب ( MATLAB )

نحوه اتصال ماتریس ها• x = [1 2], y = [4 5], z=[ 0 0]

A = [ x y] 1 2 4 5 B = [x ; y] 1 2 4 5

C = [x y ;z] Error:??? Error using ==> vertcat CAT arguments dimensions are not consistent.

می منظور ای��ن برای دستورهای از catتوان

یا horzcatی�ا vertcat استفاده کرد.

Page 42: جزوه آموزشی  مطلب ( MATLAB )

size(A)تعیین تعداد سطر و ستون های یک ماتریس •

>> B

B =

1 2 3 4

5 6 7 8

>> size(B)ans = 2 4

length(A) تعیین طول یک بردار •

>> A

A =

1 2 3 >> length(A)ans = 3

Page 43: جزوه آموزشی  مطلب ( MATLAB )

flipud(A)چرخش درایه های یک ماتریس از باال به پایین•

>> A=[1 2;3 4;-1 0]

A =

1 2

3 4

-1 0

>> B=flipud(A)B = -1 0 3 4 1 2

fliplr(A)چرخش درایه های یک ماتریس از چپ به راست•

>> A=[1 2;3 4;-1 0]

A =

1 2

3 4

-1 0

>> C=fliplr(A)C = 2 1 4 3 0 -1

Page 44: جزوه آموزشی  مطلب ( MATLAB )

عملگرهای ماتریسیتفریق-جمع+تقسیم/ضرب*توان^

Page 45: جزوه آموزشی  مطلب ( MATLAB )

اعمال عملگرها به صورت عضو به عضوضرب درایه در درایه.*تقسیم هر درایه بر درایه متناظر./

به توان رساندن نظیر به نظیر.^

K= x^2Erorr: ??? Error using ==> mpower Matrix must be square.B=x*yErorr:??? Error using ==> mtimes Inner matrix dimensions must agree.

A = [1 2 3; 5 1 4; 3 2 1] A = 1 2 3 5 1 4 3 2 -1

y = A(3 ,:)

y= 3 4 -1

b = x .* y

b= 3 8 -3

c = x . / y

c= 0.33 0.5 -3

d = x .^2

d= 1 4 9

x = A(1,:)

x= 1 2 3

Page 46: جزوه آموزشی  مطلب ( MATLAB )

برخی از توابع ماتریسی عبارتند از:det(a)دترمینان ماتریس مربعیinv(a)محاسبه وارون ماتریس

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

تولید یک بردار از درایه های روی قطر اصلی یک ماتریس مربعی diag(a)

diag(v) تولید ماتریس مربعی قطری

Page 47: جزوه آموزشی  مطلب ( MATLAB )

formatکاربردهای دستور این دستور فقط نحوه نمایش داده ها در صفحه نمایش را مشخص می

کند و تاثیری روی دقت نگه داری آنها در حافظه ندارد.>> v=exp(-10*(1:5))

)اعداد بعد از نقطه انتخاب شود format یا همان format short اگر(4اعشار:

v =

1.0e-04 *

0.4540 0.0000 0.0000 0.0000 0.0000

انتخاب شود e format short اگرv =

4.5400e-05 2.0612e-09 9.3576e-14 4.2484e-18 1.9287e-22

(14)اعداد بعد از نقطه اعشار: انتخاب شود format long اگرv =

1.0e-04 *

0.453999297624848 0.000020611536224 0.000000000935762 0.000000000000042

0.000000000000000

Page 48: جزوه آموزشی  مطلب ( MATLAB )

انتخاب شود format long e اگرv =4.539992976248485e-05 2.061153622438558e-09 9.357622968840175e-14 4.248354255291589e-18 1.928749847963918e-22

انتخاب شود ، نمایش به صورت کسر متعارفی format rational اگر>> eps <Enter>ans = 1/4503599627370496

Page 49: جزوه آموزشی  مطلب ( MATLAB )

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

< > <= >= == ~=حاصل همه عملیات صفر )نادرست( و یک )درست(است.

>> 3<5ans = 1>> [1 2]>=[0,3]ans = 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

Page 50: جزوه آموزشی  مطلب ( MATLAB )

x((x>=0)&(x<=3))ans = 1.0000 2.0000 0 3.0000 2.5000>> 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

Page 51: جزوه آموزشی  مطلب ( MATLAB )

آیا در بردار )ماتریس( مورد نظر مقداری با شرط مورد نظر وجود دارد؟ any(A>3)

آیا در بردار )ماتریس( مورد نظر تمام مقادیربا شرط مورد نظر را دارند؟ all(A>3)

در بردار )ماتریس( مورد نظر کدام مقدارها شرط مورد نظر را دارند؟ find(A>3)

>> v=[-2 1 3 5];>> any(v<1)ans = 1>> any(v>6)ans = 0>> all(v<1)ans = 0>> all(v<6)ans = 1

>> find(v>3)ans = 4

Page 52: جزوه آموزشی  مطلب ( MATLAB )

توابع سمبلیک در مطلب در دسترس قرار گرفت.MATLAB 6.0توابع سمبلیک در مطلب از نسخه

استفاده کنید(.ver)برای تعیین ورژن برنامه از دستور

مباحث تحت پوشش امکانات ارائه شدهمشتق، انتگرال، حد، سری، بسط تیلور حساب دیفرانسیل و

انتگرالمعکوس، دترمینان، مقدار ویژه جبر خطی

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

دیفرانسیلحل معادالت

توابع ریاضی خاص توابع ریاضی خاصبرای هرنوع عملیات نمادین باید ابتدا متغیرهای معرفی توابع نمادین: تبدیل ها و تبدیل های معکوس آنهاzفوریه، الپالس، تبدیل

انجام syms و symمورد استفاده را معرفی نمود. این کار با دستورهای می شود.

>> syms a b >> (a+b)^2 ans =(a + b)^2

Page 53: جزوه آموزشی  مطلب ( MATLAB )

factor این تابع، یک چند جمله ای را به حاصلضرب چند عبارت چند :syms x <<جمله ای تجزیه می کند.

>> n=(1:9)';>> p=x.^n-1;>> f=factor(p);>> [p,f]ans =[ x - 1, x - 1][ x^2 - 1, (x - 1)*(x + 1)][ x^3 - 1, (x - 1)*(x^2 + x + 1)][ x^4 - 1, (x - 1)*(x + 1)*(x^2 + 1)][ x^5 - 1, (x - 1)*(x^4 + x^3 + x^2 + x + 1)][ x^6 - 1, (x - 1)*(x + 1)*(x^2 + x + 1)*(x^2 - x + 1)][ x^7 - 1, (x - 1)*(x^6 + x^5 + x^4 + x^3 + x^2 + x + 1)][ x^8 - 1, (x - 1)*(x + 1)*(x^2 + 1)*(x^4 + 1)][ x^9 - 1, (x - 1)*(x^2 + x + 1)*(x^6 + x^3 + 1)]

Page 54: جزوه آموزشی  مطلب ( MATLAB )

expand این تابع، برای بسط دادن عبارات سمبلیک به صورت سمبلیک به :expand((x-2)*(x-4)) <<(factorکار می رود. )عکس

ans =x^2 - 6*x + 8

>> expand(cos(x+y))ans =cos(x)*cos(y) - sin(x)*sin(y)

subs از این تابع برای جایگزاری یک عدد به جای متغیر سمبلیک به کار می :a=cos(x+y) <<(substitutionرود. )مخفف

a =cos(x + y)>> subs(a,x,0)ans =-cos(y)>> subs(a,y,0)ans =cos(x)

>> subs(a,{x,y},[pi,0])ans = -1

Page 55: جزوه آموزشی  مطلب ( MATLAB )

حل معادالت جبریsolve(S) اگر :S یک عبارت سمبلیک باشد تابع روبرو جوابهای معادله S=0

syms a b c x <<را پیدا می کند.>> S=a*x^2+b*x+c;>> solve(S)ans = -(b + (b^2 - 4*a*c)^(1/2))/(2*a) -(b - (b^2 - 4*a*c)^(1/2))/(2*a)>> pretty (ans) +- -+ | 2 1/2 | | b + (b - 4 a c) | | - ------------------- | | 2 a | | | | 2 1/2 | | b - (b - 4 a c) | | - ------------------- | | 2 a | +- -+

>> subs(ans,{a,b,c},[1,1,1])ans = -0.5000 - 0.8660i -0.5000 + 0.8660i

Page 56: جزوه آموزشی  مطلب ( MATLAB )

>> solve('cos(2*x)+sin(x)=1')ans = 0 pi/6 (5*pi)/6

>> solve(cos(2*x)+sin(x)-1)ans = 0 pi/6 (5*pi)/6

>> ss=x^2+1ss =x^2 + 1>> x=sym(0)x =0>> eval(ss)ans =1

Page 57: جزوه آموزشی  مطلب ( MATLAB )

مشتق گیری از توابع سمبلیک در مطلبdiff(f) از تابع سمبلیک :f متغیر پیش فرض( .مشتق می گیرد x)می باشد

>> syms a x>> f=sin(a*x);>> diff(f)ans =a*cos(a*x)

کنیم می عمل صورت این به متغیر تغییر برای>> diff(f,a)ans =x*cos(a*x)

. گیرد می مشتق هم ماتریس یک های درایه از تابع این>> A=[cos(a*x),sin(a*x),-sin(a*x),tan(a*x)]A =[ cos(a*x), sin(a*x), -sin(a*x), tan(a*x)]>> diff(A)ans =[ -a*sin(a*x), a*cos(a*x), -a*cos(a*x), a*(tan(a*x)^2 + 1)]

Page 58: جزوه آموزشی  مطلب ( MATLAB )

حل معادالت دیفرانسیلS = dsolve(eqn,cond) دستور زیر برای حل معادله دیفرانسیل معمولی با :

شرایط اولیه به کار می رود.dsolve('Dy=1+y^2') << بدون شرط اولیهdy/dx=1+y^2حل معادله دیفرانسیل

ans = tan(C3 + t)

اولیه شرط با معادله همان y(0)=1حل>> dsolve('Dy=1+y^2','y(0)=1')ans =tan(pi/4 + t)>>

x=dsolve('Dx^2+x^2=1','x(0)=0')x = cosh((pi*i)/2 + t*i) cosh((pi*i)/2 - t*i) و dy/dx(0)=0 با شرایط اولیه d2y/dx2=cos2x-yحل معادله دیفرانسیل مرتبه دوم

x(0)=0>> y=dsolve('D2y=cos(2*x)-y','y(0)=1','Dy(0)=0','x')y =(5*cos(x))/3 + sin(x)*(sin(3*x)/6 + sin(x)/2) - (2*cos(x)*(6*tan(x/2)^2 - 3*tan(x/2)^4 + 1))/(3*(tan(x/2)^2 + 1)^3)>> simplify(y)ans =1 - (8*(cos(x)/2 - 1/2)^2)/3

Page 59: جزوه آموزشی  مطلب ( MATLAB )

انتگرال گیری از توابع سمبلیک در مطلبint(f) اگر :f یک تابع سمبلیک باشد این دستور انتگرال نامعین آن را حساب

می کند.int(x^n) <<برای محاسبه انتگرال معین، ابتدا و انتهای بازه را می نویسیم.

ans =piecewise([n == -1, log(x)], [n ~= -1, x^(n + 1)/(n + 1)])>> int(sin(2*x))ans =sin(x)^2>> int(exp(n*x))ans =exp(n*x)/n>> int(exp(n*x^2))ans =(pi^(1/2)*erf((-n)^(1/2)*x))/(2*(-n)^(1/2))>> int(x^2,0,1)ans =1/3

>> int(exp(-x),0,inf)ans =1

Page 60: جزوه آموزشی  مطلب ( MATLAB )

ezplot(f) نمودار تابع :f(x) را رسم می کند. به صورت پیش فرض در محدوده

-[pi,pi.رسم می کند ]

>> syms x>> ac=cos(x);>> ezplot(ac)

-6 -4 -2 0 2 4 6

-1

-0.5

0

0.5

1

x

cos(x)

>> ezplot(ac,[0,2*pi])

0 1 2 3 4 5 6

-1

-0.5

0

0.5

1

x

cos(x)

Page 61: جزوه آموزشی  مطلب ( MATLAB )

>> ezplot('tan(x)')

-6 -4 -2 0 2 4 6

-6

-4

-2

0

2

4

6

x

tan(x)

>> fc='x^2+y^2-36';>> ezplot(fc)>> axis equal; % محورها طول

شود مي يکسان

x

y

x2+y2-36 = 0

-6 -4 -2 0 2 4 6-6

-4

-2

0

2

4

6

Page 62: جزوه آموزشی  مطلب ( MATLAB )

-3 -2 -1 0 1 2 3

0

0.2

0.4

0.6

0.8

1

x

exp(-x2/2)

>> syms x>> k=sym(1/sqrt(2));>> f=exp(-(k*x)^2);>> ezplot(f)

-6 -4 -2 0 2 4 6

0.1

0.2

0.3

0.4

0.5

0.6

0.7

0.8

0.9

1

x

1/(4 cos(x) + 5)

>> syms x>> f=1/(5+4*cos(x));>> ezplot(f)

Page 63: جزوه آموزشی  مطلب ( MATLAB )

رسم نمودارplot(x,y,’o’) این دستور برای رسم بردار :y بر حسب x.به کار می رود

>> x=-10:0.5:10;>> y=-x.^3+3*x.^2+1;>> plot(x,y,'o') >> plot(x,y)

-10 -8 -6 -4 -2 0 2 4 6 8 10-1000

-500

0

500

1000

1500

-10 -8 -6 -4 -2 0 2 4 6 8 10-1000

-500

0

500

1000

1500

Page 64: جزوه آموزشی  مطلب ( MATLAB )

hold on/off با این دستور می توان نمودارهای دیگر را هم بر روی یک :نمودار رسم کرد.

>> x=0:0.1:2*pi;>> x1=sin(x);>> x2=cos(x);>> x3=sin(x).^2-cos(2*x);

>> plot(x,x1)>> hold on;>> plot(x,x2,'r')>> hold on;

>> plot(x,x3,'.-k')>> legend('x_1','x_2','x3')

0 1 2 3 4 5 6 7-1

-0.5

0

0.5

1

1.5

2

x1

x2

x3

Page 65: جزوه آموزشی  مطلب ( MATLAB )

برچسب ها:>> title('Plotting Test Program (PTP)')>> xlabel('Time (\mus)')>> ylabel('Voltage (V)','fontsize',18)

0 1 2 3 4 5 6 7-1

-0.5

0

0.5

1

1.5

2Plotting Test Program (PTP)

Time (s)V

olta

ge (V

)

x1

x2

x3

bar(x,y,w): y حسب بر نمودار xرا صورت بهعرض با ای .wمیله کند می رسم

>> hr=0:2:24;>> temp=[-2 -2 -1 0 .5 3 7 10 12 16 10 3 1];>> bar(hr,temp,1)>> xlabel('Hours of The Day')>> ylabel('Temp, Celcius')

0 2 4 6 8 10 12 14 16 18 20 22 24-2

0

2

4

6

8

10

12

14

16

Hours of The Day

Tem

p, C

elci

us

Page 66: جزوه آموزشی  مطلب ( MATLAB )

>> p=[10 3 6 5 2];>> w=[0.5 1 1 0.5 1];>> m={'Tehan','Shiraz','Esfahan','Tabriz','Ahvaz'}m = 'Tehan' 'Shiraz' 'Esfahan' 'Tabriz' 'Ahvaz'>> pie(p,w,m)

Tehan

Shiraz

Esfahan

Tabriz

Ahvaz

Page 67: جزوه آموزشی  مطلب ( MATLAB )

>> x=linspace(-2*pi,2*pi,20);>> figure(1); plot(x,tan(x),x,sin(x),x,cos(x))>> fs='[tan(t) sin(t) cos(t)]';>> figure(2), fplot(fs,[-2*pi 2*pi -5 5])

-8 -6 -4 -2 0 2 4 6 8-15

-10

-5

0

5

10

15

-6 -4 -2 0 2 4 6-5

-4

-3

-2

-1

0

1

2

3

4

5

Page 68: جزوه آموزشی  مطلب ( MATLAB )

رسم نمودارهای سه بعدی

می توان surf(x,y,z) و mesh(x,y,z) و plot3 (x,y,z)ب�ا اس�تفاده از تواب�ع نمودارهای سه بعدی را رسم نمود.

-1-0.5

00.5

1

-1

-0.5

0

0.5

10

10

20

30

40

>> alfa=linspace(0,10*pi,400);>> x1=cos(alfa);>> y1=sin(alfa);>> z1=linspace(0,40,400);>> plot3(x1,y1,z1)

Page 69: جزوه آموزشی  مطلب ( MATLAB )

-10-5

05

10

-10-5

0

5

10-2000

-1000

0

1000

2000

3000 >> x=-10:0.5:10;>> y=x;>> z=-2*x.^3+x+3*y.^2-1;>> plot3(x,y,z)>> grid

-10-5

05

10

-4

-2

0

24

-100

-50

0

50

100

xpyp

zp

>> [xp,yp]=meshgrid(-6:6,-4:4);>> zp=xp.^2+yp.^3;>> mesh(xp,yp,zp)>> xlabel('xp')>> ylabel('yp')>> zlabel('zp')

Page 70: جزوه آموزشی  مطلب ( MATLAB )

-4-2

02

4

-4

-2

0

2

40

5

10

15

20

mesh plotting for Z=X2+Y2

0

2

4

6

8

10

12

14

16

18

>> [X,Y]=meshgrid(-3:0.1:3);>> Z=X.^2+Y.^2;>> mesh(X,Y,Z)>> colorbar>> title('mesh plotting for Z=X^{2}+Y^{2}')

Page 71: جزوه آموزشی  مطلب ( MATLAB )

>> [x,y,z]=peaks(30);>> surf(x,y,z)

-4-2

02

4

-4

-2

0

2

4-10

-5

0

5

10

>> surf(x,y,z,'facecolor','red','edgecolor','none'); light

Page 72: جزوه آموزشی  مطلب ( MATLAB )

;sphere>> [X,Y,Z]=sphereرسم کره با دستور >> mesh(X,Y,Z)>> axis equal; % کند مي متقارن را گراف>> axis off; % کند مي محو را .محورها>> hidden off; % را نمودار مخفي هاي قسمت

کند مي .نمايان

Page 73: جزوه آموزشی  مطلب ( MATLAB )

برنامه نویسی در مطلببرای نوشتن برنامه )توالی چند دستور که در صورت اجرای آنها می •

توان به هدف مشخصی رسید( باید از محیط دیگری موسوم به ادیتور ( استفاده نمود.m-fileام-فایل )

از نوار New script (Ctrl+N)برای باز کردن ادیتور ام-فایل از دکمه • از منوهای باالی File New Scriptابزار باالی صفحه یا از منوی

صفحه استفاده نمود. )بدون خط فاصله( ذخیره mهر برنامه را باید با نام دلخواه و با پسوند .•

نمود.برای اجرای برنامه می توان به یکی از دو روش زیر عمل نمود.•

Enter- با تایپ نام آن در محیط دستور و فشردن کلید 1 در محیط ادیتور ام-فایل Run- با فشردن دکمه 2

انواع برنامه: (: برنامه اصلی است که اجرای آن script m-file- برنامه اصلی )1

باعث انجام عملیات مورد نظر می شود.(: تابع است و از داخل برنامه اصلی یا function m-file- تابع )2

توابع دیگر صدا زده می شود.

Page 74: جزوه آموزشی  مطلب ( MATLAB )

( چیست؟Active directoryمسیر فعال )در هر لحظه مطلب دایرکتوری فعال خود را چک می کند و تمامی توابع و

برنامه های موجود در آن شاخه قابل اجرا هستند. این مسیر در پنجره Command.در قسمت نوار باالی صفحه قابل مشاهده است

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

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

دقت داشته باشید که نام متغیرهای استفاده شده در برنامه با متغیرهای پیش فرض یکسان نباشد.

دقت داشته باشید که نام برنامه با توابع پیش فرض مطلب یکسان نباشد.

Page 75: جزوه آموزشی  مطلب ( MATLAB )

بنویسید که جدول سرمایه نهایی بر bank.mمثال: برنامه ای با نام • 5 سال برای n پس از rحسب سرمایه اولیه )به تومان( را با نرخ سود

format bankنمونه از سرمایه به دست دهد.A=[75000 100000 300000 500000 1000000]; r=0.09;n=10;B=A*(1+r)^n;nama=[A' B']

nama =

75000.00 177552.28 100000.00 236736.37 300000.00 710209.10 500000.00 1183681.84 1000000.00 2367363.67

مثال: نمونه ای از یک برنامه ساده •x = pi/100:pi/100:10*pi;y = sin(x)./x;plot(x,y)grid

Page 76: جزوه آموزشی  مطلب ( MATLAB )

: در صورتی که شرط مورد نظر درست باشد وارد آن ifدستور شرطی • منتقل می endمی شود. در غیر این صورت ادامه برنامه به بعد از

if condition 1شود.Statementselseif condition 2StatementsElseStatementsend

a=input('please enter a number: ');if a==2 disp('your entered number is 2')elseif a==3 disp('your entered number is 3')elseif a==4 disp('your entered number is 4')else disp('your entered number is not 2, 3 or 4')end

Page 77: جزوه آموزشی  مطلب ( MATLAB )

را حل 2مثال: برنامه ای بنویسید که توسط آن بتوان معادله درجه •کرد.

clcclear all;% This program solves equationa=input('Enter a (ax^2_bx+c) : ');b=input('Enter b (ax^2_bx+c) : ');c=input('Enter c (ax^2_bx+c) : ');if a==0 && b~=0 x=-c/b; answer=[x,x];elseif a~=0 delta=b^2-4*a*c; x1=(-b+sqrt(delta))/(2*a); x2=(-b-sqrt(delta))/(2*a); answer=[x1,x2];elseif a==0 && b==0 disp ('this is not an equation') answer =[];endanswer

Page 78: جزوه آموزشی  مطلب ( MATLAB )

% Evaluation of Z % the complex numbers are entered Z1 = 3+4*j; Z2 = 5+2*j; theta = (60/180)*pi; % angle in radians Z3 = 2*exp(j*theta); Z4 = 3+6*j; Z5 = 1+2*j; % Z_rect is complex number Z in rectangular form disp('Z in rectangular form is'); % displays text inside brackets Z_rect = Z1*Z2*Z3/(Z4+Z5); Z_rect Z_mag = abs (Z_rect); % magnitude of Z Z_angle = angle(Z_rect)*(180/pi); % Angle in degrees disp('complex number Z in polar form, mag, phase'); % displays text %inside brackets Z_polar = [Z_mag, Z_angle]

برنامه ای که اعداد مختلط را به صورت •قطبی تبدیل می کند.•

Page 79: جزوه آموزشی  مطلب ( MATLAB )

function y=fact(n)% FACT – Display factorials of integers 1..nif isempty(n) error('No input argument assigned')elseif n < 0 error('Input must be non-negative')elseif abs(n-round(n)) > eps error('Input must be an integer')else for k=1:n kfac=prod(1:k); disp([num2str(k),' ',num2str(kfac)]) y(k)=kfac; end;end

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

Page 80: جزوه آموزشی  مطلب ( MATLAB )

% maximum power transfer vs = 10; rs = 10e3; rl = 0:1e3:50e3; k = length(rl); % components in vector rl % Power dissipation calculation for i=1:k curr(i) = vs/(rs+rl(i)); pl(i) = rl(i)*curr(i)^2; end % Derivative of power is calculated using backward difference dp = diff(pl)./diff(rl); rld = rl(2:length(rl)); % length of rld is 1 less than that of rl % Determination of critical points of derivative of power prod = dp(1:length(dp) - 1).*dp(2:length(dp)); crit_pt = rld(find(prod < 0)); max_power = max(pl); % maximum power is calculated % print out results fprintf('Maximum power occurs at %8.2f Ohms\n',crit_pt) fprintf('Maximum power dissipation is %8.4f Watts\n', max_power) % Plot power versus load plot(rl/1000,pl*1000,'+') title('Power delivered to load') xlabel('load resistance in K Ohms') ylabel('power in mili watts')

Page 81: جزوه آموزشی  مطلب ( MATLAB )

% Charging of an RC circuit c = 10e-6; r1 = 1e3; tau1 = r1*c; t = 0:0.002:0.05; v1 = 10*(1-exp(-t/tau1)); r2 = 10e3; tau2 = r2*c; v2 = 10*(1-exp(-t/tau2)); r3 = .1e3; tau3 = r3*c; v3 = 10*(1-exp(-t/tau3)); plot(t,v1,‘:k',t,v2,‘.-b', t,v3,‘-rs') axis([0 0.06 0 12]) title('Charging of a capacitor with three time constants') xlabel('Time, s') ylabel('Voltage across capacitor') text(0.03, 5.0, '+ for R = 1 Kilohms') text(0.03, 6.0, 'o for R = 10 Kilohms') text(0.03, 7.0, '* for R = 0.1 Kilohms')

رسم نمودار شارژ خازن

Page 82: جزوه آموزشی  مطلب ( MATLAB )

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 calculationsR = 8314; % Gas constant (J/kmol.K)for k = 1:length(p) v(k,:) = R*t/p(k); % Ideal gas lawend

» p=1:10; t=300:10:400;» vol=ideal(t,p);» surf(t,p,vol)» view(135,45), colorbar

Page 83: جزوه آموزشی  مطلب ( MATLAB )

H = zeros(5);for k=1:5 for l=1:5 H(k,l) = 1/(k+l-1); endendH

H =1.0000 0.5000 0.3333 0.2500 0.20000.5000 0.3333 0.2500 0.2000 0.16670.3333 0.2500 0.2000 0.1667 0.14290.2500 0.2000 0.1667 0.1429 0.12500.2000 0.1667 0.1429 0.1250 0.1111