تعریف تابع در متلب (انواع روش ها با مثال و همه نکات کاربردی)

یک تابع بلوکی از چند دستور است که کار خاصی انجام می دهند. توابع امکان استفاده مجدد از کدها را برای کاربر فراهم می کنند. متلب (MATLAB) توابع از پیش تعریف شده زیادی دارد که قابل استفاده هستند مانند sin()، fact()،cos() و … . علاوه بر اینها کاربر می تواند توابع مورد نظر و سفارشی خود را نیز تعریف کنند.
تعریف تابع (Function) در متلب یکی از بنیادیترین روشها برای ساخت کدهای تمیز، ماژولار و قابل بازاستفاده است. توابع برخلاف اسکریپتهای ساده (Scripts)، فضای حافظه مستقل خود (Local Workspace) را دارند و متغیرهای آنها حافظه اصلی متلب را شلوغ نمیکنند.
function [out1, out2] = myFunctionName(in1, in2) % MYFUNCTIONNAME این بخش توضیحات راهنمای تابع است % خروجیها: out1 (جمع) و out2 (ضرب) out1 = in1 + in2; out2 = in1 * in2;end۲. قوانین و نکات حیاتی در نامگذاری و ذخیرهسازی
۳. روش مدرن اعتبارسنجی ورودیها (arguments block)
از نسخه R2019b به بعد، متلب ساختار بسیار قدرتمندی به نام arguments را معرفی کرده است که کنترل نوع داده، سایز و تعیین مقادیر پیشفرض را فوقالعاده ساده میکند:
function area = calculateRectangle(length, width) arguments length (1,1) double {mustBePositive} % باید یک عدد اعشاری مثبت و تکی باشد width (1,1) double {mustBePositive} = 5 % مقدار پیشفرض ۵ در صورت وارد نشدن end area = length * width;end(با این کار، اگر کاربر یک عدد منفی یا متن وارد کند، متلب به صورت خودکار خطا داده و از اجرای کد اشتباه جلوگیری میکند).
۴. انواع توابع در متلب (کدام را کجا استفاده کنیم؟)
| نوع تابع | ویژگی و کاربرد اصلی | مثال یا نحوه تعریف |
| تابع اصلی (Primary Function) | همان تابع اول داخل فایل .m که از خارج از فایل هم قابل فراخوانی است. |
function y = main(x) |
| توابع محلی (Local / Subfunctions) | توابع کمکی که در ادامه همان فایل نوشته میشوند و فقط توسط تابع اصلی همان فایل قابل استفاده هستند. | نوشته شده زیر تابع اصلی در همان فایل |
| توابع بینام (Anonymous) | برای معادلات ریاضی کوتاه و یک خطی بدون نیاز به ساخت فایل .m مجزا. |
f = @(x) x.^2 + 2*x + 1; |
| توابع تودرتو (Nested Functions) | توابعی که کاملاً داخل بدنه یک تابع دیگر تعریف میشوند و به تمام متغیرهای تابع والد دسترسی مستقیم دارند. | function parent ... function child ... end ... end |
توضیحات بیشتر با مثال و جزئیات بیشتر
ساختار
function پارامترهای خروجی = نام تابع(پارامترهای ورودی)
% دستورات
end
نمونه زیر را ببینید:
function max = mymax(n1, n2, n3, n4, n5)
%This function calculates the maximum of the
% five numbers given as input
max = n1;
if(n2 > max)
max = n2;
end
if(n3 > max)
max = n3;
end
if(n4 > max)
max = n4;
end
if(n5 > max)
max = n5;
end
- تابع با کلمه کلیدی function شروع می شود.
- سپس متغیرهای برگشتی از تابع تعریف می شوند.
- پس از = نام تابع نوشته می شود.
- داخل پرانتز آرگومان های ورودی تابع نوشته می شود.
در ادامه چند مثال برای آشنایی با نحوه استفاده از توابع در متلب آورده شده است.
مثال 1: تابع با یک خروجی
تابع زیر میانگین بردار ورودی را محاسبه می کند.
% Input vector
values = [12, 4, 8.9, 6, 3];
% function return mean of vector c
function m = stat(x)
n = length(x);
m = sum(x)/n;
end
mean = stat(values)
خروجی
mean = 6.7800
مثال 2: تابع با چند مقدار بازگشتی
تابع زیر nCr و nPr را برای ورودی های n و r را محاسبه می کند.
% Input
x = 3;
y = 2;
% Function return p = nPr and c = nCr
function [p,c] = perm(n,r)
p = factorial(n)/factorial(n-r);
c = p*factorial(r);
end
[p,c] = perm(x,y)
خروجی
p = 6
c = 12
کجا و به چه دلیل باید از نرم افزار متلب استفاده کنیم یا نکنیم؟
مثال 3: چند تابع در یک فایل
دو تابع زیر در فایل تعریف می شوند:
- تابع ()stat2 انحراف معیار استاندارد بردار ورودی را محاسبه می کند.
- تابع ()stat1 میانگین بردار ورودی را محاسبه می کند.
values = [12, 4, 8.9, 6, 3];
% Function returns standard deviation of vector x
function sd = stat2(x)
m = stat1(x);
n = length(x)
sd = sqrt(sum((x-m).^2/n));
end
% Function returns mean of vector x
function m = stat1(x)
n = length(x);
m = sum(x)/n;
end
stat2(values)
خروجی
n = 5
ans = 3.2975
مثال 4: تابع بدون پرامترهای ورودی
در این مثال تابع ()sin_plot برای ترسیم تابع ()sin را تعریف شده است.
% Plotting sin(x) function
function sin_plot()
x = linspace(0,2*pi,100);
y = sin(x);
plot(x,y);
end
sin_plot()
خروجی

حتما دانلود کنید: آموزش کامل برنامه نویسی در متلب (22 جلسه رایگان به زبان فارسی)

