منظور از ورودی دلخواه این است که هنگام استفاده از تابع، می توانیم انتخاب کنیم که آن ورودی را به تابع بدهیم یا نه و البته نحوه اجرای تابع، در این دو حالت نیز متفاوت خواهد بود.
برای شرح چگونگی تعریف یک یا چند ورودی، به عنوان ورودی های دلخواه برای تابع، به مثال زیر توجه کنید :
مثال :
من ابتدا تابعی را به صورت عادی و با 4 متغیر به عنوان ورودی تعریف می کنم که دو تا از آن 4 ورودی، در تابع استفاده نمی شوند، زیرا می خواهم نکاتی را به شما نشان بدهم :
function [E] = addFunction(A,B,C,D)
E=A+B;
چون نام تابع را برابر addFunction انتخاب کرده ایم، بنابراین باید کد بالا در یک m-file با نام addFunction ذخیره شود (یعنی فایل addFunction.m). همچنین فایل مورد نظر، باید در مسیر های (path) تعریف شده در متلب قرار داشته باشد یا مسیر آن را به مسیرهای متلب اضافه کنیم.
پس با فرض تعریف تابع به صورت بالا، کد زیر را اجرا می کنیم :
نتیجه :
اکنون کد زیر را اجرا می کنیم :
نتیجه :
پس مشاهده می کنید، اگر در کدهای تابع، کدهایی بر اساس یک یا چند ورودی وجود نداشته باشد، عدم تعریف آنها به صورت ورودی تابع، اختلالی در اجرای کدهای تابع ایجاد نمی کند و تنها باید به ترتیب متغیرهای ورودی توجه کرد که مثلا چون دو ورودی را به عنوان ورودی های تابع تعیین کرده ایم، بنابراین تابع آن دو را به عنوان دو ورودی اول تعریف شده (یعنی A و B ) در نظر می گیرد.
بنابراین ما باید کدهای تابع را به گونه ای بنویسیم که اگر متغیرهای C و D (که می خواهیم ورودی دلخواه باشند)، تعیین شده بودند، یک سری کد و اگر تعیین نشده بودند، یک سری کد دیگر اجرا گردد. برای این منظور، از تابع exist استفاده می کنیم که می تواند برای تشخیص تعریف شدن یا تعریف نشدن یک متغیر به کار رود.
بنابراین این بار، کدهای تابع را به صورت زیر می نویسیم :
function [E] = addFunction(A,B,C,D)
E=A+B;
if(exist(D)) % C and D are defined
E=A+B+C+D;
elseif(exist(C)) % C is defined
E=A+B+C;
else
E=A+B;
end
اکنون چند بار به تابع ارجاع می دهیم. ابتدا هر 4 ورودی را تعیین می کنیم (A و B و C و D) :
نتیجه :
این بار تنها 3 ورودی را تعیین می کنیم (A و B و C) :
نتیجه :
و در آخر، تنها دو ورودی را تعیین می کنیم (A و B):
نتیجه :