matlab_part1.ppt

‫الرحمن ّ‬
‫بسم هللا ّ‬
‫الرحيم‬
‫آموزش نرم افزار‪MATLAB‬‬
‫مهر‪1385‬‬
‫‪‬‬
‫‪ MATLAB‬نرم افزاری برای انجام کارهای ریاض ی‪ ،‬آماری‪ ،‬مهندس ی و‪....‬می باشد‪.‬‬
‫‪(MATLAB=MATrix Laboratory‬آزمایشگاه ماتریس ی)‬
‫‪‬‬
‫در اوايل دهه ‪ 1970‬توسط ‪ Cleve Moler,‬به وجود آمد‪.‬‬
‫در اوايل دهه ‪ 1980‬با زبان ‪ C‬بازنويس ي شد‪.‬‬
‫در ‪ 1984‬شركت ‪ Mathwork‬تأسيس شد‪.‬‬
‫جديدترين نسخه آن ‪ MATLAB 7.3‬است‪.‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪ MATLAB‬درنقش یک ماشین حساب‬
‫‪‬‬
‫ساده ترین کارهایی که با ‪ MATLAB‬می توان انجام داد همان اعمالی‬
‫است که یک ماشین حساب معمولی انجام می دهد‪ .‬جمع‪ ،‬تفریق ضرب‬
‫و تقسیم‬
‫‪ MATLAB‬درنقش یک ماشین حساب (ادامه)‬
‫‪‬‬
‫بعد ازاجرای نرم افزارچند ‪(window‬پنجره) ظاهرمی شود‪ .‬یکی از‬
‫این پنجره ها ‪ command window‬نام دارد‪ .‬دراین محیط‬
‫دستورات ‪ MATLAB‬نوشته و اجرا می شوند‪.‬‬
‫انجام کارهای ساده محاسباتی‬
‫آشنایی با بعض ی قابلیت های ‪MATLAB‬‬
‫‪‬‬
‫تعریف و استفاده از متغیرها‬
‫محاسبات ماتریس ی‬
‫‪‬‬
‫نوشتن ‪ Script( M-file‬نویس ی)‬
‫دستورات حلقه و شرط‬
‫دستورات ورودی‪-‬خروجی‬
‫ساخت و احضار توابع‬
‫رسم نمودار‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫استفاده ازمتغیرها‬
‫‪‬‬
‫با نوشتن دستور ‪ x=23‬متغیری به نام ‪ x‬در حافظه ایجاد می شود و مقدار ‪ 23‬در‬
‫آن ریخته می شود‪.‬‬
‫اگر دستور به صورت ‪ x=23‬نوشته شود ‪ MATLAB‬مقدار آن را مجددا نمایش‬
‫می دهد و اگر به صورت ;‪ x=23‬نوشته شود ‪ MATLAB‬آن مقدار را نشان نمی‬
‫دهد‪.‬‬
‫‪‬‬
‫در ‪MATLAB‬نیاز به تعریف متغیر وجود ندارد‪.‬‬
‫همه متغیرها از نوع ‪ 8( double‬بایت) فرض می شود‪.‬‬
‫‪ MATLAB‬زبانی حساس به حالت حروف (‪ )Case sensitive‬است‪.‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫با استفاده ازدستور ‪ whos‬می توان فهمید چه متغیرهایی تاکنون‬
‫تعریف شده است‪.‬‬
‫با استفاده ازدستور ‪ clear‬می توان یک متغیر را ازحافظه پاک کرد‪.‬‬
‫متغیرها تا زمانی که ‪ clear‬نشوند درحافظه باقی می مانند‪.‬‬
‫دستور ‪ clc‬برای پاک کردن پنجره ‪ command‬به کار می رود‪.‬‬
‫متغیرهای توکار‬
‫‪ : pi‬عدد ‪‬‬
‫‪ :Realmax‬بزرگترین عدد حقیقی قابل نمایش‬
‫‪ : Realmin‬کوچکترین عدد حقیقی قابل نمایش‬
‫‪ :Inf‬بی نهایت‬
‫تعریف ماتریس و محاسبات ماتریس ی‬
‫‪‬‬
‫نحوه تعریف ماتریس‬
‫‪4‬‬
‫‪‬‬
‫‪6‬‬
‫‪9‬‬
‫‪3‬‬
‫‪3‬‬
‫‪ 5‬‬
‫‪‬‬
‫برای تعریف ماتریس فوق در ‪ MATLAB‬به صورت زیر عمل می کنیم‪:‬‬
‫]‪AA=[3 -9 4; -5 3 6‬‬
‫]‪AA=[3 9 4‬‬
‫محاسبات ماتریس ی‬
‫‪‬‬
‫جمع و تفریق با ‪ +‬و ‪-‬‬
‫ضرب دو ماتریس (با ابعاد ‪ m*n‬و ‪ : )n*p‬با *‬
‫ترانهاده ماتریس‪ :‬با '‬
‫‪‬‬
‫نکته اگر بخواهیم عناصر دو ماتریس را نظیر به نظیر در هم ضرب کنیم به جای * از‬
‫*‪ .‬استفاده می کنیم‪.‬‬
‫‪ ./‬برای تقسیم نظیر به نظیر استفاده می شود‪.‬‬
‫^ براي به توان رساندن ماتريس به كار مي رود‪ .‬مثال ‪ A*A ، A^2‬را محاسبه می کند‪.‬‬
‫^‪ : .‬به توان رسانی نظیر به نظیر ‪A.^B‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫مثال‬
‫;]‪A=[1 2 3;4 5 6;3 4 7‬‬
‫;]‪B=[2 3; 1 1;4 5‬‬
‫در اینجا یک ماتریس ‪ 3*3‬به نام ‪ A‬و یک ماتریس ‪ 3*2‬به نام ‪ B‬تعریف کرده ایم‪.‬‬
‫این دستور ضرب ماتریس ی ‪ A‬در ‪ B‬را انجام می دهد و حاصل که ماتریس ی ‪ 3*2‬است در ‪ C‬قرار می گیرد‪.‬‬
‫این دستور اشتباه است چون نمی توان یک ماتریس ‪ 3*2‬را در ماتریس ‪ 3*3‬ضرب کرد‪.‬‬
‫‪C=A*B‬‬
‫‪D=B*A‬‬
‫‪E=A^2‬‬
‫ماتریس ‪ A 3*3‬را در خودش ضرب می کند‪ .‬حاصل ماتریس ‪ E 3*3‬است‪.‬‬
‫خطا اعالم می شود‪ .‬چون ‪ B^2‬یعنی ‪ . B*B‬اما نمی توان یک ماتریس ‪ 3*2‬را در ‪ 3*2‬ضرب کرد‪.‬‬
‫این دستور درست است و معادل ‪ B.*B‬یعنی ضرب نظیر به نظیر عناصر ‪ B‬است‪.‬‬
‫‪F=B^2‬‬
‫‪G=B.^2‬‬
‫چند دستور پرکاربرد درایجاد ماتریس ها و بردارها‬
‫;] [=‪A‬‬
‫یک ماتریس تهی ایجاد می کند‬
‫‪x=0:0.1:1‬‬
‫یک بردار ایجاد می کند که عنصر اول آن ‪ 0‬است‪ .‬عناصر بعدی با اضافه کردن ‪( 0.1‬گام‬
‫افزایش) به دست می آیند تا زمانی که به ‪ 1‬برسیم‪.‬یعنی‪:‬‬
‫]‪x=[0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1‬‬
‫‪x=0:4‬‬
‫اگرمانند این مثال‪ ،‬گام افزایش ذکرنشود ‪ 1‬درنظرگرفته می شود‪:‬‬
‫;]‪x=[0 1 2 3 3‬‬
‫‪ script‬نویس ی –‪ m‬فایلها‬
‫‪‬‬
‫به جای نوشتن دستورات در پنجره ‪ command‬و اجرا شدن به صورت تک‬
‫تک‪،‬می توان مجموعه ای از دستورات را در یک فایل قرار داد‪MATLAB .‬‬
‫دستورات موجود در این فایل را اجرا می کند‪.‬‬
‫به این فایل ‪ script‬یا ‪ m file‬می گوییم‪.‬‬
‫‪ ‬نحوه نوشتن ‪ :m file‬مجموعه دستورات مورد نظر را در یک ویرایشگر می نویسیم‪.‬‬
‫فایل را با پسوند ‪ .m‬ذخیره می کنیم‪.‬‬
‫‪ MATLAB ‬هم خود یک ویرایشگر برای انجام این کار دارد که با انتخاب‬
‫‪ file/new/m-file‬اجرا می شود‪.‬‬
‫‪‬‬
‫بعد از نوشتن ‪ m file‬با انتخاب گزینه ‪ ،debug/run‬برنامه اجرا می‬
‫شود‪.‬‬
‫دستورات حلقه و شرط‬
‫‪ ‬در ‪ MATLAB‬مشابه زبان های برنامه نویس ی دستورات حلقه و شرط‬
‫وجود دارد‪.‬‬
‫دستور ‪for‬‬
‫‪for x=1:0.1:2‬‬
‫>یک یا چند دستور<‬
‫‪end‬‬
‫‪ x‬از ‪ 1‬تا ‪ 2‬با گام ‪ 0.1‬تغییر می کند‪.‬‬
‫‪‬‬
‫دستور ‪while‬‬
‫‪‬‬
‫دستور ‪if‬‬
‫شرط ‪while‬‬
‫>دستور یا دستورات<‬
‫‪end‬‬
‫شرط ‪if‬‬
‫>دستور یا دستورات<‬
‫‪end‬‬
‫‪‬‬
‫دستور ‪if-else‬‬
‫شرط ‪if‬‬
‫>دستور یا دستورات<‬
‫‪else‬‬
‫>دستور یا دستورات<‬
‫‪end‬‬
‫دستور ‪switch‬‬
‫متغیر ‪switch‬‬
‫مقدار‪case 1‬‬
‫>دستور یا دستورات<‬
‫مقدار‪case 2‬‬
‫>دستور یا دستورات<‬
‫‪otherwise‬‬
‫>دستور یا دستورات<‬
‫‪end‬‬
‫اگر هیچ یک از ‪ case‬ها برقرار نباشند بخش ‪ otherwise‬اجرا می شود‪ .‬نوشتن این بخش‬
‫اختیاری است‪.‬‬
‫نکته‪ :‬عملگرهای مقایسه ای در ‪:MATLAB‬‬
‫(نامساوی) =~‬
‫مثال‬
‫=> < >‬
‫=<‬
‫(مساوی) ==‬
‫(نقیض)~ (یا منطقی) | )و منطقی( &‬
‫;‪x=4‬‬
‫;‪y=5‬‬
‫)‪if (x==4 & y==2‬‬
‫;‪z=1‬‬
‫‪else‬‬
‫;‪z=4‬‬
‫‪end‬‬
‫‪ z‬برابر ‪ 4‬خواهد شد‪.‬‬
‫دستورات ورودی و خروجی در‪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‬اجرا کرد (صفحه بعد)‬
‫نوشتن تابع در‪MATLAB‬‬
‫‪‬‬
‫در ‪ MATLAB‬مشابه زبان های برنامه نویس ی می توان برای برنامه تابع‬
‫نوشت ‪.‬‬
‫نوشتن تابع توسط کاربر‬
‫‪ ‬یک ‪ m file‬به صورت زیر ایجاد می کنیم (کلماتی که با رنگ قرمز مشخص شده اند باید عینا نوشته شوند)‪:‬‬
‫)‪function y=afun(a,b‬‬
‫>یک سری دستورات <‬
‫‪ afun‬اسم تابع است‪.‬‬
‫‪ y‬برگشتی تابع است‪.‬‬
‫‪ a‬و ‪ b‬ورودی تابع‪.‬‬
‫‪ ‬بعد از نوشتن ‪ m file‬آن را با نام تابع (در اینجا ‪ )afun‬و پسوند ‪ .m‬ذخیره می کنیم‪.‬‬
‫‪ ‬سپس می توان در پنجره ‪ ، command‬تابع را اجرا کرد‪ .‬مثال اگر بنویسیم )‪ 3 ، afunc(3,4‬به جای ‪ a‬و ‪4‬‬
‫به جای ‪ b‬قرار می گیرد‪ .‬تابع اجرا می شود و مقدار ‪ y‬به دست آمده نشان داده می شود‪.‬‬
‫‪ ‬مي توان تابعي با چند خروجي داشت‬
‫)‪function [y,t,x]=afunc(m‬‬
‫نكات درمورد نوشتن تابع‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫نام تابع بايد هم نام با ‪ m file‬باشد‪.‬‬
‫مي توان در يك ‪ m file‬چندين تابع داشت‪ .‬اولین تابع در آن‪ ،‬تابع اصلي خوانده مي‬
‫شود و بقيه زيرتابع گفته مي شوند‪ .‬اسم ‪ m file‬بايد هم نام با اين تابع اصلي باشد‪.‬‬
‫متغیرهای موجود در یک تابع محلی هستند و توسط توابع دیگر قابل دسترس ی نمی‬
‫باشند‪.‬‬
‫در صورت وجود چند تابع در یک ‪ m-file‬تنها احضار تابع اصلی در پنجره‬
‫‪ command‬امکان پذیر است‪ .‬البته توابع داخل ‪ m-file‬می توانند یکدیگر را‬
‫احضار کنند‪.‬‬
‫روش ی دیگربرای احضارتابع‬
‫‪‬‬
‫می توان در یک تابع تابعی دیگر را که در یک ‪ m-file‬دیگر است احضار‬
‫کرد‪ .‬مشروط بر اینکه این ‪ m-file‬در همان دایرکتوری تابع قرار داشته‬
‫باشد‪.‬‬
‫توابع کتابخانه ای‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫توابع مثلثاتی‪atan ،acos ،asin ،tan ،cos ،sin :‬‬
‫‪( exp‬نمایی)‪( log ،‬لگاریتم طبیعی)‪( log10 ،‬لگاریتم در مبنای ‪.)10‬‬
‫‪_ Factorial‬محاسبه فاکتوریل)‬
‫‪( floor‬جزء صحیح)‪( fix ،‬قسمت صحیح)‪( ceil ،‬سقف)‪sqrt ،‬‬
‫(جذر) ‪( abs ،‬قدرمطلق)‪.‬‬
‫‪( inv‬وارون ماتریس)‪(eye ،‬ایجاد ماتریس واحد)‪( zeros ،‬ایجاد‬
‫ماتریس حاوی فقط صفر)‪(ones ،‬ایجاد ماتریس ی با عناصر فقط‬
‫یک)‪،‬‬
‫مثال‬
‫]‪x=[0 0.1 0.2 0.5‬‬
‫)‪y=sin(x‬‬
‫‪ ،y‬برداری است حاوی سینوس عناصر ‪(x‬صفحه بعد)‪:‬‬
‫;]‪x=[1 2 ;3 4‬‬
‫)‪y=inv(x‬‬
‫‪ y‬وارون ماتریس ‪ x‬است‪.‬‬
‫)‪y=eye(4‬‬
‫ماتریس واحد با ابعاد ‪ 4*4‬ایجاد می کند‪.‬‬
‫)‪b=zeros(4,3‬‬
‫یک ماتریس ‪ 4*3‬با عناصر صفر ایجاد می کند‪.‬‬
‫)‪x=ones(4,3‬‬
‫ماتریس ‪ 4*3‬با عناصر یک ایجاد می کند‪.‬‬
‫رسم نمودار‬
‫‪ ‬دستورات متعددی برای رسم نمودار در ‪ 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‬را انجام می دهد منتها نقاط را به هم وصل نمی‬
‫کند و نمودار گسسته ایجاد می کند‪.‬‬
‫رسم نمودارهای سه بعدی‬
‫‪ ‬هدف ‪ :‬رسم تابع )‪z=f(x,y‬‬
‫‪ ‬نکته مهم‪ :‬اگر مثال ‪ x=1:3‬و ‪ z ، y=1:2‬به ازای همه )‪ (x,y‬ها مقدار‬
‫باید داشته باشد‪ (3,1) ، (2,1) ،(1,1) .‬و‪....‬‬
‫دستور ‪ meshgrid‬برای ساخت این نقاط به کار می رود‪:‬‬
‫;)‪[x ,y]=meshgrid(1:3,1:2‬‬
‫تابع )‪ 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‬‬
‫نمودار )‪ z= exp(-x^2-y^2‬را رسم می کند‪ .‬این تابع منحنی را به‬
‫صورت یک سری خطوط رسم می کند‪.‬‬
‫دستورات ‪ mesh‬و ‪surf‬‬
‫‪‬‬
‫‪‬‬
‫‪ :mesh‬منحنی را به صورت شبکه شبکه با خطوط رنگارنگ رسم می‬
‫کند‪.‬‬
‫‪ :surf‬منحنی را به صورت شبکه شبکه با خطوط رنگارنگ رسم می کند و‬
‫به عالوه داخل شبکه ها را هم رنگ می کند‪.‬‬