1 / 83

جزوه آموزشی مطلب ( MATLAB )

جزوه آموزشی مطلب ( MATLAB ). محمدرضا مسلمی پاییز 1391. Matlab. High Level Languages such as C, Pascal etc. Assembly. What is MATLAB? MATLAB ( MATrix LABoratory ) یک زبان برنامه نویسی سطح بالا برای انجام برنامه های محاسباتی است.

sondra
Download Presentation

جزوه آموزشی مطلب ( MATLAB )

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. جزوه آموزشی مطلب (MATLAB) محمدرضا مسلمی پاییز1391

  2. Matlab High Level Languages such as C, Pascal etc. Assembly • What is MATLAB? • MATLAB (MATrixLABoratory) • یک زبان برنامه نویسی سطح بالا برای انجام برنامه های محاسباتی است. • دارای محیطی است که انجام محاسبات، برنامه نویسی و مشاهده نتایج آنها را به راحتیمی توان پیاده سازی نمود. • از مهمترین کاربردهای آن می توان به موارد زیر اشاره نمود. • ریاضیات و محاسبات عددی • پیاده سازی آلگوهای مختلف • مدل سازی، شبیه سازی و نمونه سازی • تحلیل داده های آماری • ترسیم نمودارهای مختلف آماری و مهندسی • پردازش تصویر • رباتیک

  3. مطلب برنامه ای ترجمه شده (compile) با مزایا و معایب خاص خودش است.اگرچه مترجم آن وجود دارد اما از نظر سرعت تعریفی ندارد. • مزایا • سرعت بالای نمونه سازی • یادگیری اسان به دلیل راهنمای بسیار کامل • کتابخانه کامل برای توابع پردازش تصویر • توانایی نمایش عالی • گستردگی استفاده در مراکز آموزشی و صنعتی • معایب • سرعت کم برای برخی از انواع پردازش ها • مناسب نبودن برای پیاده سازی سیستم های مقیاس بزرگ

  4. Matlab Series of Matlab commands m-files Command Line mat-files functions Command execution like DOS command window Data storage/ loading Input Output capability برخی از ویژگی های محیط مطلب

  5. مطلب یک برنامه برای انجام محاسبات عددی است. • در اوايل دهه 1970 توسط Cleve Moler, به وجود آمد. در اوايل دهه 1980 با زبان C بازنويسي شد. • در 1984 شركت Mathwork تأسيس شد. • نخستین بار این برنامه برای حل مسایل جبر خطی با استفاده از ماتریس طراحی شد. • به همین دلیل نام آن مخفف آزمایشگاه ماتریس (MATrixLABoratory) است. • امروزه این برنامه بسیار گسترش یافته و شامل توابع از پیش ساخته بسیاری برای حل مسایل مختلف نظیر تحلیل داده ها، پردازش سیگنال، بهینه سازی و انواع دیگر محاسبات علمی است. • این برنامه همچنین شامل توابعی برای گرافیک دو و سه بعدی می باشد. همه چیز در مطلب به صورت یک ماتریس است. • محیط مطلب شبیه سیستم عامل لینوکس مبتنی بر دستور است. یک پرومپت روی صفحه ظاهر شده و دستور مورد نظر جلوی آن وارد می شود. • وقتی که کلید <Enter> زده می شود دستور وارد شده اجرا شده و پرومپت دیگری ظاهر می شود. • اگر جمله ای با سمیکالون (;) تمام شود هیچ نتیجه ای نمایش داده نمی شود. بدون آن قبل از پرومپت بعدی حاصل دستور نمایش داده می شود.

  6. هنگامی که برای اولین بار این برنامه اجرا می شود پنجره زیر ظاهر می شود. • Current Directory • View folders and m-files • Workspace • View program variables • Double click on a variable to see it in the Array Editor • Command Window • type commands • Command History • view past commands • save a whole session

  7. Command window: Type your instructions here and press ENTER to execute them.

  8. Example: Declare a column matrix with values 1,2 and 3.

  9. Command history: a list of instructions executed by MATLAB is shown here.

  10. Workspace: shows a list of variables created by MATLAB. As you can see, the value of ‘aaa’ is shown.

  11. Another way to create a variable Is to press this button.

  12. MATLAB will prompt you to enter the variable name.

  13. As you can see, the variable name has been changed to bbb.

  14. 2) Or by double clicking on bbb. To assign a value to bbb, you can do it in two ways: 1) Using the command window.

  15. When you click on bbb, the variable editor window appears. You can type in new values into bbb by filling in the cells.

  16. An example is shown here. Try and do it yourself.

  17. To display variables at the console, you can type the variable name, or you can type disp(variable_name).

  18. To clear all variables from memory and close all figures, use the clear, close all command.

  19. As you can see, all workspace variables are deleted when you execute this command.

  20. To clear the command window, use the clc (clear console) command.

  21. Example: search for function mean

  22. To create an m-file, 1) type edit at the command window, or 2) Press this button.

  23. The previous command will display the editor window. The editor creates an m-file that can be used to write your MATLAB programs.

  24. To execute a program, press the RUN button.

  25. This window will appear. Press the Change Directory button.

  26. int a; double b; float c; متغیرها • در مطلب نیازی به پیش تعریف متغیرها و تعیین نوع آنها در ابتدای برنامه نیست. • برای تعریف یک متغیر تنها کافی است که کمیت مورد نظر را به آن منسوب کنیم. • پس از این انتساب، هر یک از متغیر های تعریف شده یک ماتریس 1*1 می باشند. • مطلب بین حروف بزرگ و کوچک فرق قائل است. >> X Undefined function or variable 'X'. مثال >> x = 5; >> x1 = 2; >> y = ‘hello’;

  27. بردارها و ماتریس ها • برای تعریف یک بردار سطری مانند x=[1 2 5 1] به یکی از روش های زیر عمل می کنیم. >> x = [1 2 5 1]; >> x = [1,2,5,1] x = 1 2 5 1 • برای تعریف یک بردار ستونی به یکی از روش های زیر عمل می کنیم. >> x1 = [1;2;5;1]; >> x1 = [1 2 5 1]’; • برای محاسبه ترانهاده یک ماتریس به روش زیر عمل می کنیم. • y = transpose(x1); • با توجه به آن که بردار فوق مختلط نیست می توان عمل فوق را با دستور زیر انجام داد. • y = x1’ y = 1 2 5 1

  28. دقت کنید: ‘means complex conjugate of transposed • مثال >> z=[1+3i , 2-4i ; 2 , -5+10i]; >> z' ans = 1.0000 - 3.0000i 2.0000 2.0000 + 4.0000i -5.0000 -10.0000i >> transpose(z) ans = 1.0000 + 3.0000i 2.0000 2.0000 - 4.0000i -5.0000 +10.0000i اگر از دستور format compact استفاده کنیم فاصله بین خطوط در نمایش پاسخ ها حذف می شود.

  29. تعریف بردارها و ماتریس های طولانی • در صورتی که بخواهیم یک بردار طولانی دارای یک ریتم و آهنگ خاص تعریف کنیم می توانیم از روش زیر استفاده کنیم. >> t = 1:10 t = 1 2 3 4 5 6 7 8 9 10 >> k =2:-0.5:-1 k = 2.0000 1.5000 1.0000 0.5000 0 -0.5000 -1.0000 >> phi = -pi:pi/6:pi phi = -3.1416 -2.6180 -2.0944 -1.5708 -1.0472 -0.5236 0 0.5236 1.0472 1.5708 2.0944 2.6180 3.1416

  30. روش دیگر استفاده از دستور linspace(a,b) یا linspace(a,b,n) می باشد. این دستور برای تولید بردارهایی با فواصل خطی استفاده می شود. مثلا: sai = linspace(-pi,pi,11) sai = -3.1416 -2.5133 -1.8850 -1.2566 -0.6283 0 0.6283 1.2566 1.8850 2.5133 3.1416 A = linspace(1,36,12); در صورتی که n را مشخص نکنیم به صورت اتوماتیک 100 در نظر گرفته می شود. >> B = [1:4; 5:8] B = 1 2 3 4 5 6 7 8

  31. برای مشاهده نام متغیرهای ایجاد شده از دستور whoاستفاده می کنیم. >> who Your variables are: B ansk phi sai t x z برای دیدن لیست متغیرها به همراه سایز و نوع آنها از دستور whosاستفاده می کنیم. >> whos Name Size Bytes Class Attributes B 2x4 64 double ans 1x100 800 double k 1x7 56 double phi 1x13 104 double sai 1x11 88 double t 1x10 80 double x 1x5 10 char z 2x2 64 double complex

  32. تولید بردارها با استفاده از توابع از پیش تعریف شده مطلب تولید یک ماتریس صفر به سایز m*n: zeros(m,n) >> zeros(2,3) ans = 0 0 0 0 0 0 تولید ماتریس یک به سایز m*n: ones(m,n) >> ones(1,3) ans = 1 1 1 تولید یک ماتریس تصادفی با توزیع یکنواخت روی بازه (0,1): rand(m,n) >> rand(1,4) ans = 0.8147 0.9058 0.1270 0.9134

  33. تولید یک ماتریس مربعی یکه به سایز n*n: eye(n) >> X = eye(3) X = 1 0 0 0 1 0 0 0 1

  34. برخی از توابعی که روی آرایه ها عمل می کنند: تمام مولفه های بردار x را با هم جمع می کند: sum(x) >> A=[1 2 3]; >> sum(A) ans = 6 >> B B = 1 2 3 4 5 6 7 8 >> sum(B) ans = 6 8 10 12 >> sum(sum(B)) ans = 36

  35. تمام مولفه های بردار x را از اول تا آن مولفه با هم جمع می کند: cumsum(x) >> cumsum(1:5) ans = 1 3 6 10 15 تمام مولفه های بردار x را در هم ضرب می کند: prod(x) >> A A = 1 2 3 >> prod(A) ans = 6 >> B B = 1 2 3 4 5 6 7 8 >> prod(B) ans = 5 12 21 32

  36. بزرگترین مولفه بردار x را پیدا می کند: max(x) • >> max(A) • ans = • 3 • در ماتریسها با این دستور بزرگترین مولفه هر ستون پیدا می شود. • >> max(B) • ans = • 5 6 7 8 • کوچکترین مولفه بردار x را پیدا می کند: min(x) مولفه های x را مرتب می کند: sort(x) >> C=[2,-2,1,0,5,1,7]; >> sort(C) ans = -2 0 1 1 2 5 7

  37. مقدار متوسط یا میانگین x را پیدا می کند: mean(x) • >> mean(A) • ans = • 2 • ماتریس تنک: ماتریس است که تنها تعداد کمی از درایه های آن مقدار دارد و بقیه عناصر آن صفر است. • برای صرفه جویی در میزان حافظه و افزایش سرعت از دستورات زیر استفاده می کنیم: • Sparse(m,n) : یک ماتریس تنک به سایز مشخص شده تولید می کند. تمام درایه های این ماتریس صفر است. • >> zeros(2,3) • ans = • 0 0 0 • 0 0 0 • >> sparse(2,3) • ans = • All zero sparse: 2-by-3

  38. Sparse(A) : قالب تعریف ماتریس A را به حالت تنک تبدیل می کند. • >> II=eye(3) • II = • 1 0 0 • 0 1 0 • 0 0 1 >> sparse(II) ans = (1,1) 1 (2,2) 1 (3,3) 1 • Speye(n) : یک ماتریس یکه مربعی n*n را به فرم تنک تبدیل می کند. • >> speye(3) • ans = • (1,1) 1 • (2,2) 1 • (3,3) 1

  39. spones(S): به جای تمام عناصر ماتریس S عدد یک می گذارد. برای نمایش یک ماتریس تنک به فرم معمولی از دستور full استفاده می کنیم. >> full(II) ans = 1 0 0 0 1 0 0 0 1

  40. نحوه نامگذاری (ایندکس) درایه های ماتریس • اندیس های یک ماتریس در مطلب از 1 شروع می شوند. (نه مانند C از صفر) • اندیس ماتریس ها در مطلب اعداد مثبت می باشند. A(-2), A(0) Error: ??? Subscript indices must either be real positive integers or logicals. A(4,2) Error: ??? Index exceeds matrix dimensions.

  41. نحوه اتصال ماتریس ها • 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. برای این منظور می توان از دستورهای cat یا horzcatیا vertcat استفاده کرد.

  42. تعیین تعداد سطر و ستون های یک ماتریس size(A) >> B B = 1 2 3 4 5 6 7 8 >> size(B) ans = 2 4 • تعیین طول یک بردار length(A) >> A A = 1 2 3 >> length(A) ans = 3

  43. چرخش درایه های یک ماتریس از بالا به پایین flipud(A) >> A=[1 2;3 4;-1 0] A = 1 2 3 4 -1 0 >> B=flipud(A) B = -1 0 3 4 1 2 • چرخش درایه های یک ماتریس از چپ به راست fliplr(A) >> A=[1 2;3 4;-1 0] A = 1 2 3 4 -1 0 >> C=fliplr(A) C = 2 1 4 3 0 -1

  44. عملگرهای ماتریسی + جمع - تفریق * ضرب / تقسیم ^ توان

  45. اعمال عملگرها به صورت عضو به عضو .* ضرب درایه در درایه ./ تقسیم هر درایه بر درایه متناظر .^ به توان رساندن نظیر به نظیر A = [1 2 3; 5 1 4;3 2 1] A = 1 2 3 5 1 4 3 2 -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 y = A(3 ,:) y= 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.

  46. برخی از توابع ماتریسی عبارتند از: دترمینان ماتریس مربعی det(a) محاسبه وارون ماتریس inv(a) مقادیر و بردار ویژه ماتریس مربعی eig(a) تولید یک بردار از درایه های روی قطر اصلی یک ماتریس مربعی diag(a) تولید ماتریس مربعی قطری diag(v)

  47. کاربردهای دستور format این دستور فقط نحوه نمایش داده ها در صفحه نمایش را مشخص می کند و تاثیری روی دقت نگه داری آنها در حافظه ندارد. >> v=exp(-10*(1:5)) اگرformat short یا همان formatانتخاب شود (اعداد بعد از نقطه اعشار: 4) v = 1.0e-04 * 0.4540 0.0000 0.0000 0.0000 0.0000 اگر eformat shortانتخاب شود v = 4.5400e-05 2.0612e-09 9.3576e-14 4.2484e-18 1.9287e-22 اگرformat long انتخاب شود (اعداد بعد از نقطه اعشار: 14) v = 1.0e-04 * 0.453999297624848 0.000020611536224 0.000000000935762 0.000000000000042 0.000000000000000

  48. اگرformat long eانتخاب شود v = 4.539992976248485e-05 2.061153622438558e-09 9.357622968840175e-14 4.248354255291589e-18 1.928749847963918e-22 اگرformat rationalانتخاب شود ، نمایش به صورت کسر متعارفی >> eps <Enter> ans= 1/4503599627370496

  49. عملیات منطقی در مطلب علامت های زیر برای مقایسه اعداد و حروف به کار می روند. < > <= >= == ~= حاصل همه عملیات صفر (نادرست) و یک (درست)است. >> 3<5 ans = 1 >> [1 2]>=[0,3] ans = 1 0 >> x=[1 2 -1 0 -5 4 -1.5 3 2.5 -.5]; >> x(x>0)مولفه های مثبت بردار را نشان می دهد. ans = 1.0000 2.0000 4.0000 3.0000 2.5000

  50. x((x>=0)&(x<=3)) ans = 1.0000 2.0000 0 3.0000 2.5000 >> length(x((x>=0)&(x<=3))) ans = 5 عملگرهای منطقی به صورت زیر مشخص می شوند. & | xor ~ >> m=[1 2 4; -2 3 -1]; >> ~(m>0) ans = 0 0 0 1 0 1 >> (m>0)|(m<=2) ans = 1 1 1 1 1 1 >> (m>0)&(m<=2) ans = 1 1 0 0 0 0

More Related