آموزش برنامه نویسی متلب
موضوع:اسکریپت نویسی در برنامه نویسی متلب
جلسه: یازدهم
مدرس : مدرسین جاواپرو
متلب را ساده،آسان و شیرین بنوشید!!!
تدریس خصوصی آنلاین و از راه دور متلب(MATLAB) با مدرس های حرفه ای و با تجربه
این جلسه قصد داریم به آموزش نوشتن فایل های متنی یا اسکریپت ها بپردازیم. تاکنون دستوراتی که فراگرفته ایم را با وارد نمودن در پنجره فرمان اجراکرده ایم. دیدیم که این پنجره امکان اجرا و تست دستورات را برای ما تسهیل نموده است. اما اگر بخواهیم دستورات خود را در قالب یک فایل متنی ابتدا وارد نموده و سپس آن را ذخیره کرده و هر زمان که بدان احتیاج داشتیم فراخوانی کنیم، باید یک script یا فایل متنی ایجاد کنیم. این کار برای صرفهجویی در وقت و یا راحتی برای نوشتن برنامه های بزرگ مناسب-تراست. چرا که پنجره فرمان هرخط فرمان را پس فشردن Enter اجرا میکند، حال اگر از دستورات سنگین یا زیادی استفاده کنیم، مثلا از ماتریس های با ابعاد بالا استفاده کنیم، سرعت برنامه نویسی کاهش مییابد. از طرفی خواهیم دید که این روش برنامه نویسی مزایای دیگری نیز دارد.
برای شروع در پنجره فرمان edit را اجرا میکنیم یا در tab home گزینه نشان شده در زیر را انتخاب کنید:
از طریق کلیدهای ترکیبی ctrl + n هم میتوان اقدام کرد. پنجره ای به نام editor یا ویرایشگر باز میشود. در بالای پنجره نام فایل ما که در بالای پنجره نمایش داده میشود به طور پیش فرض untitled است. سه Tab در بالای پنجره مشاهده میشود، EDITOR، PUBLISH، و VIEW. با گزینه های این تب ها بعدا بیشتر آشناخواهیم شد. در تب EDITOR گزینه save را انتخاب نمایید:
در پنجره باز شده نام فایل را به دلخواه مثلا test تغییر داده و ذخیره کنید. دقت کنید که این فایل با پسوند .m ذخیره میشود. میبینیم که نام فایل در بالای پنجره ویرایشگر از untitled به test تغییر کرد. حال پنجره ویرایشگر را میبندیم. به پنجره اصلی متلب بازخواهیم گشت. به دو طریق میتوان فایل ایجادی را دوباره باز و مشاهده کرد:
1.از طریق open در تب home
2. با نوشتن edit test در پنجره فرمان
حال میخواهیم کدهایی را به فایل متنی خود بیفزاییم. برای مثال فرض کنیم یک ماتریس دلخواه را میخواهیم به یک ماتریس بالامثلثی تبدیل کنیم. ماتریس بالامثلثی ماتریسی است که عناصر پایین قطر اصلی آن صفر هستند. کدهای زیر را در ویرایشگر وارد کنید:
A = [1 2 3; 4 5 6; 7 8 9]; B = [1 1 1; 0 1 1; 0 0 1]; C = A .* B |
ماتریس دلخواه خود را A نامیدیم و سپس یک ماتریس بالا مثلثی با عناصر 1 تعریف کردیم(B). حاصل ضرب نقطه ای یا درایه به درایه آن دو را C نامیدیم. حال میخواهیم این کدها را اجرا کنیم، در تب EDITOR گزینه Run را انتخاب نمایید یا از کلیدهای ترکیبی ctrl+F5 استفاده نمایید. چنانچه از طریق خط فرمان می-خواهید با نوشتن دستوری این فایل را اجرا نمایید نام فایل را در خط فرمان بنویسید:
>>test >>test C = 1 2 3 0 5 6 0 0 9 |
نتیجه در خط فرمان مشاهده میگردد. دستور whos را وارد نمایید:
>>whos A 3x3 72 double |
مشاهده میشود که متغیرهای تعریف شده در برنامه همگی در فضای کاری وجوددارند.
هر زمان که بخواهیم که تغییر کوچکی در برنامه بدهیم کافیست تنها کد قسمت مربوطه را فایل متنی تغییر داده و دوباره برنامه را run کنیم. که این به ما کمک میکند که سرعت نوشتن و اصلاح برنامه تغییر کند. مثلا میخواهیم ماتریس پایین مثلثی ماتریس A را به دست آوریم. بنابراین نیاز به تغییر B داریم:
A = [1 2 3; 4 5 6; 7 8 9]; B = [1 0 0; 1 1 0; 1 1 1]; C = A .* B |
با اجرای مجدد برنامه، کدهای برنامه از ابتدا تا انتها خط به خط اجرا میشوند. در ویرایشگر کنار خطوط برنامه شماره هر خط نیز نمایش داده شده است. ماتریس B در خط چهارم برنامه تعریف میشود. در برنامه فعلی ما فقط خطوط 4 و 5 و 6 را تغییردادیم. برای اجرای مجدد نیاز به اجرای تمام برنامه از ابتدا نیست. چرا که متغیر A در فضای کاری از قبل وجوددارد و نیازی به تغییرندارد. پس اگر بتوان فقط بخشی از کد را که میخواهیم، اجرا شود سرعت اجرای برنامه ها، خصوصا در برنامه های طولانی و حجیم، بالاتر می-رود. متلب چنین قابلیتی را در ویرایشگر قرارداده است. ابتدا خطوط 4 تا 7 انتخاب کنید. سپس از تب EDITOR گزینه Run Section که در زیر نشان داده شده را انتخاب کرده یا کلیدهای ترکیبی ctrl+Enter را فشار دهید:
به پنجره فرمان برگردید و نتیجه را مشاهده نمایید.
گزینه Run and Time را که در زیر نیز میبینید، انتخاب کنید:
پنجره زیر بازمی شود، این پنجره شامل اطلاعاتی در مورد زمان اجرای برنامه است:
در قسمت نشان شده زمان اجرای کل برنامه که 13 میلی ثانیه است را میبینید.این زمان در رایانه های مختلف به خاطر متفاوت بودن مشخصات سخت افزاری و نرم افزاری متفاوت است. اما برای مقایسه زمان اجرای برنامه های مختلف مفید است. در برنامه های پیچیده و حرفه ای که از دستورات زیاد و متغیرهای بزرگ استفاده میشود بهینه سازی کد اهمیت زیادی دارد. بهینه بودن کد فاکتورهای متخلفی دارد که اصلی ترین آن زمان اجرای کدهاست. بنابراین این قابلیت متلب در محاسبه زمان اجرای کد به درک بهتر دستورات و بهینه بودن برنامه کمک میکند. برای مثال میخواهیم تشکیل یک ماتریس پایین مثلثی را به-گونه دیگری حل کنیم خواهیم داشت:
A = [1 2 3; 4 5 6; 7 8 9]; C = A; C(6) = 0; C(8) = 0; C(9) = 0; |
نتیجه برنامه فوق مشابه قبل است اما زمان اجرای آن 2 میلی ثانیه(البته در کامپیوتر بنده) کاهش پیداکرد.
برای مشاهده زمان یک دستور خاص یا بخشی از یک برنامه به کار بردن دستورهای tic و toc به ترتیب قبل و بعد دستور یا بخش موردنظر زمانی را در قالب یک پیغام متنی در پنجره فرمان نمایش میدهد:
tic C(6) = 0; C(8) = 0; C(9) = 0; Toc >>test Elapsed time is 0.000011 seconds. |
- افزودن توضیحات، comment، به برنامه:
استفاده از "%" قبل یک خط برنامه یا دستور باعث میشود که متلب هنگام اجرای برنامه آن خط یا دستور را نادیده بگیرد. از این روش خصوصا زمانی که بخواهیم توضیحات راجع به برنامه و کدهای آن بنویسیم استفاده میشود.
اضافه کردن توضیحات در زمان اجرای کدها، تاثیری ندارد و صرفا به خوانایی کد کمک میکند.(امتحان کنید!)
- دستور input(s) :
گاهی لازم است در برنامه داده هایی را از کاربربرنامه اخذ نماییم. دستور input یک پیغام که در قالب رشته ذخیره میشود،s، را به کاربر نشان داده و منتظر وارد نمودن داده توسط کاربر میشود. کاربر نیز داده خود را وارد نموده و Enter را فشارمی دهد:
>>input('Enter a number: ') Enter a number: 23 ans = 23 |
مشاهده میشود که داده وارد شده توسط کاربر در متغیر ans ذخیره شده و حاصل نمایش داده می-گردد. میتوان به شکل زیر داده را در متغیر دلخواه ذخیره نمود:
>>n = input('Enter a number: ') Enter a number: 23 n = 23 |
چنانچه نخواهیم که مقدار n دوباره نمایش داده شود، بدیهی است که انتهای دستور خود باید از ; استفاده کنیم.
اگر داده ورودی را بخواهیم در قالب رشته ذخیره کنیم،داریم:
>>Enter your name: Ali n 1x3 6 char |
کاربر میتواند دستوراتی را به جای داده نیز وارد کند، برای مثال:
>>Enter your value: sin(3*pi/2) ans = -1 >>input('Enter your value: ') Enter your value: magic(3) ans = 8 1 6 3 5 7 4 9 2 >>input('Enter your value: ') Enter your value: clc |
دستور آخر صفحه نمایش را پاک میکند.
- نکته: اگر داده ورودی مطابق درخواست تابع ورودی نباشد، مثلا به جای عدد رشته وارد کنیم، با پیغامی متناسب با خطا روبه رو خواهیم شد.
- تابع disp(x):
پیغام یا آرایه ای را به کاربر نمایش میدهد. اگر x یک رشته باشد، آن را در پنجره فرمان نمایش میدهد:
>>disp('Welcome') Welcome |
اگر x متغیر یا آرایه باشد، بدون ذکر نام آن محتویات آن را نمایش میدهد:
>>a = [1 2 3]; >>disp(a) 1 2 3 |
- مثال:
فرض کنید ماتریس A، شامل نمرات یک دانشجو در طول یک ترم در سه درس مختلف باشد، اگر بخواهیم میخواهیم این داده ها را به کاربر با ذکر نام هر درس در بالای ستون مربوطه نمایش دهیم، خواهیم داشت:
>>A = [13 14 15;16 17 18;19 19.5 20]; >>s = ' darse1 darse2 darse3'; >>disp(s),disp(A) darse1 darse2 darse3 13.0000 14.0000 15.0000 16.0000 17.0000 18.0000 19.0000 19.5000 20.0000 |
پیروز و موفق باشید
جلسه یازدهم | اسکریپت ها در برنامه نویسی متلب
فرمت:PDF (لطفا در صورت خرابی لینک دانلود گزارش بدید که لینک اصلاح کنیم)
بستن *نام و نام خانوادگی * پست الکترونیک * متن پیام |
دوره های آموزشی برنامه نویسی
انجام پروژه های برنامه نویسی
تدریس خصوصی برنامه نویسی
بیش از 7 سال از فعالیت جاواپرو میگذرد
جاواپرو دارای مجوز نشر دیجیتال از وزارت فرهنگ و ارشاد اسلامی است
جهت ارتباط مستقیم با جاواپرو در واتساپ و تلگرام :
09301904690