26
ه و تدوین: تهی رمضانعلی نقی زاده وبسایت:http://profs.hut.ac.ir/~naghizadeh ترونیک: پست الکhut.ac.ir (at) naghizadeh نرم افزارMATLAB توابع و عملگرهایا برایمندی ر سودع و بسیار متنوستفاده ا کا ریست. آشنای نموده ا بر فراهم این توابع باسب ازستفاده منا و ا آن های برنامه براسی نوی بسیاروری ضر است. و لذا در این نوشته است که سعی شده نمونهی های ازهم مه مثال همرا ترین توابع به های متنوع برایستفاده نحوه ای با آشنای از آن ارائه شود ها. هی ا بدی نوشته ست که این ویرایشت درشکا منظور ا همینشکال نیست، بهلی از ا خاب کاملمکان رفع و مطال حد ا روز شده تاتر و به های با تر خواهد شد.ل از ادامه بحث قب چند نظر د را مدهم نکته م اشته باشید:1 - ری از بسیا توابع را می توان ب ر روی ماتریس ها به تک تک درایهد نظر تابع مورد که در این صورتعمال کران ورودی ایز به عنو نعمال ا هاسی بز به ماتری نی شده و خروجی همان ه بود خواهدبعاد ا. 2 - گر تابع ا ی مدبر کار نظر باشد کهبع کتابخانه توا فهرست درMATLAB یک تابع یات را به صورتی محاسبازم برا ورات دستدر استبر قا، خود کارشته باشد نداجود وFunction برنامه درMATLAB و ذخیره نوشتهده و نمو. این مبحث دره نمایدستفادوم از آن ا در صورت لز بخش های آتیره آموزشی این دورسی بر و ارائه می شود.3 - چندم افزار نرر خاص در مقداMATLAB بر باید با آن که کار تعریف شده ها آشنا باشدبرست کارمکن ا . م از آنده و یا درستفاده نموان ورودی اا به عنو هایج محاسبات نت ب ا برخی ازدیر مواجه گرددین مقا ابر بایدین کاربر ا . بنافهوم آنز معنا و م اشته باشدهی دا ها آگا. همترین م نمونه های خاص در مقادیرMATLAB به شرح جدول زیر است:

naghizadeh (at) hut.ac.ir :ٗٵ٨٪رتٙ٠ا تسپ ...profs.hut.ac.ir/~naghizadeh/MATLAB بخش اول - توابع و دستورهای... · هحفص لاثم حش یناوخا

  • Upload
    others

  • View
    6

  • Download
    0

Embed Size (px)

Citation preview

Page 1: naghizadeh (at) hut.ac.ir :ٗٵ٨٪رتٙ٠ا تسپ ...profs.hut.ac.ir/~naghizadeh/MATLAB بخش اول - توابع و دستورهای... · هحفص لاثم حش یناوخا

hut.ac.ir(at) naghizadeh پست الکترونیک: http://profs.hut.ac.ir/~naghizadeh وبسایت: زادهرمضانعلی نقیتهیه و تدوین:

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

ست که این نوشته بدیهی ا. ها ارائه شوداز آن آشنایی با نحوه استفادهبرای های متنوعترین توابع به همراه مثالمهم از هایینمونهسعی شده است که نوشتهاین درو لذا . است ضروری

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

باشید:

ه همان شده و خروجی نیز به ماتریسی بها اعمال نیز به عنوان ورودی اعمال کرد که در این صورت تابع مورد نظر به تک تک درایه هاماتریس روی رب توانتوابع را میبسیاری از -1

. ابعاد خواهد بود

وجود نداشته باشد، خود کاربر قادر است دستورات الزم برای محاسبات را به صورت یک تابع یا MATLABدر فهرست توابع کتابخانه باشد که نظر کاربری مد اگر تابع -2

Function در برنامهMATLAB شود. می و ارائه بررسی این دوره آموزشی آتی هایبخشدر صورت لزوم از آن استفاده نماید. این مبحث در نموده ونوشته و ذخیره

برخی ا ب نتایج محاسباتها به عنوان ورودی استفاده نموده و یا در از آن . ممکن است کاربرباشد آشنا هاتعریف شده که کاربر باید با آن MATLABمقدار خاص در نرم افزار چند -3

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

Page 2: naghizadeh (at) hut.ac.ir :ٗٵ٨٪رتٙ٠ا تسپ ...profs.hut.ac.ir/~naghizadeh/MATLAB بخش اول - توابع و دستورهای... · هحفص لاثم حش یناوخا

2 صفحه

مثال شرح نحوه نمایش یا فراخوانیNan

0/0 << عدد مبهم

ans =

NaN

Inf

1/0 << بی نهایت

ans =

Inf

eps کوچکترین اختالف بین دو عدد حقیقی با دقتdouble درMATLAB به(

بیان دیگر این عدد نشان دهنده دقت محاسبات است(

eps = 2^(-52)

>> eps

eps =

2.2204e-16

realmin کوچکترین عدد حقیقی >> realmin('double'),realmin('single')

ans =

2.2251e-308

ans =

1.1755e-38

realmax بزرگترین عدد حقیقی >> realmax('double'), realmax('single')

ans =

1.7977e+308

ans =

3.4028e+38

intmax بزرگترین عدد صحیح

33یا 31به توان 2

>> intmax('int64'), intmax('int32')

ans =

9223372036854775807

ans =

2147483647

intmin کوچکترین عدد صحیح

>> intmin('int64'), intmin('int32')

ans =

-9223372036854775808

ans =

-2147483648

Page 3: naghizadeh (at) hut.ac.ir :ٗٵ٨٪رتٙ٠ا تسپ ...profs.hut.ac.ir/~naghizadeh/MATLAB بخش اول - توابع و دستورهای... · هحفص لاثم حش یناوخا

3 صفحه

مثال شرح ، تابع یا عملگردستور

format حالت پیش فرض (short) – به مثال -دقت نمایش تا چهار رقم اعشار

دقت کنید.

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

سازی اعداد ندارد. کند و تأثیری در دقت محاسبات و ذخیرهمی

>> 9999999999, 100, 1/100, 1/99999, pi

ans =

1.0000e+10

ans =

100

ans =

0.0100

ans =

1.0000e-05

ans =

3.1416

format short قبلی همان حالت

format long دقت نمایش تا پانزده رقم اعشار >> format long

>> 9999999999, 100, 1/100, 1/99999, pi

ans =

9.999999999000000e+09

ans =

100

ans =

0.010000000000000

ans =

1.000010000100001e-05

ans =

3.141592653589793

format shorte 01 توان ضربدریک عدد صحیح و چهار رقم اعشار

در نمایش مقادیر صحیح تا نه رقم اعشار تأثیرگذار نیست. توجه:

>> format shorte

>> 9999999999, 100, 1/100, 1/99999, pi

ans =

1.0000e+10

ans =

100

Page 4: naghizadeh (at) hut.ac.ir :ٗٵ٨٪رتٙ٠ا تسپ ...profs.hut.ac.ir/~naghizadeh/MATLAB بخش اول - توابع و دستورهای... · هحفص لاثم حش یناوخا

4 صفحه

مثال شرح ، تابع یا عملگردستورans =

1.0000e-02

ans =

1.0000e-05

ans =

3.1416e+00

format longe 01توان یک عدد صحیح و پانزده رقم اعشار ضربدر

توجه: در نمایش مقادیر صحیح تا نه رقم اعشار تأثیرگذار نیست.

>> format longe

>> 9999999999, 100, 1/100, 1/99999, pi

ans =

9.999999999000000e+09

ans =

100

ans =

1.000000000000000e-02

ans =

1.000010000100001e-05

ans =

3.141592653589793e+00

format shorteng 3از ضریب 01چهار رقم اعشار ضربدر توان >> format shorteng

>> 9999999999, 100, 1/100, 1/99999, pi

ans =

10.0000e+009

ans =

100.0000e+000

ans =

10.0000e-003

ans =

10.0001e-006

ans =

3.1416e+000

format longeng 3از ضریب 01پانزده رقم اعشار ضربدر توان >> format longeng

>> 9999999999, 100, 1/100, 1/99999, pi

ans =

9.99999999900000e+009

ans =

100.000000000000e+000

ans =

Page 5: naghizadeh (at) hut.ac.ir :ٗٵ٨٪رتٙ٠ا تسپ ...profs.hut.ac.ir/~naghizadeh/MATLAB بخش اول - توابع و دستورهای... · هحفص لاثم حش یناوخا

5 صفحه

مثال شرح ، تابع یا عملگردستور 10.0000000000000e-003

ans =

10.0001000010000e-006

ans =

3.14159265358979e+000

format + عدد صفر هم به شودمایش عالمت اعداد )خود عدد نمایش داده نمین ،

(شودصورت یک کاراکتر خالی نمایش داده می

>> -1.2, pi,0

ans =

-

ans =

+

ans =

format bank مناسب برای 01توان ضرب در بدون نمایش اعداد با دو رقم اعشار(

محاسبات مالی(

>> format bank

>> 9999999999, 100, 1/100, 1/99999, pi

ans =

9999999999.00

ans =

100.00

ans =

0.01

ans =

0.00

ans =

3.14

format rat نمایش اعداد به صورت کسری با صورت و مخرج از نوع عدد صحیح >> format rat

>> 9999999999, 100, 1/100, 1/99999, pi

ans =

9999999999

ans =

100

ans =

1/100

ans =

1/99999

ans =

355/113

Page 6: naghizadeh (at) hut.ac.ir :ٗٵ٨٪رتٙ٠ا تسپ ...profs.hut.ac.ir/~naghizadeh/MATLAB بخش اول - توابع و دستورهای... · هحفص لاثم حش یناوخا

6 صفحه

مثال شرح ، تابع یا عملگردستور

ceil نهایتبه سمت مثبت بیاعداد گرد کردن >> ceil([-1.2 -1.7 2.1 2.9])

ans =

-1 -1 3 3

floor نهایتبه سمت منفی بی اعداد گرد کردن >> floor([-1.2 -1.7 2.1 2.9])

ans =

-2 -2 2 2

fix به سمت صفراعداد گرد کردن >> fix([-1.2 -1.7 2.1 2.9])

ans =

-1 -1 2 2

round ترین عدد صحیحبه سمت نزدیکاعداد گرد کردن >> round([-1.2 -1.7 2.1 2.9])

ans =

-1 -2 2 3

rem باقیمانده تقسیم دو عدد >> rem(15,3), rem(15,4)

ans =

0

ans =

3

abs اعداد حقیقیقدر مطلق

مختلط اعداداندازه

>> abs([-1,1])

ans =

1 1

>> abs([1+i 3+4*i])

ans =

1.4142 5.0000

dec2bin

bin2dec و بالعکس 2مبنای ده به مبنای تبدیل

>> dec2bin([1 2 5 100])

ans =

0000001

0000010

0000101

1100100

dec2hex 01تبدیل مبنای ده به مبنای >> dec2hex(2672)

ans =

A70

Page 7: naghizadeh (at) hut.ac.ir :ٗٵ٨٪رتٙ٠ا تسپ ...profs.hut.ac.ir/~naghizadeh/MATLAB بخش اول - توابع و دستورهای... · هحفص لاثم حش یناوخا

7 صفحه

مثال شرح ، تابع یا عملگردستور

پذیر است. امکان format hexبا دستور بالعکس حالت :توجه

sin

cos

tan

cot

sin(pi/6) << )ورودی بر حسب رادیان(های مثلثاتی نسبت

ans =

0.5000

sind

cosd

tand

cotd

sind(30) << های مثلثاتی )ورودی بر حسب درجه(نسبت

ans =

0.5000

asin

acos

atan

acot

πهای مثلثاتی )خروجی بر حسب رادیان و بین معکوس نسبت

2πو -

2 +

رادیان(

>> acos(-1)

ans =

3.1416

asind

acosd

atand

acotd

+ 01و -01های مثلثاتی )خروجی بر حسب درجه و بین معکوس نسبت

درجه(

>> acosd(-1/2)

ans =

120.0000

sinh

cosh

tanh

coth

sinh(1) << هایپربولیکی توابع

ans =

1.1752

atan2(Y,X) تانژانت معکوس با نسبتY/X رادیانبا خروجی >> atan2(1,1),atan2(-1,1),atan2(-1,...

-1),atan2(1,-1)

ans =

0.7854

ans =

-0.7854

ans =

-2.3562

ans =

2.3562

atan2d(Y,X) تانژانت معکوس با نسبتY/X با خروجی درجه >> atan2d(sqrt(3),1), atan2d(sqrt(3),-1)

ans =

Page 8: naghizadeh (at) hut.ac.ir :ٗٵ٨٪رتٙ٠ا تسپ ...profs.hut.ac.ir/~naghizadeh/MATLAB بخش اول - توابع و دستورهای... · هحفص لاثم حش یناوخا

8 صفحه

مثال شرح ، تابع یا عملگردستور 60.0000

ans =

120.0000

>> atan2d(-sqrt(3),-1), atan2d(-sqrt(3),1)

ans =

-120.0000

ans =

-60.0000

asinh

acosh asinh(10) << معکوس توابع هایپربولیکی

ans =

2.9982

sign تابع عالمت >> sign([-pi 0 .2])

ans =

-1 0 1

cumsum ؛ به مثال توجه کنید. تراکمیمجموع >> a = [1 2 3; 4 5 6; 7 8 9];

>> cumsum(a)

ans =

1 2 3

5 7 9

12 15 18

clock تایی به ترتیب سال، ماه، روز، ساعت، دقیقه، 1زمان به صورت یک بردار

ثانیه

>> clock

ans =

1.0e+03 *

2.0150 0.0040 0.0020 0.0180

0.0480 0.0249

date خروجی تاریخ به صورت رشته (string) >> date

ans =

04-Apr-2015

log ( لگاریتم نماییln) >> log([2 1+i])

ans =

0.6931 0.3466 + 0.7854i

logx لگاریتم بر مبنایx >> log10(100),log2(8)

ans =

2

ans =

3

Page 9: naghizadeh (at) hut.ac.ir :ٗٵ٨٪رتٙ٠ا تسپ ...profs.hut.ac.ir/~naghizadeh/MATLAB بخش اول - توابع و دستورهای... · هحفص لاثم حش یناوخا

9 صفحه

مثال شرح ، تابع یا عملگردستورroots با ورودی ضرایب به صورت ماتریس ایهای چند جملهمحاسبه ریشه

xمثال روبرو جواب معادله x 2 2 1 است. 0

>> roots([1 2 1])

ans =

-1

-1

gamma

):تابع گاما ) t xx e t dt

1

0

>> gamma(.5)

ans =

1.7725

erf ( تابع خطاError Function) >> erf(0),erf(1)

ans =

0

ans =

0.8427

i یا j عددi یاj در نوشتن اعداد مختلط

کند.استفاده می iدر نمایش اعداد مختلط از MATLABنرم افزار

>> 1+j, 1+i

ans =

1.0000 + 1.0000i

ans =

1.0000 + 1.0000i

angle زاویه عدد مختلط بر حسب رادیان )در بازه– π تاπ) >> angle([1+i -1-i])

ans =

0.7854 -2.3562

real قسمت حقیقی اعداد مختلط >> real(3+4i)

ans =

3

imag قسمت موهومی اعداد مختلط >> imag(3+4i)

ans =

4

conj مزدوج اعداد مختلط >> conj(3+4i)

ans =

3.0000 - 4.0000i

[2 5 ;3 1] < [4 3 ;2 1] << بزرگتر <

ans =

0 0

0 1

Page 10: naghizadeh (at) hut.ac.ir :ٗٵ٨٪رتٙ٠ا تسپ ...profs.hut.ac.ir/~naghizadeh/MATLAB بخش اول - توابع و دستورهای... · هحفص لاثم حش یناوخا

01 صفحه

مثال شرح ، تابع یا عملگردستور [2 5 ;3 1] > [4 3 ;2 1] << کوچکتر >

ans =

0 1

1 0

[2 5 ;3 1] =< [4 3 ;2 1] << بزرگتر مساوی =<

ans =

1 0

0 1

[2 5 ;3 1] => [4 3 ;2 1] << کوچکتر مساوی >=

ans =

1 1

1 0

[2 5 ;3 1] == [4 3 ;2 1] << برابر ==

ans =

1 0

0 0

[2 5 ;3 1] =~ [4 3 ;2 1] << مخالف =~

ans =

0 1

1 1

& AND >> A = [0 1 0 0]; B = [1 1 0 1];

>> A & B

ans =

0 1 0 0

>> 1>0 & 2>1

ans =

1

| OR >> A | B

ans =

1 1 0 1

~ NOT >> ~A

ans =

1 0 1 1

xor XOR >> xor(A,B)

ans =

Page 11: naghizadeh (at) hut.ac.ir :ٗٵ٨٪رتٙ٠ا تسپ ...profs.hut.ac.ir/~naghizadeh/MATLAB بخش اول - توابع و دستورهای... · هحفص لاثم حش یناوخا

00 صفحه

مثال شرح ، تابع یا عملگردستور 1 0 0 1

any ورودی هایاگر هر کدام از درایه ( غیر صفرtrue) باشد جواب یک و اال

. شود(ها صرفنظر می NaN)از جواب صفر خواهد بود

>> A = [-1 0 2;

9 0 -2

2 0 0];

>> any(A)

ans =

1 0 1

all ورودی هایاگر تمام درایه ( غیر صفرtrue) باشد جواب یک و اال جواب

.. شود(ها صرفنظر می NaN)از صفر خواهد بود

>> A = [-1 0 2;

9 0 -2

2 0 0];

>> all(A)

ans =

1 0 0

isnan >> A = [-2 -1 0 1 2]; isnan(1./A)

ans =

0 0 0 0 0

>> A = [-2 -1 0 1 2]; isnan(0./A)

ans =

0 0 1 0 0

isinf >> A = [-2 -1 0 1 2]; isinf(1./A)

ans =

0 0 1 0 0

eye تشکیل ماتریس واحد >> eye(3)

ans =

1 0 0

0 1 0

0 0 1

>> eye(3,5)

ans =

1 0 0 0 0

0 1 0 0 0

0 0 1 0 0

>> eye(3,2)

ans =

1 0

Page 12: naghizadeh (at) hut.ac.ir :ٗٵ٨٪رتٙ٠ا تسپ ...profs.hut.ac.ir/~naghizadeh/MATLAB بخش اول - توابع و دستورهای... · هحفص لاثم حش یناوخا

02 صفحه

مثال شرح ، تابع یا عملگردستور 0 1

0 0

linspace(a,b,n) بین دو عدد )خطی( بردار با فاصله یکنواختتشکیل a وb به تعدادn؛

تولید 011با طول یبردار وارد نشود،در مثال روبرو( 5اگر عدد آخر )مثالً

. شودمی

>> linspace(0,1,5)

ans =

0 0.2500 0.5000 0.7500

1.0000

logspace(a,b,n) ور دستاین در واقعر با فاصله لگاریتمی بین دو عدد؛ تشکیل برداn عدد

در مثال روبرو( نباشد 5اگر عدد آخر )مثالً کند.تولید می b01و a01بین

کند.تولید می 51بردار با طول

>> logspace(1,5,5)

ans =

10 100 1000 10000

100000

>> logspace(1,5,2)

ans =

10 100000

a:d:b ی به اندازههایتشکیل یک بردار با گام d دو مقدار بین a وb >> -1:.2:0

ans =

-1.0000 -0.8000 -0.6000 -0.4000 -

0.2000 0

ones(m,n) تشکیل یک ماتریسn×m های یک با درایه >> ones(2,3)

ans =

1 1 1

1 1 1

zeros(m,n) تشکیل یک ماتریس m×n با درایه های صفر >> zeros(3)

ans =

0 0 0

0 0 0

0 0 0

rand(m,n) با ابعاد تشکیل ماتریسیm×n تصادفی با توزیع یکنواخت در هایبا درایه

[1و0بازه )

>> rand(2,2)

ans =

0.8608 0.9319

0.4213 0.2943

randn(m,n) با ابعاد تشکیل ماتریسm×n تصادفی با توزیع نرمال استاندارد هایبا درایه >> randn(2,2)

ans =

0.5377 -2.2588

1.8339 0.8622

Page 13: naghizadeh (at) hut.ac.ir :ٗٵ٨٪رتٙ٠ا تسپ ...profs.hut.ac.ir/~naghizadeh/MATLAB بخش اول - توابع و دستورهای... · هحفص لاثم حش یناوخا

03 صفحه

مثال شرح ، تابع یا عملگردستورrandi(imax,m,n) یک ماتریس تشکیلm×n تا 0با اعداد صحیح تصادفی بینimax

>> randi(100,1,5)

ans =

71 41 95 66 11

magic(n) ماتریس جادویی n×n تا 0)چیدن اعدادn به توان دو به صورتی که جمع

3باید بزرگتر مساوی nهای هر سطر یا ستون و قطر یکی باشد( درایه

باشد.

>> magic(3)

ans =

8 1 6

3 5 7

4 9 2

pascal(n) از مرتبه تشکیل ماتریس پاسکالn >> pascal(3)

ans =

1 1 1

1 2 3

1 3 6

hilb(n)

) nاز مرتبه تشکیل ماتریس هیلبرت , )H i ji j

1

1

>> hilb(3)

ans =

1.0000 0.5000 0.3333

0.5000 0.3333 0.2500

0.3333 0.2500 0.2000

wilkinson(n) مقادیر ویژه ویلینکسونتشکیل ماتریس تست >> wilkinson(4)

ans =

1.5000 1.0000 0 0

1.0000 0.5000 1.0000 0

0 1.0000 0.5000 1.0000

0 0 1.0000 1.5000

numel تعداد درایه های ماتریس >> x = [1 2 3; 4 5 6];numel(x)

ans =

6

max مقدار حداکثر >> A = [4 8 3]; max(A)

ans =

8

A = [4 8 3; 7 9 0]; max(A)

ans =

7 9 3

>> A = [2 8 4; 7 3 9]; max(A,6)

Page 14: naghizadeh (at) hut.ac.ir :ٗٵ٨٪رتٙ٠ا تسپ ...profs.hut.ac.ir/~naghizadeh/MATLAB بخش اول - توابع و دستورهای... · هحفص لاثم حش یناوخا

04 صفحه

مثال شرح ، تابع یا عملگردستور

ماتریس dim بعد مقدار حداکثر max(A,[],dim) دستور ،به طور کلی

را برای ماتریس max(A,[],2) دستور نمونهدهد. به عنوان می ارائه را

کنید. بررسیمثال روبرو

را نیز بر اساس مثال دوم بررسی نمایید. max(A,x)عملکرد دستور

ans =

6 8 6

7 6 9

>> A = [2 8 4; 7 3 9; 4 6 12]; max(A,[],2)

ans =

8

9

12

min مقدار حداقل

ماتریس dim بعد مقدار حداقل min(A,[],dim)دستور ،به طور کلی

را برای ماتریس min(A,[],2) دستور نمونهدهد. به عنوان می ارائه را

کنید. بررسیمثال روبرو

را نیز بر اساس مثال دوم بررسی نمایید. min(A,x)عملکرد دستور

>> A = [2 8 4; 7 3 9]; min(A)

ans =

2 3 4

>> A = [2 8 4; 7 3 9; 4 6 12]; min(A,[],2)

ans =

2

3

4

>> A = [2 8 4; 7 3 9; 4 6 12]; min(A,5)

ans =

2 5 4

5 3 5

4 5 5

mean ؛ دستور مقدار میانگینmean(A,2) مقدار متوسط بعد دوم ماتریس

توردس تر،به عبارت کلی کند.های ماتریس( را محاسبه می)ستون

mean(A,dim) میانگین بعد dim ماتریس را بدست می دهد. به عنوان

را برای ماتریس مثال روبرو امتحان کنید. mean(A,1) مثال دستور

>> A = [1 2 3; 3 3 6; 4 6 8; 4 7 7]; mean(A)

ans =

3.0000 4.5000 6.0000

>> A = [1 2 3; 3 3 6; 4 6 8; 4 7 7]; mean(A,2)

ans =

2

4

6

6

sum ماتریس یک هایجمع عناصر یک بردار یا ستون >> a = [1 3 6]; sum(a)

ans =

10

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

>> sum(a)

ans =

12 15 18

Page 15: naghizadeh (at) hut.ac.ir :ٗٵ٨٪رتٙ٠ا تسپ ...profs.hut.ac.ir/~naghizadeh/MATLAB بخش اول - توابع و دستورهای... · هحفص لاثم حش یناوخا

05 صفحه

مثال شرح ، تابع یا عملگردستورdiff تشکیل ماتریس اختالف بین هر درایه و درایه قبلی >> A = [1 3 6 8];

>> diff(A)

ans =

2 3 2

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

>> diff(A)

ans =

3 3 -4 0

3 4 7 -

4

cumsum ( جمع تجمعیCumulative Sum) >> a = [1:4; 5:8; 9:12];

>> cumsum(a)

ans =

1 2 3

4

6 8 10

12

15 18 21

24

prod ها )به مثال روبرو دقت کنید(حاصلضرب درایه >> prod([2 5 2 10]), prod([2 5 ; 2 10])

ans =

200

ans =

4 50

cumprod تجمعیضرب >> A = 1:4; cumprod(A)

ans =

1 2 6 24

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

>> cumprod(A)

ans =

1 2 3

4 10 18

>> cumprod(A,2)

ans =

1 2 6

4 20 120

Page 16: naghizadeh (at) hut.ac.ir :ٗٵ٨٪رتٙ٠ا تسپ ...profs.hut.ac.ir/~naghizadeh/MATLAB بخش اول - توابع و دستورهای... · هحفص لاثم حش یناوخا

06 صفحه

مثال شرح ، تابع یا عملگردستور[A B] ترکیب دو ماتریسA وB به صورت افقی >> A = [1 2; 3 4]; B = [4 5; 6 7];

>> [A B]

ans =

1 2 4 5

3 4 6 7

[A;B] ترکیب دو ماتریسA وB به صورت عمودی >> A = [1 2; 3 4]; B = [4 5; 6 7];

>> [A ; B]

ans =

1 2

3 4

4 5

6 7

ه شود. توجه داشتبررسی مثالها )با اجرای مثال آخر، شکل زیر رسم می :

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

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

>> A(1,2)

ans =

2

>> A(1,1:2)

ans =

1 2

>> A(1:2,1:2)

ans =

1 2

4 5

>> A(1:end,1:2)

ans =

1 2

4 5

7 8

>> A(:,2)

ans =

2

5

8

>> A(3,:)

ans =

7 8 9

>> x = 0:.01:360; y = sind(x); plot(x,y)

0 50 100 150 200 250 300 350 400-1

-0.8

-0.6

-0.4

-0.2

0

0.2

0.4

0.6

0.8

1

Page 17: naghizadeh (at) hut.ac.ir :ٗٵ٨٪رتٙ٠ا تسپ ...profs.hut.ac.ir/~naghizadeh/MATLAB بخش اول - توابع و دستورهای... · هحفص لاثم حش یناوخا

07 صفحه

مثال شرح ، تابع یا عملگردستورcat های بزرگتر ها برای ساخت ماتریساین دستور برای ترکیب زیر ماتریس

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

عدی، های سه ببرای درک ماتریسبه عنوان نمونه کاربرد دارد. نیز دو بعد

توان صفحاتی متوالی را تصور نمود که در هر صفحه یک ماتریس )با می

بعد سوم در هر صفحه مقدار دو بعد به صورت جدول( نوشته شده باشد.

های چند به دلیل پیچیدگی باال، استفاده از ماتریسمقدار مشخصی است.

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

شود.نمی

توجه کنید. طبعاً aبه مثال دوم و نحوه تشکیل و نمایش ماتریس سه بعدی

قابل تعریف است، اما برای ما MATLABهای با ابعاد باالتر نیز در ماتریس

قابل تصور نیست!

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

>> cat(2,a,b)

ans =

1 2 4 5

3 4 6 7

>> a = cat(3,eye(2),2*eye(2),3*eye(2))

a(:,:,1) =

1 0

0 1

a(:,:,2) =

2 0

0 2

a(:,:,3) =

3 0

0 3

tril ماتریس پایین مثلثی >> tril([1 2 3; 4 5 6; 7 8 9])

ans =

1 0 0

4 5 0

7 8 9

triu ماتریس باال مثلثی >> triu([1 2 3; 4 5 6; 7 8 9])

ans =

1 2 3

0 5 6

0 0 9

circshift کند(شیفت حلقوی )ستونی عمل می >> circshift([1 4 7;2 5 8;3 6 9]',1)

ans =

7 8 9

1 2 3

4 5 6

Page 18: naghizadeh (at) hut.ac.ir :ٗٵ٨٪رتٙ٠ا تسپ ...profs.hut.ac.ir/~naghizadeh/MATLAB بخش اول - توابع و دستورهای... · هحفص لاثم حش یناوخا

08 صفحه

مثال شرح ، تابع یا عملگردستورreshape تغییر شکل ماتریس >> reshape([1 2 3 4 5 6],2,3)

ans =

1 3 5

2 4 6

rot90 های ماتریسها درایهدرجه 01چرخش >> rot90([1 2 3;4 5 6; 7 8 9])

ans =

3 6 9

2 5 8

1 4 7

fliplr راست و چپچرخش >> A = [1 2 3; 4 5 6; 7 8 9];

>> fliplr(A)

ans =

3 2 1

6 5 4

9 8 7

flipud باال و پایینچرخش >> A = [1 2 3; 4 5 6; 7 8 9];

>> flipud(A)

ans =

7 8 9

4 5 6

1 2 3

diag عناصر قطری به صورت یک بردارجدا کردن >> A = [1 2 3; 4 5 6; 7 8 9];

>> diag(A)

ans =

1

5

9

repmat ایجاد یک ماتریس بر اساس تکرار یک ماتریس دیگر >> A = [1 2; 3 4]; repmat(A,2,3)

ans =

1 2 1 2 1 2

3 4 3 4 3 4

1 2 1 2 1 2

3 4 3 4 3 4

;A = [1 2 3; 4 5 6; 7 8 9] << ترانهاده؛ ‘

>> A'

ans =

1 4 7

Page 19: naghizadeh (at) hut.ac.ir :ٗٵ٨٪رتٙ٠ا تسپ ...profs.hut.ac.ir/~naghizadeh/MATLAB بخش اول - توابع و دستورهای... · هحفص لاثم حش یناوخا

09 صفحه

مثال شرح ، تابع یا عملگردستور

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

. )چرا؟( شکل پاسخ متفاوت است

A’ ر د اعداد مختلط. استو حقیقی های مختلط برای ترانهاده ماتریس

شوند. مزدوج هم می های مختلط،های با درایهماتریس

A.’ های حقیقی یا ترانهاده بدون مزدوج شدن برای برای ترانهاده ماتریس

های مختلط است.ماتریس

2 5 8

3 6 9

>> A.'

ans =

1 4 7

2 5 8

3 6 9

>> A = [1+i i; 2 3+4i];

>> A'

ans =

1.0000 - 1.0000i 2.0000

0 - 1.0000i 3.0000 - 4.0000i

>> A.'

ans =

1.0000 + 1.0000i 2.0000

0 + 1.0000i 3.0000 + 4.0000i

این عبارت برای تعریف یا نشان دادن ماتریس خالی و نیز پاک کردن بخش []

شود. ها استفاده میی از ماتریسدلخواه

حذف شده است. Aدر مثال اول ستون دوم ماتریس

حذف شده است. Aهای دوم و سوم ماتریس در مثال دوم ستون

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

>> A(:,2) = []

A =

1 6 8

4 2 8

7 9 4

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

>> A(:,[2 3])=[]

A =

1 8

4 8

7 4

+ -

هاجمع و تفریق ماتریس

کی حتماً باید ابعادشان ی ،کنیم یا تفریق اگر بخواهیم دو ماتریس را جمع

باشد.

>> A = [1 2; 3 4]; B = [4 3; 2 1];

>> A + B

ans =

5 5

5 5

>> A - B

ans =

Page 20: naghizadeh (at) hut.ac.ir :ٗٵ٨٪رتٙ٠ا تسپ ...profs.hut.ac.ir/~naghizadeh/MATLAB بخش اول - توابع و دستورهای... · هحفص لاثم حش یناوخا

21 صفحه

مثال شرح ، تابع یا عملگردستور

های اگر قرار باشد ماتریسی را با یک عدد جمع یا تفریق کنیم، کل درایه

شوند. ماتریس با آن عدد جمع یا تفریق می

-3 -1

1 3

>> A+5

ans =

6 7

8 9

* .*

;A = [1 2; 3 4]; B = [4 3; 2 1] << بررسی مثال -ها ضرب ماتریس

>> A*2

ans =

2 4

6 8

>> A*B

ans =

8 5

20 13

>> A.*B

ans =

4 6

6 4

det دترمینان ماتریس >> A = [1 2; 3 4]; det(A)

ans =

-2

inv معکوس ماتریس >> A = [1 2; 3 4]; inv(A)

ans =

-2.0000 1.0000

1.5000 -0.5000

A^p

A.^p

A.^B

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

:A^pرسند، اما با دستور می pها به توان تک تک درایه A.^p با دستور

شود. بار در خودش ضرب می pعدد صحیح مثبت باشد، ماتریس p اگر

عدد صحیح منفی باشد، ابتدا معکوس ماتریس حساب شده و سپس pاگر

p شود. بار در خودش ضرب می

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

>> A^2

ans =

7 10

15 22

>> A.^2

ans =

1 4

9 16

>> A^(-2)

ans =

Page 21: naghizadeh (at) hut.ac.ir :ٗٵ٨٪رتٙ٠ا تسپ ...profs.hut.ac.ir/~naghizadeh/MATLAB بخش اول - توابع و دستورهای... · هحفص لاثم حش یناوخا

20 صفحه

مثال شرح ، تابع یا عملگردستور

های ن درایهابه صورت متناظر به تو Aدرایه های ماتریس A.^Bبا دستور

Bو Aرسند. در اجرای این دستور حتماً باید ابعاد ماتریس می Bماتریس

یکی باشد.

5.5000 -2.5000

-3.7500 1.7500

>> B = [4 3; 2 1];

>> A.^B

ans =

1 8

9 4

;A = [1 2; 3 4] << عدد به توان ماتریس

>> 2.^A

ans =

2 4

8 16

x = B/A اگرA ،ماتریس مربعی باشد A/B همانB*inv(A) است. )توجه داشته

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

استفاده کنیم( A/B دستور از که است بهتر

بر آن تقسیم خواهند شد. Bها عدد باشد، تمام درایه Aاگر

درایه یا به nیک بردار افقی با Bباشد و n*nیک ماتریس مربعی Aاگر

x = B/A ستون باشد، در آن صورت پاسخ n با ماتریسی ترصورت کلی

است )که البته ممکن است وجود نداشته باشد(. XA=Bپاسخ معادله

>> format rat

>> A = [1 2; 3 4]; B = [4 3; 2 1];

>> A/B

ans =

3/2 -5/2

5/2 -7/2

>> A = 5;

>> B/A

ans =

4/5 3/5

2/5 1/5

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

B = [2 19 8];

x = B/A

x =

1 2 3

x = A\B

داشته است. )توجه inv(A)*Bهمان A\B د،مربعی باش ماتریس Aاگر

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

استفاده کنیم( A\B دستور از که است بهتر

>> format rat

>> A = [1 2; 3 4]; B = [4 3; 2 1];

>> A\B

ans =

-6 -5

5 4

Page 22: naghizadeh (at) hut.ac.ir :ٗٵ٨٪رتٙ٠ا تسپ ...profs.hut.ac.ir/~naghizadeh/MATLAB بخش اول - توابع و دستورهای... · هحفص لاثم حش یناوخا

22 صفحه

مثال شرح ، تابع یا عملگردستور

بر آن تقسیم خواهند شد. Bهای عدد باشد، تمام درایه Aاگر

درایه یا به nیک بردار افقی با Bباشد و n*nیک ماتریس مربعی Aاگر

x = B\A ستون باشد، در آن صورت پاسخ n با ماتریسی ترصورت کلی

است )که البته ممکن است وجود نداشته باشد(. AX=Bپاسخ معادله

>> A = 2;

>> A\B

ans =

2 3/2

1 1/2

>> A = magic(3);

B = [15; 15; 15];

x = A\B

x =

1

1

1

A./B تقسیم درایه به درایهA برB >> A = [1 2; 3 4]; B = [4 3; 2 1];

>> A./B

ans =

1/4 2/3

3/2 4

A.\B تقسیم درایه به درایهB برA >> A.\B

ans =

4 3/2

2/3 1/4

solve حل معادالت با پاسخ عددی >> solve('x^2-2*x+1')

ans =

1

1

>> solve('cos(x) = -1/2')

ans =

(2*pi)/3

-(2*pi)/3

solve حل دستگاه معادالت با پاسخ عددی >> [x y] = solve('x+2*y=4, 2*x-y=3')

x =

2

y =

1

Page 23: naghizadeh (at) hut.ac.ir :ٗٵ٨٪رتٙ٠ا تسپ ...profs.hut.ac.ir/~naghizadeh/MATLAB بخش اول - توابع و دستورهای... · هحفص لاثم حش یناوخا

23 صفحه

مثال شرح ، تابع یا عملگردستور>> [x y] = solve('x^2+y^2 = 2, x^2-2*y = 3')

x =

1

-1

y =

-1

-1

syms ؛ محاسبات سمبمولیک تعریف پارامترهای سمبولیکMATLAB را

توان در بسیاری از کاربردها استفاده نمود. می

>> syms a b c

>> a^2+sin(b)+exp(c)

ans =

a^2 + exp(c) + sin(b)

solve حل معادالت به صورت سمبولیک

کند، اما حل می xمعادله را برای MATLABبه صورت پیش فرض

بدست آورد. نیز توان پاسخ معادله را برای پارامتر دیگرمی

>> syms a b c

>> solve('a*x^2+b*x+c')

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 |

+- -+

>> syms a x

>> solve('a*x+2',a)

ans =

-2/x

>> solve('a*x+2',x)

ans =

-2/a

solve(‘eq1’,’eq2’

) syms a1 b1 c1 a2 b2 c2 << حل دستگاه معادالت به صورت سمبولیک

Page 24: naghizadeh (at) hut.ac.ir :ٗٵ٨٪رتٙ٠ا تسپ ...profs.hut.ac.ir/~naghizadeh/MATLAB بخش اول - توابع و دستورهای... · هحفص لاثم حش یناوخا

24 صفحه

مثال شرح ، تابع یا عملگردستور>> [x y]=solve('a1*x+b1*y=c1 ,

a2*x+b2*y=c2');

>> pretty(x)

b1 c2 - b2 c1

- -------------

a1 b2 - a2 b1

>> pretty(y)

a1 c2 - a2 c1

-------------

a1 b2 - a2 b1

diff مشتق >> syms a b c x

>> diff(a*x^3+b*cos(x)+exp(x^c))

ans =

3*a*x^2 - b*sin(x) + c*x^(c - 1)*exp(x^c)

dsolve حل معادالت دیفرانسیل مرتبه اول بدون شرایط اولیه >> syms a y(x)

>> dsolve(diff(y) == -a*y)

ans =

C5*exp(-a*x)

>> syms f(t)

>> dsolve(diff(f) == f + sin(t))

ans =

C7*exp(t) - sin(t)/2 - cos(t)/2

dsolve حل معادالت دیفرانسیل مرتبه اول با شرایط اولیه >> syms a y(x)

>> dsolve(diff(y) == -a*y, y(0) == 1)

ans =

exp(-a*x)

dsolve معادله دیفرانسیل مرتبه دو با شرایط اولیه >> syms a y(x)

>> Dy = diff(y);

>> dsolve(diff(y, 2) == -a^2*y, y(0) == -1,

Dy(0) == 0)

ans =

- exp(-a*x*i)/2 - exp(a*x*i)/2

>> pretty(ans)

exp(-a x i) exp(a x i)

- ----------- - ----------

Page 25: naghizadeh (at) hut.ac.ir :ٗٵ٨٪رتٙ٠ا تسپ ...profs.hut.ac.ir/~naghizadeh/MATLAB بخش اول - توابع و دستورهای... · هحفص لاثم حش یناوخا

25 صفحه

مثال شرح ، تابع یا عملگردستور 2 2

dsolve حل دستگاه معادالت دیفرانسیل >> syms x(t) y(t)

>> [x y] = dsolve(diff(x) == y, diff(y) == -

4*x);

>> pretty(x),pretty(y)

C42 cos(2 t) C41 sin(2 t)

------------ + ------------

2 2

C41 cos(2 t) - C42 sin(2 t)

int گیری نا معینانتگرال >> syms x

>> int(1/x+cos(x)+x^2)

ans =

log(x) + sin(x) + x^3/3

>> int((x*z)^2+cos(x*z),z)

ans =

(x^2*z^3)/3 + sin(x*z)/x

int گیری معینانتگرال >> syms x

>> int(x^2+1,0,1)

ans =

4/3

eval این تابع دستوراتMATLAB به عنوانرا به صورت رشته و یا سمبولیک

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

با اجرای دستورات مثال دوم منحنی روبرو دقت کنید. مثالدو به دستور

شود. زیر رسم می

>> eval('A = [1 2; 3 4]')

A =

1 2

3 4

>> syms a y(x)

>> y = dsolve(diff(y) == -3*y, y(0) == 1);

>> x = 0:.001:2;

>> y = eval(y);

>> plot(x,y)

Page 26: naghizadeh (at) hut.ac.ir :ٗٵ٨٪رتٙ٠ا تسپ ...profs.hut.ac.ir/~naghizadeh/MATLAB بخش اول - توابع و دستورهای... · هحفص لاثم حش یناوخا

26 صفحه

مثال شرح ، تابع یا عملگردستور

0 0.2 0.4 0.6 0.8 1 1.2 1.4 1.6 1.8 20

0.1

0.2

0.3

0.4

0.5

0.6

0.7

0.8

0.9

1