خلاصه مطلب
آموزش رایگان و ساده توابع در متلب را در جاواپرو دانلود کنید
فهرست جلسات مینی دوره متلب
جلسه اول | آموزش تصویری نصب برنامه متلب در کامپیوتر
جلسه دوم | آموزش کار با برنامه متلب
جلسه سوم | آموزش کار با توابع ریاضی ساده در متلب
جلسه چهارم | آموزش متغیرها در برنامه نویسی متلب
جلسه پنجم | معرفی انواع داده ها در متلب
جلسه ششم | آرایه ها در برنامه نویسی متلب
جلسه هفتم | ماتریس ها در برنامه نویسی متلب
جلسه هشتم | ادامه ماتریس ها در برنامه نویسی متلب
جلسه نهم | رشته ها در برنامه نویسی متلب
جلسه دهم | آرایه سلول ها در برنامه نویسی متلب
جلسه یازدهم | اسکریپت ها در برنامه نویسی متلب
جلسه دوازدهم | آرایههای چندبعدی در متلب
جلسه سیزدهم | حلقه ها و دستورات شرطی در متلب
جلسه چهاردهم | ساختارها(structures) در متلب
جلسه پانزدهم | توابع در متلب
جلسه شانزدهم | رسم نمودار دوبعدی در متلب
جلسه هفدهم | ادامه رسم نمودار دوبعدی در متلب
جلسه هجدهم | رسم نمودار سه بعدی در متلب
جلسه نوزدهم | محاسبات نمادین در متلب
جلسه بیستم(آخر) | ادامه محاسبات نمادین در متلب

آموزش برنامه نویسی متلب موضوع:توابع در متلب جلسه: پانزدهم مدرس : مدرسین جاوا پرو متلب را ساده،آسان و شیرین بنوشید!!!
این جلسه به بحث مهم توابع می پردازیم. تا این جا از بسیاری از توابع از پیش نوشته شده ی متلب استفاده کرده ایم. برای مثال تابع 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) % in barnameh miangine 2 adad ra %mohasebe mikoned %be jaye x , y do adad qarar dade %va enetr bezanid ave = (x + y)/2; end |
در پنجره فرمان می نویسیم:
| >>lookfor miangin average - in barnameh miangine 2 adad ra |
در توابعی که قبلاً آموخته ایم برخی توابع با تعداد آرگومان های ورودی یا خروجی متفاوتی به کار می رفتند، مانند:
| 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 (لطفا در صورت خرابی لینک دانلود گزارش بدید که لینک اصلاح کنیم)


