آموزش برنامه نویسی متلب
موضوع:توابع در متلب
جلسه: پانزدهم
مدرس : مدرسین جاواپرو
متلب را ساده،آسان و شیرین بنوشید!!!
این جلسه به بحث مهم توابع میپردازیم. تا این جا از بسیاری از توابع از پیش نوشته شده ی متلب استفاده کرده ایم. برای مثال تابع sin(x)، که جزو کتابخانه توابع ریاضی متلب است و x را به عنوان ورودی می-گیرد که به آن آرگومان ورودی نیز میگویند و مقداری را برمی گرداند که به آن آرگومان خروجی گفته می-شود. برخی توابع نیز میتوانند بیش از یک آرگومان ورودی یا خروجی داشته باشند. قبلاً دیده بودیم که به جای استفاده از برخی توابع، خودمان نیز میتوانیم با کمک دستورات و توابع دیگر به مطلوب خود دست-یابیم. بنابراین بسیاری از توابع از یک سری توابع و دستورات دیگر در محاسبات خود استفاده میکنند. این امکان وجود دارد که توابع متلب را گسترش داد. و این باعث شده که کتابخانه ها و توابع مختلفی توسط افراد مختلف نوشته شده و در اختیار عموم قرار بگیرد.
پیش از این با فایل های متنی آشنا شده ایم. توابع نیز شباهت زیادی به فایل های متنی دارند ما تفاوت های اساسی نیز باهم داشته که به برخی اشاره میکنیم:
- بر خلاف فایل های متنی، توابع در متلب ابتدا به طور کامل کامپایل شده و سپس اجرا میشوند.
- سرعت اجرای توابع به دلیل گفته شده در مورد قبل بالاتر از فایل های متنی است.
- فضای کاری توابع و متلب متفاوت است، در حالی که فایل های متنی از همان فضای کاری متلب استفاده میکنند. این بدان معناست که چنانچه یک متغیر در فایل متنی تعریف شود، در فضای کاری نیز ایجاد شده و همچنین در فایل های متنی از متغیرهای فضای کاری میتوان استفاده نمود. اما در توابع،متغیرها همگی به طور محلی تعریف میشوند. یعنی محدوده تعریف آنها فقط در داخل فایل توابع است.
- آرگومان های توابع تنها راه ارتباط فضای کاری توابع و متلب است.
برای ایجاد تابع یک فایل متنی ایجاد کنید:
>>edit myfunction |
نحوه ایجاد یک تابع به شکل زیر است:
function [argout1 argout 2,…] = function_name(argin1, argin2 ,…) % توضیحات دستورات ... end |
کلمه function در بالا یک کلمه کلیدی است و معرف یک تابع است. نام دلخواه تابع خود را به جای function_name مینویسیم. در مورد نام توابع به نکات زیر دقت شود:
- نام تابع فقط میتواند شامل حروف لاتین، اعداد و "_" باشد. ولی نمیتوان با یک عدد شروع شود.
- نام فایلی که در آن تابع نوشته میشود میبایست هم نام با نام تابع باشد.
- نام تابع نمیتواند کلمات کلیدی یا نام توابع دیگر باشد، مثلاً sin. اما از آنجایی که متلب case sensitive است، یعنی به کوچک و بزرگ بودن حروف حساس است، میتوان از این قبیل نام گذاری ها انجام داد: Sin(), _sin(), SIN(),… .
اگر تابع ورودی یا خروجی نداشته باشد، به شکل زیر ساده خواهد شد:
function myfunction end |
اولین خط فایل متنی باید خط اول تعریف تابع باشد. در غیر این صورت متلب به جای نام تابع نام برنامه را به عنوان نام تابع درنظر میگیرد.
- مثال:
تابعی بنویسید که دو عدد را بگیرد و میانگین آن دو را برگرداند.
یک فایل متنی با عنوان average ایجاد کرده و کدهای زیر را درآن مینویسیم:
function ave = average(x,y) ave = (x + y)/2; end |
برای اجرای برنامه در خط فرمان عبارت زیررا مینویسیم:
>>a = average(1,2) a = 1.5000 |
- نکات مهم:
چنانچه در اولین خط تعریف تابع توضیحاتی را یادداشت کنید، در هنگام جستجوی دستورات با lookfor، متلب از این خط برای جستجو استفاده میکند. اولین خطوط توضیحات برنامه تا اولین خط غیرتوضیحی در نتیجه دستور help myfuntion ظاهر میشود. مثال:
function ave = average(x,y) |
در پنجره فرمان مینویسیم:
><help average >>lookfor miangin |
در توابعی که قبلاً آموخته ایم برخی توابع با تعداد آرگومان های ورودی یا خروجی متفاوتی به کار میرفتند، مانند:
diag(A), diag([a1 a2 … an]) |
به ازای ورودی ماتریس یک بردار، و به ازای ورودی بردار یک ماتریس خروجی این دستور بود. برای نوشتن چنین برنامه هایی، دستوات زیر را میتوان به کاربرد:
- narargin:
تعداد آرگومان های واردشده هنگام فراخوانی تابع را برمی گرداند. این دستور فقط در داخل تابع استفاده میشود.
function ave = average(x,y) disp('number of inputs: '); disp(nargin); ave = (x + y)/2; end |
مثال فوق تعداد آرگومان های ورودی تابع را نشان میدهد. اگر تابع فوق را با تعداد آرگومان کمتر یا بیشتر تعریف شده فراخوانی کنیم، با پیغام خطا از سوی متلب مواجه میشویم، اما اگر بخواهیم تابع خود را با تعداد متغیرهای ورودی متغیر تعریف کنیم از varargin استفاده میکنیم که در ادامه توضیح داده-خواهدشد. nargin(‘function_name’) تعداد آرگومان های ورودی تابع را برمی گرداند.
- varargin:
این عبارت در داخل تعریف متغیرهای ورودی تابع به کار میرود، در صورت استفاده، به این معناست که تابع هر تعداد ورودی را میتواند بپذیرد. با فراخوانی تابع، یک آرایه سلول به ابعاد 1*N با نام varargin تشکیل میشود.
نحوه استفاده از آن در مثال زیر توضیح داده میشود.
- مثال:
تابعی بنویسید که تعداد آرگومان های ورودی به آن را برگرداند.
function number_of_args(varargin) s=['number of inputs: ' num2str(nargin)]; disp(s) end |
در پنجره فرمان دستورهای زیر را برای آزمایش تابع اجرا کنید:
>>number_of_args number of inputs: 0 >>number_of_args([1 2]) number of inputs: 1 >>number_of_args([1 2],'name') number of inputs: 2 |
می بینیم که به راحتی این امکان وجود دارد هر تعداد ورودی دلخواه با نوع داده متفاوت به عنوان ورودی تابع داده شود.
- نکته : اگر تابعی تعداد ورودی نامشخص داشته باشد، nargin(‘function_name’) -1 را برمی گرداند.
- nargout :
تعداد خروجی های یک تابع را برمی گرداند و فقط در داخل تابع استفاده میشود.
- مثال:
تابعی با دو ورودی عددی بنویسید که اگر با یک آرگومان خروجی فراخوانی شود، قدرمطلق اختلاف آن دو را برگرداند، و چنانچه با دو خروجی فراخوانی شود، مقدار خروجی دوم برابر با تفریق ورودی اول از دوم باشد:
function [a,b] = Dif(x,y) a = abs(y-x); if varargout == 2 b = y – x; end |
پیروز و موفق باشید
تدریس خصوصی آنلاین و از راه دور متلب(MATLAB) با مدرس های حرفه ای و با تجربه [اینجا کـــــلیک کــــنید]
جلسه پانزدهم | توابع در متلب
فرمت:PDF (لطفا در صورت خرابی لینک دانلود گزارش بدید که لینک اصلاح کنیم)
بستن *نام و نام خانوادگی * پست الکترونیک * متن پیام |
دوره های آموزشی برنامه نویسی
انجام پروژه های برنامه نویسی
تدریس خصوصی برنامه نویسی
بیش از 7 سال از فعالیت جاواپرو میگذرد
جاواپرو دارای مجوز نشر دیجیتال از وزارت فرهنگ و ارشاد اسلامی است
جهت ارتباط مستقیم با جاواپرو در واتساپ و تلگرام :
09301904690
بستن دیگر باز نشو! |