تارا فایل

پاورپوینت تصمیم گیری و کنترل روند، استفاده از حلقه ها و دستورات شرطی در متلب


1-13-فایلهای متنی(Script) یا فایلهای m
بمنظور اجرای چند دستور بطور همزمان و بدون نیاز به تایپ مجدد، از فایلهای متنی استفاده می شود.
این فایلها باید دارای پسوند m باشند.
مرور

1-13-1- مراحل ایجاد فایلهای متنی
باز کردن یک فایل جدید در ویرایشگر متلب:
File>New>m-file
تایپ کردن دستورات متلب در فایل مذکور
ذخیره کردن فایل با نامی مشخص:
File>Save As…

مرور

1-13-2-روش اجرای یک فایل متنی
برای اجرای یک فایل متنی کافی است نام آنرا در جلوی اعلان متلب تایپ کرده کلید Enter را بزنیم.
نکته: از این پس متن برنامه ها(کد نوشته شده در فایلهای m) با رنگ سبز نشان داده خواهد شد.
مثال: برنامه sample1.m
% SAMPLE1: A Simple m-file
n=10;a=2;b=4;
c=n*a^3/b + 3*n*a^2/b^2+6*n*a/b^3
———————————————————-
>> sample1
c=
29.3750
مرور

1-13-3- توابع و دستورات مفید در فایلهای m
تابع disp(x): این تابع مقدار یک متغیر یا یک رشته متنی را نمایش می دهد.
مثال:
>> n=10;
>>disp(n)
10
>> disp(‘This is a string’)
This is a string
مرور

1-13-4- توابع و دستورات مفید در فایلهای m
تابع x=input(s): برای گرفتن مقدار یک متغیر از ورودی.
مثال:
n=input(‘Please tell me “n” value: ‘)
————————————————–
Please tell me “n” value: 10
n=
10

مرور

1-13-4- توابع و دستورات مفید در فایلهای m
دستور pause: توقف موقت در حین اجرا.
pause
pause(n) % n seconds
مثال:
%SAMPLE2: Enhanced Sample1
n=10;
a=input(‘ “a” value= ‘);
b=input(‘ “b” value= ‘);
c=n*a^3/b + 3*n*a^2/b^2 + 6*n*a/b^3;
disp(‘Please wait 5 seconds only!’);pause(5);
disp(‘Press any key to see answer.’); pause;
disp(‘ ”C” Value is= ‘); disp(c)
مرور

تکلیف 1-1: برنامه ای بنویسید که یک عدد را از کاربر بگیرد و آنرا در متغیری به نام x ذخیره کند. با استفاده از آن، عبارت زیر را محاسبه کند و مقدار y را با پیغام مناسب نمایش دهد.
y=x^3 + 3*x^2 +6*x + 6;
با تایپ نام برنامه در جلوی اعلان MATLAB، آنرا اجرا کنید.
با استفاده از ویرایشگر MATLAB، برنامه خود را اجرا و trace کنید.
مرور

فصل ششم :
تصمیم گیری و کنترل روند،
استفاده از حلقه ها و دستورات شرطی در متلب

در این فصل در مورد جملات شرطی و انواع حلقه های تکرار صحبت خواهیم کرد.
6-1-حلقه for:
شکل کلی حلقه for در متلب بصورت زیر است:
for x= آرایه
دستورات
end
در اینصورت حلقه فوق به تعداد ستونهای آرایه مشخص شده تکرار خواهد شد و در هر تکرار یکی از ستونهای این آرایه در متغیر x قرار گرفته و در بدنه حلقه قابل استفاده است. در صورتیکه آرایه یک بردار باشد، هر بار یک عنصر از آن در متغیر x قرار خواهد گرفت.
تذکر: با توجه به تواناییهای ماتریسی متلب از کاربرد حلقه ها در متلب تا حد ممکن باید پرهیز گردد زیرا اینکار باعث کند شدن شدید برنامه می شود و نیاز به کد نویسی بسیار بیشتری دارد.

6-1- حلقه for-ادامه-
مثال:
for n=1:10
x(n) = sin(n * pi / 10);
end;
————–
for k=[1,2,3,7]
x(k) = k+1;
end;
>>x
x=
2 3 4 0 0 0 0 8

6-2- حلقه while :
در مواردی که بخواهیم یک یا چند دستور تا برقراری شرط خاصی تکرار گردند از این حلقه استفاده می کنیم. شکل کلی حلقه while بصورت زیر است:
while شرط
دستورات
end
حلقه فوق تا زمانیکه شرط ذکر شده برقرار باشد تکرار خواهد شد.

6-2- حلقه while –ادامه-
مثال:

t=1;
while t ~= -1
t = input( ‘ Enter a number to continue or -1 to exit from this block: ‘);

end

6-2- حلقه while –ادامه-
مثال:
در این مثال بالاترین دقت محاسبات نقطه اعشار در متلب محاسبه می شود
Epsilon=1;
while ( 1 + Epsilon ) > 1
Epsilon = Epsilon / 2;
end;
disp(‘This is the smallest floating point number in matlab: );
disp ( Epsilon);

نکته : متغیر ویژه eps در متلب حاوی کوچکترین عددی است که اگر با یک جمع شود مقدار حاصل از یک بزرکتر خواهد بود. که این عدد دوبرابر Epsilon بدست آمده از روش فوق است.

6-3- ساختار if-else-end
هرگاه بخواهیم یک یا چند جمله در صورت برقرار بودن شرط خاصی (یکبار) اجرا شود، از بلوک if استفاده می کنیم. شکل کلی استفاده از این دستور بصورت زیر است:
if 1 شرط
دستورات
elseif 2 شرط
دستورات
elseif …

else
دستورات
end;

6-3- ساختار if-else-end –ادامه-
مثال:
Epsilon = 1;
while 1 > 0
Epsilon = Epsilon / 2;
if Epsilon + 1 == 1
break;
end
end
نکته: با دستور break می توان یک حلقه while یا for را شکست. در اینصورت اجرای برنامه از نخستین دستور بعد از حلقه ادامه خواهد یافت.

تکلیف ۱-۶: برنامه ای بنویسید که نمرات چند دانشجو را به صورت یک بردار بگیرد و عملیات زیر را انجام دهد:
در صورتیکه ورودی کاربر بردار نباشد(ماتریس یا اسکالر باشد) پیام خطا دهد.(راهنمایی برای دادن پیام خطا می توانید از تابع error به جای disp استفاده کنید)
با استفاده از حلقه for و دستورات شرطی if-else-end تک تک نمرات را چک کند و به صورت زیر آنها را تغییر دهد:
نمرات کمتر از ۵ را به ۹ تغییر دهد
نمرات بین ۵ و ۸ را به ۹.۵ تغییر دهد.
نمرات بین ۸ و ۱۰ را به ۱۰ تغییر دهد.
نمرات بین ۱۰ و ۱۵ را ۱ نمره افزایش دهد
نمرات بیشتر از ۱۵ و کمتر از ۲۰ را ۰.۵ نمره افزایش دهد.

تکلیف ۲-۶: برنامه دیگری بنویسید که همان کارهای برنامه ۱-۶ را بدون استفاده از حلقه انجام دهد.

فصل هفتم:
ایجاد توابع در متلب
Functions

7-1-مزایای استفاده از توابع به جای فایلهای اسکریپت
سرعت بالاتر
صرفه جویی در حافظه کامپیوتر
توسعه توانایی های متلب
توابع بر خلاف فایلهای اسکریپت در هنگام اجرا یکبار کامپایل شده و اجرا می شوند. در حالیکه فایلهای اسکریپت سطر به سطر کامپایل و اجرا می گردند. این امر باعث افزایش سرعت اجرای توابع در مقایسه با فایلهای اسکریپت می شود.
متغیرهای تعریف شده در توابع پس از پایان اجرای آن از حافظه پاک می شوند و بطور کلی فضای کاری توابع مستقل از فضای کاری متلب است. خصوصا در مواقعی که برنامه با ماتریسهای بزرگ(مانند تصاویر) کار می کند بهتر است از توابع استفاده شود

7-1-مزایای استفاده از توابع به جای فایلهای اسکریپت-ادامه-
اکثر دستورات اصلی متلب و جعبه ابزارهای آن با استفاده از توابع نوشته شده است. به بیان دیگر به راحتی می توان قابلیتهایی که در حال حاضر در متلب وجود ندارد را با نوشتن یک مجموعه از توابع به آن افزود. همین امر باعث شده است که در دهه گذشته قابلیتهای متلب در رشته های مختلف علمی و فنی با سرعت چشمگیری توسعه یابد.

نکته : بهتر است در هنگام نوشتن یک برنامه آنرا بصورت اسکریپت بنویسیم تا اشکالزدایی آن آسانتر باشد اما پس از کامل شده برنامه آنرا به فانکشن تبدیل کنیم تا سرعت و کیفیت آن افزایش یابد.

7-2- تفاوتهای توابع و فایلهای متنی
فایلهای متنی سطر به سطر ترجمه و اجرا می شوند اما توابع یکبار بطور کامل ترجمه و سپس اجرا می گردند.
محیط کاری فایلهای متنی همان محیط کاری متلب است اما محیط کاری هر تابعی مختص خود اوست یعنی اگر متغیری در یک تابع تعریف شود تنها در آن تابع قابل دسترسی است و برعکس متغیرهای تعریف شده در محیط کاری متلب در داخل توابع تعریف شده نیستند.( مگر اینکه بصورت عمومی تعریف شده باشند)
توابع تنها از طریق آرگومانهایشان با محیط خارج در ارتباطند

7-3- نحوه ایجاد توابع
تنها تفاوت ظاهری یک تابع و یک فایل متنی آن است که سطر اول یک تابع با کلمه کلیدی function شروع می شود که شکل کلی آن بصورت زیر است:
function [argout1 , argout2, … ] = funcname(argin1,argin2,…)
%معرفی فانکشن در یک سطر
%راهنمای استفاده
% از این فانکشن

% نویسنده فانکشن ، نسخه و سال ساخت
بدنه تابع

7-3- نحوه ایجاد توابع-ادامه-
نکات:
تابع ممکن است هیچ آرگومان ورودی یا خروجی نداشته باشد.
اولین سطر بعد از اعلان تابع، یک جمله توضیحی است که در هنگام استفاده از دستور lookfor در متلب مورد جستجو قرار می گیرد
تمامی سطرهای توضیحی تا نخستین سطر غیر توضیحی در هنگام استفاده از دستور help نمایش داده میشود.

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

7-4- فرمانهای return و error
با استفاده از این دو دستور می توان اجرای یک تابع را پیش از رسیدن به انتهای آن متوقف کرد. تفاوت دستور error با دستور return آن است که دستور error می تواند یک پیغام خطا نیز بمنظور آگاهسازی کاربر نمایش دهد.
مثال:

s= input( ‘Please enter a scalar value= ‘);
if length (s) > 1
error(‘Error! Your input isn’’t a scalar!’);
end
a= linspace( 0 , abs(s) , 100);

7-5- تعیین تعداد آرگومانهای بکار رفته در حین اجرا
در متلب می توان توابع را با تعداد آرگومان کمتر از تعداد آرگومان موجود در تعریف تابع نیز فراخوانی کرد. مثلا تابع size در متلب با دو آرگومان نوشته شده است اما با یک آرگومان نیز قابل اجراست که البته مقدار بازگشتی به تعداد آرگومانهای مورد استفاده بستگی خواهد داشت.
در صورتیکه بخواهیم از تعداد آرگومانها در حین اجرا مطلع شویم باید از توابع nargin و nargout به ترتیب برای تعداد آرگومانهای ورودی و تعداد آرگومانهای خروجی استفاده کنیم.
همچنین توابع nargchk و nargoutchk تعداد آرگومانهای ورودی و خروجی را چک می کنند و درصورتیکه با تعداد درخواست شده برابر نباشند پیام خطای مناسب را نشان می دهند.

7-6- نکاتی در مورد توابع
در یک فایل می توان بیش از یک تابع تعریف کرد. در اینصورت تمامی این توابع می توانند یکدیگر را فراخوانی کنند اما تنها نخستین تابع از خارج از این فایل قابل فراخوانی است.
نام فایل با نام نخستین تابع آن باید یکسان باشد. در غیر اینصورت بمنظور اجرای تابع باید از نام فایل به جای نام تابع استفاده گردد که البته کار درستی نیست.

مثال ۱-۷- تابعی بنویسید که یک بردار(آرایه سطری یا ستونی) را از کاربر بگیرد و مراحل زیر را انجام دهد:
تعداد آرگومان ورودی و خروجی که توسط کاربر وارد شده است را چک کند و در صورتیکه تعداد آرگومان ورودی بیشتر یا کمتر از یک و تعداد آرگومان خروجی بیشتر از یک باشد، پیام خطا نمایش داده از تابع خارج شود.
ابعاد آرگومان ورودی را چک کند و درصورتیکه آرایه ای غیر سطری یا غیر ستونی باشد(یعنی در صورتیکه به جای بردار، ماتریس باشد)، با پیام خطا از تابع خارج شود.
عبارت زیر را بر روی مقادیر ورودی اعمال نموده به عنوان خروجی بازگرداند.
y=2exp(4×2)+3sin(2πx)+10
تعداد آرگومان خروجی را چک کند و در صورتیکه برابر با صفر باشد، نمودار تغییرات y در مقابل x را رسم کند.(راهنمایی: برای رسم نمودار از تابع plot(x,y) استفاده کنید.

تکلیف 7-1-تابعی بنویسید که یک عبارت ریاضی دلخواه را از کاربر (به صورت یک رشته کاراکتری) به عنوان آرگومان اول و یک آرایه را به عنوان آرگومان دوم بگیرد و :
چک کند که تعداد آرگومان ورودی دقیقا دو عدد باشد(با استفاده از تابع nargchk)
چک کند که تعداد آرگومان خروجی دقیقا یک عدد باشد.(با استفاده از تابع nargoutchk)
چک کند که آرگومان اول حتما یک رشته کاراکتری باشد و آرگومان دوم حتما یک متغیر عددی. (از توابع isstr و isnumeric استفاده کنید)
با استفاده از تابع eval عبارات ریاضی وارد شده توسط کاربر را بر روی تمامی عناصر آرایه ورودی اعمال نموده، باز گرداند.


تعداد صفحات : 27 | فرمت فایل : .ppt

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