menusearch
javapro.ir

جلسه پانزدهم | توابع در متلب

جستجو
پنج شنبه ۱۱ آذر ۱۴۰۰ | ۰:۲۶:۵۳
۱۴۰۰/۹/۱ دوشنبه
(2)
(0)
جلسه پانزدهم | توابع در متلب
جلسه پانزدهم | توابع در متلب

فهرست جلسات مینی دوره متلب

جلسه اول | آموزش تصویری نصب برنامه متلب در کامپیوتر

جلسه دوم | آموزش کار با برنامه متلب

جلسه سوم | آموزش کار با توابع ریاضی ساده در متلب

جلسه چهارم | آموزش متغیرها در برنامه نویسی متلب

جلسه پنجم | معرفی انواع داده ها در متلب

جلسه ششم | آرایه ها در برنامه نویسی متلب

جلسه هفتم | ماتریس ها در برنامه نویسی متلب

جلسه هشتم | ادامه ماتریس ها در برنامه نویسی متلب

جلسه نهم | رشته ها در برنامه نویسی متلب

جلسه دهم | آرایه سلول ها در برنامه نویسی متلب

جلسه یازدهم | اسکریپت ها در برنامه نویسی متلب

جلسه دوازدهم | آرایه‌‌‌‌‌های چندبعدی در متلب

جلسه سیزدهم | حلقه ها و دستورات شرطی در متلب

جلسه چهاردهم | ساختارها(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

 

در پنجره فرمان می‌نویسیم:

 

><help average
in barnameh miangine 2 adad ra
mohasebe mikoned
be jaye x, y do adad qarar dade
va enetr bezanid

>>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

 

پیروز و موفق باشید

 


ادامه حیات سایت جاواپرو به حمایت مالی (دونیت) از طرف شما کاربر عزیز بستگی دارد....


 

جلسه پانزدهم | توابع در متلب

 

فرمت:PDF (لطفا در صورت خرابی لینک دانلود گزارش بدید که لینک اصلاح کنیم)

 

 

لینک دانلود آموزش رایگان اندروید

لینک دانلود

 

 

نظرات کاربران
*نام و نام خانوادگی
* پست الکترونیک
* متن پیام

بستن
*نام و نام خانوادگی
* پست الکترونیک
* متن پیام

0 نظر