Presentation is loading. Please wait.

Presentation is loading. Please wait.

بسم الله الرّحمن الرّحيم

Similar presentations


Presentation on theme: "بسم الله الرّحمن الرّحيم"— Presentation transcript:

1 بسم الله الرّحمن الرّحيم
آموزش نرم افزار MATLAB مهر 1385

2 در اوايل دهه 1980 با زبان C بازنويسي شد.
MATLAB نرم افزاری برای انجام کارهای ریاضی، آماری، مهندسی و....می باشد. MATLAB=MATrix Laboratory(آزمایشگاه ماتریسی) در اوايل دهه 1970 توسط Cleve Moler, به وجود آمد. در اوايل دهه 1980 با زبان C بازنويسي شد. در 1984 شركت Mathwork تأسيس شد. جديدترين نسخه آن MATLAB 7.3 است.

3 MATLAB در نقش یک ماشین حساب

4 MATLAB در نقش یک ماشین حساب (ادامه)
بعد از اجرای نرم افزارچند window(پنجره) ظاهر می شود. یکی از این پنجره ها command window نام دارد. در این محیط دستورات MATLAB نوشته و اجرا می شوند.

5

6 انجام کارهای ساده محاسباتی

7 آشنایی با بعضی قابلیت های MATLAB
تعریف و استفاده از متغیرها محاسبات ماتریسی نوشتن M-file (Script نویسی) دستورات حلقه و شرط دستورات ورودی-خروجی ساخت و احضار توابع رسم نمودار

8 استفاده از متغیرها با نوشتن دستور x=23 متغیری به نام x در حافظه ایجاد می شود و مقدار 23 در آن ریخته می شود. اگر دستور به صورت x=23 نوشته شود MATLAB مقدار آن را مجددا نمایش می دهد و اگر به صورت x=23; نوشته شود MATLAB آن مقدار را نشان نمی دهد. در MATLABنیاز به تعریف متغیر وجود ندارد. همه متغیرها از نوع double (8 بایت) فرض می شود. MATLAB زبانی حساس به حالت حروف (Case sensitive) است.

9 با استفاده از دستور whos می توان فهمید چه متغیرهایی تاکنون تعریف شده است.
با استفاده از دستور clear می توان یک متغیر را از حافظه پاک کرد. متغیرها تا زمانی که clear نشوند در حافظه باقی می مانند. دستور clc برای پاک کردن پنجره command به کار می رود.

10

11 متغیرهای توکار pi : عدد Realmax: بزرگترین عدد حقیقی قابل نمایش
Realmin : کوچکترین عدد حقیقی قابل نمایش Inf: بی نهایت

12 تعریف ماتریس و محاسبات ماتریسی
نحوه تعریف ماتریس برای تعریف ماتریس فوق در MATLAB به صورت زیر عمل می کنیم: AA=[ ; ] AA=[3 9 4]

13 محاسبات ماتریسی جمع و تفریق با + و -
محاسبات ماتریسی جمع و تفریق با + و - ضرب دو ماتریس (با ابعاد m*n و n*p) : با * ترانهاده ماتریس: با ' نکته اگر بخواهیم عناصر دو ماتریس را نظیر به نظیر در هم ضرب کنیم به جای * از .* استفاده می کنیم. ./ برای تقسیم نظیر به نظیر استفاده می شود. ^ براي به توان رساندن ماتريس به كار مي رود. مثلا A^2 ، A*A را محاسبه می کند. .^ : به توان رسانی نظیر به نظیر A.^B

14 مثال A=[1 2 3;4 5 6;3 4 7]; B=[2 3; 1 1;4 5]; در اینجا یک ماتریس 3*3 به نام A و یک ماتریس 2*3 به نام B تعریف کرده ایم. C=A*B این دستور ضرب ماتریسی A در B را انجام می دهد و حاصل که ماتریسی 2*3 است در C قرار می گیرد. D=B*A این دستور اشتباه است چون نمی توان یک ماتریس 2*3 را در ماتریس 3*3 ضرب کرد. E=A^2 ماتریس 3*3 A را در خودش ضرب می کند. حاصل ماتریس 3*3 E است. F=B^2 خطا اعلام می شود. چون B^2 یعنی B*B . اما نمی توان یک ماتریس 2*3 را در 2*3 ضرب کرد. G=B.^2 این دستور درست است و معادل B.*B یعنی ضرب نظیر به نظیر عناصر B است.

15

16 چند دستور پرکاربرد در ایجاد ماتریس ها و بردارها
A=[ ];یک ماتریس تهی ایجاد می کند x=0:0.1:1 یک بردار ایجاد می کند که عنصر اول آن 0 است. عناصر بعدی با اضافه کردن 0.1 (گام افزایش) به دست می آیند تا زمانی که به 1 برسیم.یعنی: x=[ ] x=0:4 اگر مانند این مثال، گام افزایش ذکر نشود 1 در نظر گرفته می شود: x=[ ];

17 script نویسی –m فایلها به جای نوشتن دستورات در پنجره command و اجرا شدن به صورت تک تک،می توان مجموعه ای از دستورات را در یک فایل قرار داد. MATLAB دستورات موجود در این فایل را اجرا می کند. به این فایل script یا m file می گوییم. نحوه نوشتن m file: مجموعه دستورات مورد نظر را در یک ویرایشگر می نویسیم. فایل را با پسوند .m ذخیره می کنیم. MATLAB هم خود یک ویرایشگر برای انجام این کار دارد که با انتخاب file/new/m-file اجرا می شود.

18

19 بعد از نوشتن m file با انتخاب گزینه debug/run، برنامه اجرا می شود.

20 دستورات حلقه و شرط در MATLAB مشابه زبان های برنامه نویسی دستورات حلقه و شرط وجود دارد. دستور for for x=1:0.1:2 <یک یا چند دستور> end x از 1 تا 2 با گام 0.1 تغییر می کند.

21 دستور while while شرط >دستور یا دستورات< end دستور if if شرط

22 دستور if-else if شرط >دستور یا دستورات< else end

23 دستور switch switch متغیر case مقدار1 >دستور یا دستورات< case مقدار2 otherwise end اگر هیچ یک از case ها برقرار نباشند بخش otherwise اجرا می شود. نوشتن این بخش اختیاری است.

24 نکته: عملگرهای مقایسه ای در MATLAB:
> < >= <= ==(مساوی) ~=(نامساوی) & (و منطقی) | (یا منطقی) ~(نقیض) مثال x=4; y=5; if (x==4 & y==2) z=1; else z=4; end z برابر 4 خواهد شد.

25 دستورات ورودی و خروجی در MATLAB
دستور input برای گرفتن ورودی از كاربر به کار می رود: x=input(‘Enter a number or matrix:’); در اجرا، ابتدا پیغام Enter a number چاپ می شود. سپس منتظر می ماند تا کاربر عدد یا ماتریسی وارد کند. این عدد یا ماتریس در x قرار می گیرد(صفحه بعد). تابع disp برای چاپ پیغام یا مقدار متغیر به کار می رود: dips(‘hello’) پیغام Hello را چاپ می کند. x=[3 4; 5 6]; disp(x) مقدار متغیر x را چاپ می کند. disp(‘The value=‘) , disp(x) با استفاده از علامت , می توان چند دستور را با هم در پنجره command اجرا کرد (صفحه بعد)

26

27 نوشتن تابع در MATLAB در MATLAB مشابه زبان های برنامه نویسی می توان برای برنامه تابع نوشت .

28 >یک سری دستورات <
نوشتن تابع توسط کاربر یک m file به صورت زیر ایجاد می کنیم (کلماتی که با رنگ قرمز مشخص شده اند باید عینا نوشته شوند): function y=afun(a,b) >یک سری دستورات < afun اسم تابع است. y برگشتی تابع است. a و b ورودی تابع. بعد از نوشتن m file آن را با نام تابع (در اینجا afun) و پسوند .m ذخیره می کنیم. سپس می توان در پنجره command ، تابع را اجرا کرد. مثلا اگر بنویسیم afunc(3,4) ، 3 به جای a و 4 به جای b قرار می گیرد. تابع اجرا می شود و مقدار y به دست آمده نشان داده می شود. مي توان تابعي با چند خروجي داشت function [y,t,x]=afunc(m)

29

30 نكات در مورد نوشتن تابع نام تابع بايد هم نام با m file باشد.
مي توان در يك m file چندين تابع داشت. اولين تابع در آن، تابع اصلي خوانده مي شود و بقيه زيرتابع گفته مي شوند. اسم m file بايد هم نام با اين تابع اصلي باشد. متغیرهای موجود در یک تابع محلی هستند و توسط توابع دیگر قابل دسترسی نمی باشند. در صورت وجود چند تابع در یک m-file تنها احضار تابع اصلی در پنجره command امکان پذیر است. البته توابع داخل m-file می توانند یکدیگر را احضار کنند.

31 روشی دیگر برای احضار تابع
می توان در یک تابع تابعی دیگر را که در یک m-file دیگر است احضار کرد. مشروط بر اینکه این m-file در همان دایرکتوری تابع قرار داشته باشد.

32 توابع کتابخانه ای توابع مثلثاتی: sin، cos، tan، asin، acos، atan
exp (نمایی)، log (لگاریتم طبیعی)، log10 (لگاریتم در مبنای 10). Factorial _محاسبه فاکتوریل) floor (جزء صحیح)، fix (قسمت صحیح)، ceil (سقف)، sqrt (جذر) ، abs (قدرمطلق). inv (وارون ماتریس)، eye (ایجاد ماتریس واحد)، zeros (ایجاد ماتریس حاوی فقط صفر)، ones (ایجاد ماتریسی با عناصر فقط یک)،

33 مثال x=[ ] y=sin(x) y، برداری است حاوی سینوس عناصر x(صفحه بعد): x=[1 2 ;3 4]; y=inv(x) y وارون ماتریس x است. y=eye(4) ماتریس واحد با ابعاد 4*4 ایجاد می کند.

34

35 b=zeros(4,3) یک ماتریس 3*4 با عناصر صفر ایجاد می کند. x=ones(4,3) ماتریس 3*4 با عناصر یک ایجاد می کند.

36

37 رسم نمودار دستورات متعددی برای رسم نمودار در MATLAB وجود دارند .
تابع plot(x,y) نمودار y را بر حسب x رسم می کند. x=0:0.01:3.14; y=sin(x); plot(x,y); مجموعه دستورات بالا نمودار y=sin(x) را در بازه [0, 3.14] رسم می کند. نکته: نقاط داده شده گسسته هستند. اما تابع plot با اتصال نقاط رسم شده به یکدیگر یک نمودار پیوسته را نشان می دهد. تابع Stem همان کار plot را انجام می دهد منتها نقاط را به هم وصل نمی کند و نمودار گسسته ایجاد می کند.

38

39 رسم نمودارهای سه بعدی هدف : رسم تابع z=f(x,y)
نکته مهم: اگر مثلا x=1:3 و y=1:2 ، z به ازای همه (x,y) ها مقدار باید داشته باشد. (1,1)، (2,1) ، (3,1) و.... دستور meshgrid برای ساخت این نقاط به کار می رود: [x ,y]=meshgrid(1:3,1:2);

40

41 تابع plot3(x,y,z) برای رسم z=f(x,y) به کار می رود:
[x,y]=meshgrid(-3:0.01:3,-3:0.01,3); z=exp(-x.^2-y.^2); plot3(x,y,z); نمودار exp(-x^2-y^2) z= را رسم می کند. این تابع منحنی را به صورت یک سری خطوط رسم می کند.

42

43 دستورات mesh و surf mesh: منحنی را به صورت شبکه شبکه با خطوط رنگارنگ رسم می کند. surf: منحنی را به صورت شبکه شبکه با خطوط رنگارنگ رسم می کند و به علاوه داخل شبکه ها را هم رنگ می کند.

44

45

46 آموزش نرم افزار MATLAB بخش 2
بسم الله الرّحمن الرّحيم آموزش نرم افزار MATLAB بخش 2 آبان 1385 46

47 خلاصه مطالب 47 نکاتی بیشتر در مورد کار با ماتریس ها (آرایه ها).
رشته (String) تعریف ساختار (Structure). تعریف آرایه سلولی (Cell array). توابع مربوط به زمان اجرا توابع مربوط به فایلهای صوتی 47

48 کار با ماتریس (آرایه) 48 تعریف آرایه:
A=[1 2 3] تعریف آرایه 3*1 (بردار) X=[1; 2; 3] تعریف آرایه1*3 (بردار) Y=[1 2 3;4 5 6] تعریف آرایه 3*2 برای دسترسی به یک عنصر خاص از اندیس استفاده می کنیم. در MATLAB اندیس از 1 شروع می شود. A(1,1) یا A(1) A(1,2) یا A(2) A(1,3) یا A(3) X(1,1) یا X(1) X(2,1) یا X(2) X(3,1) یا X(3) Y( 1,1) Y(2,2) Y(2,3) Y(:,1) تمام عناصر ستون 1 را بر می گرداند. یعنی [1;4] Y(1,1:2) عناصر Y(1,1) و Y(1,2) را برمی گرداند. Y(1:2,1:2) عناصر Y(1,1) ، Y(2,1) ، Y(1,2) و Y(2,2) را بر می گرداند. 48

49 الحاق عنصر (عناصر) به آرایه
الحاق عناصر به آرایه X=[1 2 3]; Y=[X -5]; Y=[ ] می شود. می توان نوشت: X=[X -5] در این صورت X=[ ] می شود. اگر X=[1 2 3] و بنویسیم Y=[X; ] در این صورت : اگر X=[1 2 3] و بنویسیم Y=[X;-5] خطا رخ می دهد. باید حتما یک سطر کامل مشخص کنیم. 49

50 دو تابع برای الحاق عناصر
Horzcat: اتصال عناصر به صورت افقی (ستونی) Horzcat([1 2 3],[4 5 6])=C C=[ ] Vertcat: اتصال عناصر به صورت عمودی(سطری) C=vertcat([1 2 3],[4 5 6]) معادل با C=[1 2 3;4 5 6] است. 50

51 محاسبه مجموع و میانگین آرایه
تابع sum برای محاسبه مجموع عناصر آرایه به کار می رود. اگر یک بردار داشته باشیم مثلا x=[1 2 3] ، sum(x) مجموع عناصر آن را بر می گرداند. اگر بردار نباشد مثلا x=[1 2 3;4 5 6] ، sum(x) مجموع عناصر هر ستون را به طور مجزا حساب می کند و [5 7 9] را بر می گرداند. با نوشتن به صورت sum(sum(x)) مجموع همه عناصر حساب می شود. Sum(x,1) معادل sum(x) عمل می کند. Sum(x,2) مجموع هر سطر را به طور مجزا محاسبه می کند. در مثال بالا [6;15] برای آرایه های بیش از 2 بعد می توانیم sum(x,3) ، sum(x,4) و.... هم داشته باشیم. تابع mean برای محاسبه میانگین آرایه به کار می رود. طرز نوشتن و کار با ان دقیقا مشابه sum است . فقط در اینجا به جای مجموع میانگین محاسبه می شود. 51

52 محاسبه ابعاد و طول تابع size برای محاسبه ابعاد به کار می رود:
اگر X آرایه دو بعدی 4*3 باشد Size(X) تعداد سطر و ستون آن را بر می گرداند یعنی 3 و 4 برای آرایه های با ابعاد بالاتر نیز به همین ترتیب انجام می شود. تابع length: برای بردار طول را برمی گرداند و برای آرایه ها بزرگترین بعد را می دهد. مثلا اگر X ، 5*7*9 باشد 9 را برمی گرداند. 52

53 جستجوی مقدار در آرایه تابع find برای جستجوی عناصر در آرایه به کار می رود. X=[1 2 -3; ] [a b]=find(X==-3) در این صورت a=1 (شماره سطر عنصر 3-) و b=3 (شماره ستون) می شود. X=[1 2 -3;4 -3 0] در این صورت a=[2;1] و b=[2;3] می شود. 53

54 چند تابع مفید دیگر rand: تولید نمونه ها تصادفی بین [0,1] با توزیع یکنواخت rand(2,3) یک آرایه 3*2 از مقادیر تصادفی تولید می کند. rand(4,5,10) یک آرایه 10*5*4 از مقادیر تصادفی تولید می کند. randn : تولید نمونه های تصادفی از توزیع نرمال استاندارد طرز استفاده دقیقا مشابه rand است. توابع ones و zeros: در جلسه قبل توضیح داده شد. 54

55 رشته (String) 55 رشته مجموعه ای از کاراکترها می باشد.
رشته با علامت ‘ ‘ نشان داده می شود. S='Ali' در واقع S به صورت یک آرایه کاراکتری 3*1 در نظر گرفته می شود. S=[S ' hassan'] S=‘Ali hassan’ می شود. دو تابع num2str و str2num به ترتیب برای تبدیل عدد به رشته و بالعکس به کار می رود. num2str(23) D='123' Str2num(D) 55

56 ساختار(Structure) 56 مثال از تعریف structure: St.f1=[1 2 3]
St.f3=‘Ali’ با این سه دستور یک structure به نام STبا سه field f1، f2 و تعریف کرده ایم. اگر بنویسیم St.f1 آرایه [1 2 3] برگشت داده می شود. اگر بنویسیم St.f1(2) عنصر دوم St.f1 برگشت داده می شود. 56

57 آرایه سلولی (Cell array)
یک Cell array به نام A را می توان به صورت زیر تعریف کرد: A{1}=[1 2 3]; A{2}=[3 4;5 6] A{3}=‘Ali’ در این صورت یک Cell array با اندازه 3 ایجاد کرده ایم. اگر بنویسیم A{1} آرایه [1 2 3] برگشت داده می شود. اگر بنویسیم A{2}(1,2) عدد 4 برگشت داده می شود. 57

58 توضیحات برنامه علامت % %this is comment
امکان کامنت چندخطی (بلوکی) در نسخه 7 %{ %} 58

59 دستور format تعیین نحوه نمایش اعداد 59
format short نمایش تا پنج رقم اعشار . format long نمایش تا 15 رقم اعشار format hex نمایش مبنای 16 عدد اگر از دستور format استفاده شد تا زمانی که شیوه نمایش را عوض نشود مطلب از شیوه فعلی برای نمایش استفاده می کند 59

60 60

61 ذخیره وبازیابی متغیرهای workspase
دستور save اگر بدون پارامتر باشد تمامی متغیرها را در یک فایل باینری به نام matlab.mat ذخیره می کند save filename x,y,zذخیره کردن متغیرهای خاص: دستور load اگر بدون پارامتر باشد تمامی متغیرهایی که در فایل باینری matlab.mat ذخیره شده اند را لود می کند 61

62 محاسبه زمان اجرای دستورات
اگر قبل از مجموعه ای از دستورات جمله tic و بعد از نوشتن آنها جمله toc را بنویسم علاوه بر اجرای دستورات زمان اجرای کلی آنها هم نشان داده می شود. اگر قبل از مجموعه ای از دستورات جمله profile on و بعد از آنها جمله profile report قرار دهیم زمان اجرای هر دستور در یک سری فایلهای html نشان داده خواهد شد. به علاوه برای توابع زمان اجرای دستورات داخلی آنها هم نشان داده می شود. 62

63 profile on syms x; solve(x^2-1); profile report 63

64 دستورات مربوط به فایلهای صوتی
[Y,FS,NBITS]=waveread(file_name) خواندن فایلهای wav Y : دامنه نمونه ها که در بازه [-1,+1] قرار دارند FS: فرکانس نمونه برداری برحسب هرتز NBITS: تعداد بیتهای هر نمونه 64

65 دستورات مربوط به فایلهای صوتی
wavwrite(Y,FS,NBITS,file_name) ذخیره نمونه ها در یک فایل wavplay(Y,FS) پخش فایل صوتی wavrecord(N,FS) رکورد کردن N نمونه با نرخ FS از میکروفن کامپیوتر 65

66 استفاده از دستور help help دستور مورد نظر
اگر چند حرف اول دستور را بنویسید و کلیه tab را بزنید، لیستی از دستورات که با این حروف شروع می شوند نمایش داده می شود 66


Download ppt "بسم الله الرّحمن الرّحيم"

Similar presentations


Ads by Google