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

Post on 10-Feb-2016

79 Views

Category:

Documents

4 Downloads

Preview:

Click to see full reader

DESCRIPTION

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

TRANSCRIPT

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

(MATLAB)

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

1391 پاییز

What is MATLAB?MATLAB (MATrix LABoratory)

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

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

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

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

Assembly

High Level Languages such as

C, Pascal etc.

Matlab

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

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

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

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

Matlab

CommandLinem-files

functions

mat-files

Command execution like DOS command

window

Series of Matlab

commands

InputOutput

capability

Data storage/ loading

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

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

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

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

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

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

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

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

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

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

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

شود.

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

• 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

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

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

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

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

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

MATLAB will prompt you to enter the variable name.

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

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

2) Or by double clicking on bbb.

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

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

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

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

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

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

Example: search for function mean

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

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

To execute a program, pressthe RUN button.

This window will appear. Press the Change Directory button.

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

برنامه نیست.

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

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

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

int a;double b;float c;

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

بردارها و ماتریس ها به یکی از روش 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

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اگر از دستور نمایش پاسخ ها حذف می شود.

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

تعریف کنیم می توانیم از روش زیر استفاده کنیم.>> 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

می 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

استفاده می کنیم. 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

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

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

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

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

برخی از توابعی که روی آرایه ها عمل می کنند: را با هم جمع می کند: 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

را از اول تا آن مولفه با هم جمع می کند: 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

بزرگترین مولفه بردار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

مقدار متوسط یا میانگین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

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

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

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

نحوه نامگذاری )ایندکس( درایه های ماتریس از 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.

نحوه اتصال ماتریس ها• 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 استفاده کرد.

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

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

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

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

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

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

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

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

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

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

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

انتخاب شود 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

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

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

>> 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

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

آیا در بردار )ماتریس( مورد نظر مقداری با شرط مورد نظر وجود دارد؟ 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

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

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

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

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

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

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

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

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

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

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)]

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

حل معادالت جبری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

>> 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

مشتق گیری از توابع سمبلیک در مطلب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)]

حل معادالت دیفرانسیل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

انتگرال گیری از توابع سمبلیک در مطلب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

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)

>> 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

-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)

رسم نمودار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

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

برچسب ها:>> 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

>> 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

>> 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

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

می توان 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)

-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')

-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}')

>> [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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

بنویسید که جدول سرمایه نهایی بر 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

: در صورتی که شرط مورد نظر درست باشد وارد آن 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

را حل 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

% 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]

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

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

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

% 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')

% 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')

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

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

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

top related