Transcript ppsx

Slide 1

‫محاسبات عددی در مهندس ی پزشکی‬

‫جلسه اول و دوم‬

‫مقدمه ای بر نرم افزار ‪MATLAB‬‬

‫گلناز بغدادی‬
‫‪1391‬‬


Slide 2

‫کاربرد های نرم افزار (‪)MATLAB‬‬
‫‪ ‬نرم افزار ‪MATLAB‬محیطی برای برنامه نویس ی سطح باال جهت حل مسائل علمی و مهندس ی به‬
‫شمار می رود‪.‬‬
‫‪ ‬این نرم افزار امکانات محاسبات متعدد‪ ،‬رسم نمودار و تصاویر و ‪ ...‬را در اختیار کاربر قرار می دهد‪.‬‬
‫‪ ‬اين نرم افزار داراي يك كتابخانه گسترده‌ي از توابع مختلف است که هر کدام از این کتابخانه ها‬
‫برای پردازش و بررس ی سیستم ها و داده ها در علوم مختلف طراحی شده اند‪.‬‬
‫برنامه های‬
‫‪ ‬توابع موجود در این کتابخانه ها به کاربر این اجازه را می دهد که بدون نیاز به نوشتن ‌‬
‫طوالنی‪ ،‬انواع مختلفی از شبیه سازی ها را انجام دهند‪.‬‬


Slide 3

‫صفحه اصلی نرم افزار مطلب‬
‫این نرم افزار در نسخه های مختلفی ارائه شده است‪ .‬ولی به طور کلی بعد از اجرای این نرم افزار صفحه اصلی دارای چند بخش‬
‫مهم است که در تمامی نسخه ها با تفاوت ظاهری بسیار ناچیز وجود دارد‪:‬‬

‫پنجره دستورات‬
‫( ‪Command‬‬
‫‪)Window‬‬

‫فضای کار‬
‫‪Workspace‬‬


Slide 4

‫صفحه اصلی این نرم افزار دارای اجزای بسیار گسترده ای است ولی دو بخش نشان داده شده کاربرد بسیار زیادی دارند‪:‬‬
‫‪ ‬پنجره دستورات (‪ : )Command Window‬این پنجره مکانی است که کاربر باید دستورات مورد نظر را درون آن تایپ کند‪ .‬مکان‬
‫تایپ با دو عالمت >> مشخص شده است و مکان نما در جلوی این عالمت >> در حال چشمک زدن است که نشان می دهد ‪ ،‬نرم افزار‬

‫آماده دریافت دستور جدید است‪.‬‬
‫‪‬‬

‫فضای کار (‪ : )Workspace‬در این فضا تمامی متغیر هایی که در برنامه توسط دستورات ایجاد شده اند نشان داده می شود‪ .‬در‬
‫‪MATLAB‬متغیر ها را می توان به صورت برداری‪ ،‬ماتریس ی تعریف نمود‪ .‬برای مثال در شکل قبلی یک بردار توسط دستور ‪H=[1 2 3 4‬‬
‫]‪ 5‬ایجاد شده است‪ .‬در محیط فضای کار می توان تمامی متغیرهای موجود و ابعاد آنها را مشاهده نمود‪.‬‬

‫نکته‪ :‬در صورتی که هر کدام از این پنجره ها بسته شد‪ ،‬به‬

‫منوی ‪ view‬در باالی صفحه رفته و با زدن تیک هر کدام‬
‫از پنجره ها‪ ،‬می توان آن پنجره را به نمایش در آورد‪.‬‬


Slide 5

‫شروع کار با نرم افزار‬
‫‪ ‬فرض کنید که می خواهیم تابع )‪ y=sin(8x‬را به کمک نرم افزار رسم کنیم‪:‬‬
‫‪ ‬ابتدا باید متغیر ‪ x‬را ایجاد نماییم‪ .‬برای این منظور به کمک دستورات زیر یک رشته از اعداد مثال ‪ 1‬تا ‪ 10‬را به ‪ x‬نسبت‬
‫می دهیم‪.‬‬

‫;‪>> x=1:10‬‬
‫(دستور باال باعث تولید اعداد ‪ 1‬تا ‪ 10‬می شود که در متغیر ‪ x‬ریخته می شوند)‬
‫(دستور باال را تایپ نمایید‪ ،‬یک بار عالمت ; را در انتها ی دستور قرار دهید و کلید ‪ Enter‬را بزنید و بار دیگر این عالمت را قرار ندهید چه‬

‫اتفاقی می افتد؟)‬
‫(بعد از زدن کلید ‪ Enter‬در پنجره فضای کار ابعاد متغیر ‪ x‬چه مقدار است؟)‬

‫‪ ‬بعد به کمک دستور زیر )‪ sin(8x‬را محاسبه کرده و در متغیر ‪ y‬می ریزیم‪( .‬هر متغیری که در خط دستور سمت چپ‬
‫مساوی قرار داده شود‪ ،‬مقدار نهایی محاسبه شده درون آن ریخته می شود)‬

‫;)‪>> y=sin(8*x‬‬
‫(با این دستور تابع داده شده در صورت سوال به ازای مقادیر داده شده ‪( x‬یعنی از ‪ 1‬تا ‪ ) 10‬محاسبه شده و در ‪ y‬ریخته می شود)‬


Slide 6

‫‪ ‬حال اگر بخواهیم این تابع را رسم کنیم از دستور زیر استفاده می شود‪:‬‬
‫)‪>> plot (x,y‬‬
‫)‪ >> plot(y‬یا‬
‫(به کمک دستور باال مقادیر ‪ x‬و ‪ y‬بر حسب هم رسم می شوند‪ .‬یعنی محور افقی مقادیر ‪ x‬و محور عمودی مقادیر )‪ sin(8x‬می شود)‬

‫(به جای دستور باال دستور زیر تایپ شود‪ ،‬چه نتیجه ای مشاهده‬
‫می شود؟‪:‬‬
‫)’‪>> plot (x, y, ’.‬‬

‫همانطوری که مشاهده می شود تابع )‪ sin(8x‬به ازای مقادیر ‪ x‬از ‪ 1‬تا ‪ 10‬رسم شده است‪ .‬ولی این تابع رسم شده دارای شکستگی های زیادی است‪.‬‬
‫علت این است که مقادیر ‪ x‬یک واحد یک واحد تغییر می کند‪ .‬برای کوچکتر کردن فواصل تغییرات ‪ x‬از دستور زیر استفاده می شود‪:‬‬

‫;‪>> x=0:0.01:10‬‬
‫به کمک این دستور مقادیر ‪ x‬از ‪ 0‬تا ‪ ، 10‬هر بار به مقدار ‪ 0.01‬اضافه می شود‪.‬‬
‫حال مجددا مقدار ‪ y‬را با دستور داده شده محاسبه نموده و آن را رسم نمایید‪ ،‬شکل حاصله چه تفاوتی با شکل قبلی دارد؟‬


Slide 7

‫ایجاد بردار و ماتریس‬
 a vector

x = [1 2 5 1]

x =
1

2

5

 a matrix

1

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

x =

1
5
3

 transpose

2
1
2

3
4
-1
y = x’

y =
1
2
5
1


Slide 8

‫مثالهایی دیگر از روش ایجاد بردار و ماتریس‬
‫‪‬‬

‫‪t =1:10‬‬
‫= ‪t‬‬

‫‪10‬‬

‫‪9‬‬

‫‪8‬‬

‫‪7‬‬

‫‪5‬‬

‫‪6‬‬

‫‪4‬‬

‫‪3‬‬

‫‪0.5‬‬

‫‪1‬‬

‫‪2‬‬

‫‪1‬‬

‫‪‬‬

‫‪k =2:-0.5:-1‬‬
‫= ‪k‬‬

‫‪-1‬‬

‫‪-0.5‬‬

‫‪0‬‬

‫‪1.5‬‬

‫‪2‬‬

‫]‪= [1:4; 5:8‬‬

‫‪B‬‬

‫‪‬‬
‫= ‪x‬‬

‫‪4‬‬
‫‪8‬‬

‫‪3‬‬
‫‪7‬‬

‫‪2‬‬
‫‪6‬‬

‫‪1‬‬
‫‪5‬‬


Slide 9

‫ایجاد بردار و ماتریس از طریق توابع‬
 zeros(M,N)

MxN matrix of zeros
 ‫تولید ماتریس تمام صفر‬

 ones(M,N)

MxN matrix of ones
 ‫تولید ماتریس تمام یک‬

x = zeros(1,3)
x =
0
0
0
x = ones(1,3)
x =
1
1
1

 rand(M,N)

MxN matrix of uniformly
distributed random
numbers on (0,1)
 ‫تولید ماتریس با اعداد تصادفی‬

x = rand(1,3)
x =
0.9501 0.2311 0.6068


Slide 10

‫اندیس ماتریس‬
‫ شروع می شود‬1 ‫ اندیس ماتریس از‬MATLAB ‫ در محیط‬

‫ یک عدد صحیح مثبت است‬MATLAB ‫ اندیس ماتریس در محیط‬

‫مثال‬

A(-2), A(0)
Error: ??? Subscript indices must either be real positive integers or logicals.
A(4,2)
Error: ??? Index exceeds matrix dimensions.


Slide 11

‫اتصال دو ماتریس به هم‬
 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.


Slide 12

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


Slide 13

‫عملگرهای ماتریس ی‬
‫دو ماتریس ‪A‬و ‪ B‬را به صورت‬
‫مقابل در نظر بگیرید‬

‫ترانهاده‬

‫ضرب‬

‫تفریق‬

‫جمع‬


Slide 14

‫عملگرهای ریاض ی درایه به درایه‬

‫ضرب درایه به درایه *‪.‬‬
‫تقسیم درایه به درایه ‪./‬‬
‫به توان رساندن درایه به درایه ^‪.‬‬


Slide 15

‫مثال از عملگرهای ریاض ی درایه به درایه‬
A = [1 2 3; 5 1 4; 3 2 1]
A=
1 2 3
5 1 4
3 2 -1

x = A(1,:)
x=

c=x./y

d = x .^2

b=

c=
0.33 0.5 -3

d=

y = A(3 ,:)
y=

1 2 3

b = x .* y

3 8 -3
3 4 -1

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

1

4

9


Slide 16

‫رسم تابع )‪ sin(x‬در ‪0≤x≤4π‬‬
‫‪ ‬ایجاد یک بردار برای ‪ x‬شامل ‪ 100‬نقطه بین ‪0 , 4π‬‬
‫;)‪>>x=linspace(0,4*pi,100‬‬

‫‪ ‬محاسبه تابع )‪ sin (x‬به ازای نقاط تعیین شده برای ‪x‬‬
‫;)‪>>y=sin(x‬‬
‫‪1‬‬
‫‪0.8‬‬
‫‪0.6‬‬

‫‪ ‬رسم خروجی‬

‫‪0.4‬‬
‫‪0.2‬‬
‫‪0‬‬
‫‪-0.2‬‬
‫‪-0.4‬‬
‫‪-0.6‬‬
‫‪-0.8‬‬

‫‪100‬‬

‫‪90‬‬

‫‪80‬‬

‫‪70‬‬

‫‪60‬‬

‫‪50‬‬

‫‪40‬‬

‫‪30‬‬

‫‪20‬‬

‫‪10‬‬

‫‪0‬‬

‫‪-1‬‬

‫)‪>>plot(y‬‬


Slide 17

‫انواع توابع ریاض ی‬
‫‪ ‬انواعی از توابع ریاض ی در نرم افزار ‪MATLAB‬تعریف شده است که در اینجا به تعدادی از آنها اشاره می شود‪:‬‬
‫کسینوس‬

‫)‪Cos(x‬‬

‫سینوس‬

‫)‪Sin(x‬‬

‫تانژانت‬

‫)‪Tan(x‬‬

‫لگاریتم طبیعی (‪)ln‬‬

‫)‪Log(x‬‬

‫لگاریتم در مبنای ‪10‬‬

‫)‪Log10(x‬‬

‫تابع نمای ‪ex‬‬

‫)‪Exp(x‬‬

‫تابع عالمت ‪ :‬اگر ‪ x‬منفی باشد خروجی ‪ ، 1-‬اگر ‪ x‬مثبت باشد خروجی ‪ 1+‬و اگر ‪x‬‬
‫صفر باشد خروجی صفر است‬

‫)‪Sign(x‬‬

‫ریشه مربع‬

‫)‪Sqrt(x‬‬

‫قدر مطلق یا دامنه عدد مختلط‬
‫مقدار ‌‬

‫)‪Abs(x‬‬

‫زاویه عدد مختلط‬

‫)‪Angle(x‬‬

‫مقدار حقیقی عدد مختلط‬
‫‌‬

‫)‪Real(x‬‬

‫مقدار موهومی عدد مختلط‬

‫)‪Imag(x‬‬

‫روند کردن اعداد اعشاری به سمت نزدیک ترین ععد صحیح‬
‫روند کردن به سمت صفر‬

‫)‪Round(x‬‬
‫)‪Fix(x‬‬


Slide 18

Plot the function e-x/3sin(x) between
0≤x≤4π


Create an x-array of 100 samples between 0
and 4π.
>>x=linspace(0,4*pi,100);



Calculate sin(.) of the x-array
>>y=sin(x);



Calculate e-x/3 of the x-array
>>y1=exp(-x/3);



Multiply the arrays y and y1 correctly
>>y2=y.*y1;


Slide 19

Plot the function e-x/3sin(x) between
0≤x≤4π


Plot the y2-array
>>plot(y2)
0.7
0.6
0.5
0.4
0.3
0.2
0.1
0
-0.1
-0.2
-0.3

0

10

20

30

40

50

60

70

80

90

100


Slide 20

‫امکانات رسم‬

0.7
0.6
0.5
0.4
0.3

 plot(.)
Example:
>>x=linspace(0,4*pi,100);
>>y=sin(x);
>>plot(y)
>>plot(x,y)

0.2
0.1
0
-0.1
-0.2
-0.3

0

10

20

30

40

50

60

70

80

90

100

0

10

20

30

40

50

60

70

80

90

100

0.7
0.6
0.5

 stem(.)

0.4
0.3
0.2

Example:
>>stem(y)
>>stem(x,y)

0.1
0
-0.1
-0.2
-0.3


Slide 21

‫امکانات رسم‬
 title(.)

This is the sinus function
1

>>title(‘This is the sinus function’)

0.8
0.6

 xlabel(.)

0.4

>>xlabel(‘x (secs)’)

sin(x)

0.2
0
-0.2
-0.4

 ylabel(.)
>>ylabel(‘sin(x)’)

-0.6
-0.8
-1

0

10

20

30

40

60
50
x (secs)

70

80

90

100


Slide 22

‫عملگرهای منطقی‬
‫مساوی با == ‪‬‬
‫نامساوی با =~ ‪‬‬
‫کوچکتر از < ‪‬‬

‫بزرگتر از > ‪‬‬
‫کوچکتر و مساوی با =< ‪‬‬
‫بزرگتر و مساوی با => ‪‬‬

‫‪AND‬عملگر & ‪‬‬
‫‪OR‬عملگر | ‪‬‬


Slide 23

‫دستورات ایجاد شرط و حلقه‬
 if
 switch
 for

 while
 break
 ….


Slide 24

if … else if ‫ایجاد شرط با دستور‬
if (Condition_1)
Matlab Commands
elseif (Condition_2)
Matlab Commands
elseif (Condition_3)
Matlab Commands
else
Matlab Commands
end

‫مثال‬
if ((a>3) & (b==5))
Some Matlab Commands;
end
if (a<3)
Some Matlab Commands;
elseif (b~=5)
Some Matlab Commands;
end
if (a<3)
Some Matlab Commands;
else
Some Matlab Commands;
end


Slide 25

Switch ‫ایجاد شرط با دستور‬
switch
case

switch_expr
case_expr
Matlab Commands;
case {case_expr1,...}
Matlab Commands;
...
otherwise
Matlab Commands;
end

‫مثال‬
switch (X+Y)
case 0
M=6
case 1
M = 15
otherwise
error('This is impossible')
end
‫ایجاد رشته‬
‫متنی‬
method = 'Bilinear';
switch lower(method)
case {'linear','bilinear'}
disp('Method is linear')
case 'cubic'
disp('Method is cubic')
otherwise
disp('Unknown method.')
End


Slide 26

For ‫ایجاد حلقه تکرار با دستور‬

For i=Index_Array
Matlab Commands
End

‫مثال‬
for i=1:100
Some Matlab Commands;
end
for j=1:3:200
Some Matlab Commands;
end
for m=13:-0.2:-21
Some Matlab Commands;
end
for k=[0.1 0.3 -13 12 7 -9.3]
Some Matlab Commands;
end


Slide 27

While ‫ایجاد حلقه تکرار با دستور‬

while (condition)
Matlab Commands
end

‫مثال‬
while ((a>3) & (b==5))
Some Matlab Commands;
end


Slide 28

‫ایجاد ‪m-file‬‬
‫با کلیک برروی این آیکون می‬
‫توان یک ‪m-file‬جدید برای‬
‫نوشتن و ذخیره دستورات ایجاد‬
‫نمود‪.‬‬

‫• ‪ m-file‬با پسوند ‪.m‬ذخیره می شوند‬
‫• ‪ m-file‬یک محیط متنی را برای نوشتن دستورات و ذخیره و اجرای آنها ایجاد می کند‬


Slide 29

‫‪Save file as Denem430.m‬‬

‫با قرار دادن عالمت ”;“ در انتهای هر‬
‫دستور نتیجه دستور بعد از نمایش‬
‫داده نمی شود‪.‬‬

‫استفاده از ‪m-file‬‬


Slide 30

‫نوشتن تابع‬
‫‪ ‬توابع در واقع ‪ m-file‬هایی هستند که با یک نام خاص ذخیره شده و با گرفتن یک یا چند ورودی‬
‫می توانند یک یا چند خروجی تولید نمایند‬
‫‪ ‬برای نوشتن یک تابع یک ‪m-file‬جدید باز کرده و در ابتدای ‪ m-file‬با نوشتن یکی از‬

‫دستورات زیر‪ ،‬تابع تعریف می شود‪.‬‬

‫)‪function out1=functionname(in1‬‬
‫)‪function out1=functionname(in1,in2,in3‬‬
‫)‪function [out1,out2]=functionname(in1,in2‬‬
‫)‪function functionname(in1‬‬
‫‪function out1=functionname‬‬

‫‪ ‬باید توجه داشت که ‪ M-file‬به اسم تابع (‪ )functionname‬ذخیره شود‪ .‬به هنگام‬
‫فراخوانی تابع نیز از همان اسم تابع استفاده می شود‪.‬‬


Slide 31

‫مثالهایی از ایجاد تابع‬
‫مثال ‪ :1‬تابعی به صورت )‪ out=squarer (A, ind‬بنویسید که‬
‫‪ ‬اگر شاخص ورودی (‪ )ind‬برابر با ‪ 1‬است ‪ ،‬مربع ماتریس ورودی (‪ )A‬را حساب کند‪.‬‬
‫‪ ‬و اگر شاخص ورودی (‪ )ind‬برابر با ‪ 2‬است‪ ،‬مربع درایه به درایه ماتریس ورودی (‪ )A‬را محاسبه نماید‪.‬‬

‫نام یکسان‬


Slide 32

‫مثالهایی از ایجاد تابع‬
‫مثال ‪ :2‬تابعی بنویسید که یک آرایه را به‬
‫عنوان ورودی بگیرد و مجموعه و حاصلضرب‬
‫درایه های آن را به عنوان خروجی بدهد‪.‬‬

‫این تابع را می توان در یک ‪ m-file‬دیگر و یا‬
‫در همان صفحه دستور ‪ MATLAB‬به‬
‫صورت مقابل فراخوانی نمود‪.‬‬


Slide 33

‫استفاده از ‪ help‬نرم افزار‬
‫‪ ‬با استفاده از یکی از دو دستور زیر می توانید طریقه به کارگیری یک تابع را جستجو کرده ‌و یا با استفاده‬
‫از یک کلمه کلیدی توابع مربوط به آن کلمه کلیدی را جستجو نمایید‪.‬‬

‫‪>>lookfor keyword‬‬

‫‪>>help functionname‬‬

‫‪ ‬یا با استفاده از گزینه ‪ Help‬از نوار منو محیط ‪ help‬نرم افزار باز می شود‪ .‬که در آن می توان انواع‬
‫توابع و کلمات کلیدی را جستجو نمود‪.‬‬