تابع های محلی در متلب
در آموزش های قبلی با تعریف تابع در متلب و نحوه ذخیره آن آشنا شدیم. در این قسمت قصد داریم به معرفی و نحوه استفاده از تابع های محلی در متلب بپردازیم.
در هر فایل مربوط به تعریف تابع که با پسوند m ذخیره می شود، حتما یک تابع اصلی وجود دارد که در ابتدای کد نوشته می شود و نام آن تابع با نام فایل ذخیره شده یکسان است. تا اینجای کار را در آموزش های قبلی هم شرح داده ایم.
اما با توجه به نیازمان می توانیم در یک فایل بیشتر از یک تابع را تعریف کنیم. در این صورت تابع اولی که تعریف شده است، تابع اصلی نام دارد که در بقیه فایل ها هم می توانیم آن را فراخوانی کنیم و از قابلیت هایش استفاده نماییم.
تابع های بعدی که تعریف می کنیم، فقط در همان فایل قابل استفاده هستند و در فایل های دیگر نمی توان آن ها را استفاده کرد. به این نوع از توابع، تابع های محلی در متلب (local functions) گفته می شود.
برای این که بهتر متوجه شوید، نگاهی به تصویر زیر بیندازید. همانطور که می بینید تابع اصلی در فایل ها و کدهای دیگر متلب هم قابل اجراست. اما تابع های محلی، فقط در تابع اصلی همین فایل و سایر تابع های محلی این فایل قابلیت فراخوانی و اجرا دارند.
همانطور که مشاهده می کنید، نحوه تعریف و ساختار تابع های محلی کاملا شبیه تابع اصلی است.
نکته: در هر فایل می توان به طور نامحدود تابع های محلی تعریف کرد.
برای درک بهتر اینکه تابع های محلی چه کاربردهایی دارند، اجازه بدهید یک مثال را که در help متلب آمده است با هم بررسی کنیم.
مثال: می خواهیم تابعی به نام mystates بنویسیم که تعدادی عدد را در قالب یک بردار دریافت کند و میانگین و میانه آنها را محاسبه نماید.
برای این کار نیاز به یک تابع اصلی داریم که اعداد را دریافت می کند. سپس با استفاده از دو تابع محلی، میانگین و میانه را محاسبه می کند و در خروجی اش تحویل می دهد.
تابع اصلی بردار اعداد را دریافت می کند و تعداد المان های آن را با استفاده از تابع numel در متلب محاسبه می نماید. سپس بردار و تعداد المان ها را به عنوان ورودی به دو تابع محلی می دهد تا میانگین و میانه را محاسبه نمایند.
تابع mymean با دریافت اعداد داده شده و تعداد آنها، میانگین را محاسبه می کند. تابع mymed هم با دریافت همین ورودی ها میانه را به دست می آورد.
در نهایت در سایر فایل ها می توانیم صرفا از تابع mystates که تابع اصلی است استفاده کنیم و دو تابع دیگر فقط در همین فایل فعلی قابلیت استفاده دارند. توجه کنید که نام این فایل هم به نام تابع اصلی یعنی mystates.m خواهد بود.
در پایان این را هم در نظر داشته باشید که گاهی اوقات به تابع های محلی در متلب زیرتابع هم گفته می شود. ( یا همان subfunction).
مشابه این قابلیت متلب، در سایر زبان های برنامه نویسی هم با نام سابروتین ها وجود دارد.