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

Preview:

DESCRIPTION

محاسبات عددی در مهندسی پزشکی جلسه اول و دوم مقدمه ای بر نرم افزار MATLAB. گلناز بغدادی 1391. کاربرد های نرم افزار ( MATLAB ). نرم افزار MATLAB محیطی برای برنامه نویسی سطح بالا جهت حل مسائل علمی و مهندسی به شمار می رود. - PowerPoint PPT Presentation

Citation preview

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

جلسه اول و دوم

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

گلناز بغدادی1391

(MATLABکاربرد های نرم افزار )

نرم افزارMATLAB محیطی برای برنامه نویسی سطح باال جهت حل مسائل

علمی و مهندسی به شمار می رود.

این نرم افزار امکانات محاسبات متعدد، رسم نمودار و تصاویر و ... را در

اختیار کاربر قرار می دهد.

اين نرم افزار داراي يك كتابخانه گسترده ي از توابع مختلف است که هر کدام

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

مختلف طراحی شده اند.

توابع موجود در این کتابخانه ها به کاربر این اجازه را می دهد که بدون نیاز به

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

صفحه اصلی نرم افزار مطلب

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

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

ظاهری بسیار ناچیز وجود دارد:

پنجره دستورات

(Command Window)

فضای کارWorkspace

صفحه اصلی این نرم افزار دارای اجزای بسیار گسترده ای است ولی دو بخش

نشان داده شده کاربرد بسیار زیادی دارند:

( پنجره دستوراتCommand Window : ) این پنجره مکانی است که کاربر باید دستورات

مورد نظر را درون آن تایپ کند. مکان تایپ با دو عالمت << مشخص شده است و مکان نما در

جلوی این عالمت << در حال چشمک زدن است که نشان می دهد ، نرم افزار آماده دریافت

دستور جدید است.

( فضای کارWorkspace : ) در این فضا تمامی متغیر هایی که در برنامه توسط دستورات

متغیر ها را می توان به صورت برداری، MATLABایجاد شده اند نشان داده می شود. در

ایجاد H=[1 2 3 4 5]ماتریسی تعریف نمود. برای مثال در شکل قبلی یک بردار توسط دستور

شده است. در محیط فضای کار می توان تمامی متغیرهای موجود و ابعاد آنها را مشاهده نمود.در ص8ورتی ک8ه ه8ر ک8دام از این نکت8ه:

viewپنج8ره ه8ا بس8ته ش8د، ب8ه من8وی

در ب8االی ص8فحه رفت8ه و ب8ا زدن تی8ک

ه8ر ک8دام از پنج8ره ه8ا، می ت8وان آن

پنجره را به نمایش در آورد.

شروع کار با نرم افزار

فرض کنید که می خواهیم تابعy=sin(8x):را به کمک نرم افزار رسم کنیم ابتدا باید متغیرx را ایجاد نماییم. برای این منظور به کمک دستورات زیر یک رشته از اعداد

نسبت می دهیم.x را به 10 تا 1مثال

>> x=1:10;

ریخته می شوند(x می شود که در متغیر 10 تا 1)دستور باال باعث تولید اعداد

را Enter)دستور باال را تایپ نمایید، یک بار عالمت ; را در انتها ی دستور قرار دهید و کلید

بزنید و بار دیگر این عالمت را قرار ندهید چه اتفاقی می افتد؟(

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

بعد به کمک دستور زیرsin(8x) را محاسبه کرده و در متغیر y می ریزیم. )هر متغیری که

در خط دستور سمت چپ مساوی قرار داده شود، مقدار نهایی محاسبه شده درون آن

ریخته می شود(

>> y=sin(8*x);

( 10 تا 1 )یعنی از x)با این دستور تابع داده شده در صورت سوال به ازای مقادیر داده شده

ریخته می شود(yمحاسبه شده و در

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

>> plot (x,y)

plot(y) << یا

و x بر حسب هم رسم می شوند. یعنی محور افقی مقادیر y و x)به کمک دستور باال مقادیر

می شود(sin(8x)محور عمودی مقادیر

رسم شده است. ولی این تابع رسم 10 تا 1 از x به ازای مقادیر sin(8x)همانطوری که مشاهده می شود تابع

یک واحد یک واحد تغییر می کند. برای xشده دارای شکستگی های زیادی است. علت این است که مقادیر

از دستور زیر استفاده می شود:xکوچکتر کردن فواصل تغییرات

>> x=0:0.01:10;

اضافه می شود.0.01 ، هر بار به مقدار 10 تا 0 از xبه کمک این دستور مقادیر

را با دستور داده شده محاسبه نموده و آن را رسم نمایید، شکل حاصله چه yحال مجددا مقدار

تفاوتی با شکل قبلی دارد؟

)به جای دستور باال دستور زیر تایپ

شود، چه نتیجه ای مشاهده می شود؟:

>> plot (x, y, ’.’)

ایجاد بردار و ماتریس

a vector x = [1 2 5 1]

x = 1 2 5 1

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

x = 1 2 3 5 1 4 3 2 -1

transpose y = x’ y = 1

2 5

1

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

t =1:10

t = 1 2 3 4 5 6 7 8 9 10 k =2:-0.5:-1

k = 2 1.5 1 0.5 0 -0.5 -1

B = [1:4; 5:8]

x = 1 2 3 4 5 6 7 8

ایجاد بردار و ماتریس از طریق توابع

zeros(M,N) MxN matrix of zeros صفر تمام ماتریس تولید

ones(M,N) MxN matrix of ones یک تمام ماتریس تولید

rand(M,N) MxN matrix of uniformly distributed random numbers on (0,1)

تصادفی اعداد با ماتریس تولید

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

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

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

اندیس ماتریس

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

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

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.

عملگرهای ریاضی

+ جمع

- تفریق* ضرب/ تقسیم^

توان‘ ترانهاده

عملگرهای ماتریسی

را B و Aدو ماتریس به صورت مقابل در

نظر بگیرید

جمع تفریق ضرب ترانهاده

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

.* درایه به درایه ضرب

./ درایه به درایه تقسیم

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

مثال از عملگرهای ریاضی درایه به درایه

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

x≤4π≥0 در sin(x)رسم تابع

ایجاد یک بردار برای x 4 , 0 نقطه بین 100 شاملπ

محاسبه تابعsin )x( به ازای نقاط تعیین شده برای x

رسم خروجی

>>x=linspace)0,4*pi,100(;

>>y=sin)x(;

>>plot)y(

0 10 20 30 40 50 60 70 80 90 100-1

-0.8

-0.6

-0.4

-0.2

0

0.2

0.4

0.6

0.8

1

انواع توابع ریاضی انواعی از توابع ریاضی در نرم افزارMATLAB تعریف شده است که در اینجا به تعدادی از

Cos(x)آنها اشاره می شود: کسینوس

Sin(x) سینوس

Tan(x) تانژانت

Log(x) (lnلگاریتم طبیعی )

Log10(x) 10لگاریتم در مبنای

Exp(x) exتابع نمای

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

Sqrt(x) ریشه مربع

Abs(x) مقدار قدر مطلق یا دامنه عدد مختلط

Angle(x) زاویه عدد مختلط

Real(x) مقدار حقیقی عدد مختلط

Imag(x) مقدار موهومی عدد مختلط

Round(x) روند کردن اعداد اعشاری به سمت نزدیک ترین ععد صحیح

Fix(x) روند کردن به سمت صفر

Plot the function e-x/3sin(x) between 0≤x≤4π Create an x-array of 100 samples between 0

and 4π.

Calculate sin(.) of the x-array

Calculate e-x/3 of the x-array

Multiply the arrays y and y1 correctly

>>x=linspace)0,4*pi,100(;

>>y=sin)x(;

>>y1=exp)-x/3(;

>>y2=y.*y1;

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

Plot the y2-array

>>plot)y2(

0 10 20 30 40 50 60 70 80 90 100-0.3

-0.2

-0.1

0

0.1

0.2

0.3

0.4

0.5

0.6

0.7

امکانات رسمplot(.)

stem(.)

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

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

0 10 20 30 40 50 60 70 80 90 100-0.3

-0.2

-0.1

0

0.1

0.2

0.3

0.4

0.5

0.6

0.7

0 10 20 30 40 50 60 70 80 90 100-0.3

-0.2

-0.1

0

0.1

0.2

0.3

0.4

0.5

0.6

0.7

امکانات رسم

title(.)

xlabel(.)

ylabel(.)

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

>>xlabel)‘x )secs(’(

>>ylabel)‘sin)x(’(0 10 20 30 40 50 60 70 80 90 100

-1

-0.8

-0.6

-0.4

-0.2

0

0.2

0.4

0.6

0.8

1This is the sinus function

x (secs)

sin(

x)

عملگرهای منطقی== با مساوی~= با نامساوی< از کوچکتر> از بزرگتر<= با مساوی و کوچکتر>= با مساوی و بزرگتر& عملگر AND | عملگر OR

دستورات ایجاد شرط و حلقه

if switch for while break ….

if … else ifایجاد شرط با دستور

if (Condition_1)Matlab Commands

elseif (Condition_2)Matlab Commands

elseif (Condition_3)Matlab Commands

elseMatlab 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

Switchایجاد شرط با دستور

switch switch_expr case case_expr

Matlab Commands; case {case_expr1,...}

Matlab Commands;...

otherwise Matlab Commands;

end

مثالswitch )X+Y( case 0 M = 6 case 1 M = 15otherwise 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

ایجاد رشته متنی

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

For i=Index_ArrayMatlab 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

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

while (condition)Matlab Commands

end

مثال

while ))a>3( & )b==5(( Some Matlab Commands;end

m-fileایجاد با کلیک برروی این -mآیکون می توان یک

file جدید برای نوشتن و ذخیره دستورات

ایجاد نمود.

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

آنها ایجاد می کند

m-fileاستفاده از

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

نمی شود.

Save file as Denem430.m

نوشتن تابع

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

برای نوشتن یک تابع یکm-file جدید باز کرده و در ابتدایm-file با نوشتن یکی از دستورات زیر، تابع تعریف می شود.

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

شود.

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

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

حساب کند.( و اگر شاخص ورودیind برابر با )است، مربع درایه به درایه ماتریس 2

( را محاسبه نماید.Aورودی )

نام یکسان

مثالهایی از ایجاد تابعتابعی بنویسید که یک آرایه را : 2مثال

به عنوان ورودی بگیرد و مجموعه و حاصلضرب درایه های آن را به عنوان

خروجی بدهد.

m-fileاین تابع را می توان در یک دیگر و یا در همان صفحه دستور

MATLAB به صورت مقابل فراخوانی نمود.

نرم افزار helpاستفاده از

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

کلمه کلیدی را جستجو نمایید.

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

>>help functionname >>lookfor keyword

Recommended