ایجاد توابع در متلب
Download
Report
Transcript ایجاد توابع در متلب
فصل هفتم:
ایجاد توابع در متلب
Functions
کالس آموزش ی
فصل هفتم :ایجاد توابع در متلب
-1-7مزاياي استفاده از توابع به جاي فايلهاي اسکريپت
.1سرعت باالتر
.2صرفهجويي در حافظه کامپيوتر
.3توسعه تواناييهاي متلب
در حاليکه
توابع بر خالف فايلهاي اسکريپت در هنگام اجرا يکبار کامپايل شده و اجرا ميشوند .
فايلهاي اسکريپت سطر به سطر کامپايل و اجرا ميگردند .اين امر باعث افزايش سرعت
اجراي توابع در مقايسه با فايلهاي اسکريپت ميشود.
متغيرهاي تعريف شده در توابع پس از پايان اجراي آن از حافظه پاک ميشوند و بطور کلي
فضاي کاري توابع مستقل از فضاي کاري متلب است .خصوصا در مواقعي که برنامه با
ماتريسهاي بزرگ(مانند تصاوير) کار ميکند بهتر است از توابع استفاده شود
فصل هفتم :ایجاد توابع در متلب
-1-7مزاياي استفاده از توابع به جاي فايلهاي اسکريپت-ادامه-
اکثر دستورات اصلي متلب و جعبهابزارهاي آن با استفاده از توابع نوشته شده است .به بيان
ديگر به راحتي ميتوان قابليتهايي که در حال حاضر در متلب وجود ندارد را با نوشتن يک
مجموعه از توابع به آن افزود .همين امر باعث شده است که در دهه گذشته قابليتهاي
متلب در رشتههاي مختلف علمي و فني با سرعت چشمگيري توسعه يابد.
نکته :بهتر است در هنگام نوشتن يک برنامه آنرا بصورت اسکريپت بنويسيم تا اشکالزدايي آن
آسانتر باشد اما پس از کامل شده برنامه آنرا به فانکشن تبديل کنيم تا سرعت و کيفيت
آن افزايش يابد.
فصل هفتم :ایجاد توابع در متلب
-2-7تفاوتهاي توابع و فايلهاي متني
.1فايلهاي متني سطر به سطر ترجمه و اجرا ميشوند اما توابع يکبار بطور کامل ترجمه
و سپس اجرا ميگردند.
.2محيط کاري فايلهاي متني همان محيط کاري متلب است اما محيط کاري هر تابعي
مختص خود اوست يعني اگر متغيري در يک تابع تعريف شود تنها در آن تابع قابل
دسترس ي است و برعکس متغيرهاي تعريف شده در محيط کاري متلب در داخل توابع
تعريف شده نيستند (.مگر اينکه بصورت عمومي تعريف شده باشند)
.3توابع تنها از طريق آرگومانهايشان با محيط خارج در ارتباطند
فصل هفتم :ایجاد توابع در متلب
-3-7نحوه ايجاد توابع
تنها تفاوت ظاهري يک تابع و يک فايل متني آن است که سطر اول يک تابع با کلمه کليدي
functionشروع ميشود که شکل کلي آن بصورت زير است:
= ] … function [argout1 , argout2,
)…funcname(argin1,argin2,
معرفي فانکشن در يک سطر%
راهنماي استفاده%
از اين فانکشن%
نويسنده فانکشن ،نسخه و سال ساخت %
بدنه تابع
...
فصل هفتم :ایجاد توابع در متلب
-3-7نحوه ايجاد توابع-ادامه-
نکات:
.1
.2
.3
تابع ممکن است هيچ آرگومان ورودي يا خروجي نداشته باشد.
اولين سطر بعد از اعالن تابع ،يک جمله توضيحي است که در هنگام استفاده از دستور
lookforدر متلب مورد جستجو قرار ميگيرد
تمامي سطرهاي توضيحي تا نخستين سطر غير توضيحي در هنگام استفاده از دست ور help
نمايش داده ميشود.
نکته :بهتر است هنگام نوشتن يک تابع حتما يکي دو سطر در مورد نحوه استفاده از آن و عملکرد آن
توضيح داده شود تا کاربر بتواند با استفاده از دستور helpمتلب با روش استفاده از آن
تابع و قابليتهاي آن آشنا شود.
فصل هفتم :ایجاد توابع در متلب
-4-7فرمانهاي 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
فصل هفتم :ایجاد توابع در متلب
-5-7تعيين تعداد آرگومانهاي بکار رفته در حين اجرا
در متلب ميتوان توابع را با تعداد آرگومان کمتر از تعداد آرگومان موجود در تعريف تابع نيز
فراخواني کرد .مثال تابع sizeدر متلب با دو آرگومان نوشته شده است اما با يک
آرگومان نيز قابل اجراست که البته مقدار بازگشتي به تعداد آرگومانهاي مورد استفاده
بستگي خواهد داشت.
در صورتيکه بخواهيم از تعداد آرگومانها در حين اجرا مطلع شويم بايد از توابع narginو
nargoutبه ترتيب براي تعداد آرگومانهاي ورودي و تعداد آرگومانهاي خروجي استفاده
کنيم.
همچنين توابع nargchkو nargoutchkتعداد آرگومانهای ورودی و خروجی را چک
میکنند و درصورتیکه با تعداد درخواست شده برابر نباشند پیام خطای مناسب را نشان
میدهند.
فصل هفتم :ایجاد توابع در متلب
-6-7نکاتي در مورد توابع
در يک فايل ميتوان بيش از يک تابع تعريف کرد .در اينصورت تمامي
اين توابع ميتوانند يکديگر را فراخواني کنند اما تنها نخستين تابع از
خارج از اين فايل قابل فراخواني است.
نام فايل با نام نخستين تابع آن بايد يکسان باشد .در غير اينصورت
بمنظور اجراي تابع بايد از نام فايل به جاي نام تابع استفاده گردد که
البته کار درستي نيست.
فصل هفتم :ایجاد توابع در متلب
مثال -۱-۷تابعی بنویسید که یک بردار(آرایه سطری یا ستونی) را از کاربر بگيرد و مراحل زیر
را انجام دهد:
تعداد آرگومان ورودی و خروجی که توسط کاربر وارد شده است را چک کند و در صورتیکه تعداد
آرگومان ورودی بیشتر یا کمتر از یک و تعداد آرگومان خروجی بیشتر از یک باشد ،پیام خطا نمایش
داده از تابع خارج شود.
در
ابعاد آرگومان ورودی را چک کند و درصورتیکه آرایهای غير سطری یا غير ستونی باشد(یعنی
صورتیکه به جای بردار ،ماتریس باشد) ،با پیام خطا از تابع خارج شود.
عبارت زیر را بر روی مقادیر ورودی اعمال نموده به عنوان خروجی بازگرداند.
y=2exp(4x2)+3sin(2πx)+10
تعداد آرگومان خروجی را چک کند و در صورتیکه برابر با صفر باشد ،نمودار تغیيرات yدر
مقابل xرا رسم کند(.راهنمایی :برای رسم نمودار از تابع ) plot(x,yاستفاده کنید.
فصل هفتم :ایجاد توابع در متلب
تکلیف -1-7تابعی بنویسید که یک عبارت ریاض ی دلخواه را از کار بر (به
ی) به عنوان آرگومان اول و یک آرایه را به
صورت یک رشته کاراکتر
عنوان آرگومان دوم بگيرد و :
چک کند که تعداد آرگومان ورودی دقیقا دو عدد باشد(با استفاده از تابع )nargchk
چک کند که تعداد آرگومان خروجی دقیقا یک عدد باشد(.با استفاده از تابع
)nargoutchk
چک کند که آرگومان اول حتما یک رشته کاراکتری باشد و آرگومان دوم حتما یک متغير عددی( .از
توابع isstrو isnumericاستفاده کنید)
با استفاده از تابع evalعبارات ریاض ی وارد شده توسط کاربر را بر روی تمامی عناصر آرایه
ورودی اعمال نموده ،باز گرداند.