تعریف تابع در متلب | دستور function
به نام خدا و سلام.
به جلسه نوزدهم از سری جلسات آموزش متلب خوش آمدید. آموزش تخصصی نرم افزار متلب از وبسایت متلبپلاس ارائه میشود. در این جلسه به آموزش تعریف تابع در متلب، فراخوانی تابع و انواع آن میپردازیم. برای آشنایی با توابع، ابتدا دلایل بوجود آمدن آنها را معرفی میکنیم. سپس نحوه بکارگیری توابع در متلب را شرح داده و در ادامه با جزئیات کار با تابعها آشنا میشویم.
با متلب پلاس همراه باشید.
فیلم آموزش متلب بصورت پروژه محور (حل 149 نمونه سوال برنامه نویسی❤️) در وبسایت متلبپلاس ارائه شده است. برای مشاهده این پکیج آموزشی روی 👈 حل نمونه سوال برنامه نویسی متلب 👉 کلیک نمائید.
مقدمهای بر تعریف تابع در متلب
هنگام توضیح تابع، آن را به یک ماشین تشبیه میکنند که یک مقدار را دریافت میکند و یک مقدار تحویل میدهد. سپس با استفاده از این مفهوم، اعمال مختلف بر روی توابع را توضیح میدهند. اگر این مفهوم را تعمیم و گسترش دهیم، تابع میتواند به تعداد نامحدود ورودی و یا خروجی داشته باشد. یا حتی برعکس، ورودی یا خروجی نداشته باشد. در ادامه خواهید دید که توابعی ایجاد میکنیم که لزوماً ورودی و یا خروجی ندارند. در ابتداییترین حالت، از تابع در متلب برای سادهسازی و خوانایی کد استفاده میشود. امروزه استفاده از توابع به یک شیوه استاندارد برنامهنویسی تبدیل شدهاست.
در برنامهنویسی به روش OOP و یا Functional اساس کار، توابع هستند و همه چیز تابع است. در اینگونه برنامهنویسی، تمامی بخشهای برنامه به اجزای کوچک که همان تابع (Function) است تبدیل میشوند. سپس این توابع توسط یک تابع اصلی که نقش اجرای برنامه را دارد فراخوانی میشوند. در این آموزش matlab به طور کامل با تابع و جزئیات آن آشنا میشویم.
مثالهایی از کاربرد تابع در متلب
مثال اول) فرض کنیم که برای محاسبه جذر یک عدد باید هر بار کد زیر را در بخش editor متلب تکرار کنیم.
x_new = 1; x = 1;
tol = 1;
a = 10;
while gt(tol , 1e-15)
x = (x_new + x)/2;
x_new = a/x;
tol = abs(x_new-x);
disp(x)
end
نتیجه یک فاجعه تمام عیار خواهد بود، برنامهای با نوشتار طولانی و تکراری. در این کد تنها مقدار a برایمان مهم است و نتیجه کد که x_new است. پس در نهایت نیاز به سازوکاری داریم تا a را دریافت کند و x_new را خروجی دهد.
مثال دوم) اگر بخواهیم در یک برنامه مرتباً یک عدد تصادفی تولید کنیم، تکرار مجدد بخشی از کد منطقی نیست. در این حالت کارکردی نیاز است تا تنها سلسله محاسباتی را انجام دهد و یک عدد خروجی دهد. بنابراین این تابع ورودی نداشته و تنها یک خروجی داشته باشد.
مثال سوم) در جایی دیگر میخواهیم برنامهای داشته باشیم تا یک ماتریس اعداد را مرتب کند. برنامه بتواند در راستای مختلف (سطر، ستون، عمق و…) و همچنین از کوچک به بزرگ یا برعکس مرتبسازی کند. در انتها ماتریس مرتب شده و همچنین محل قرارگیری پیشین هر عدد در ماتریس جدید به عنوان خروجی باشد. واضح است که اگر لازم باشد دادهها مرتب شوند، همچنین این شرطها را داشته باشیم، نوشتار شلوغ و ناخوانا میشود. پس نیازمند عملکردی هستیم تا ماتریس، جهت و ترتیب را بگیرد و ماتریس مرتب شده و شاخصها را خروجی دهد.
تعریف تابع در متلب
در متلب تابعها انواع مختلفی دارند اما نقطه شروع برای ایجاد همه آنها مشابه است. برای تعریف یک تابع معمولاً از ایجاد یک m فایل شروع میکنیم. برای اینکار میتوانیم در بخش Editor بر New کلیک کنیم و گزینه Function را انتخاب کنیم. یا در پنجره Current Folder راست کلیک کرده و از New گزینه Function را انتخاب کنیم. در این حالت اسم فایل دقیقا اسم فانکشن خواهد بود. توجه شود که اسم تابع و اسم فایلی که در آن قرار دارد باید یکسان باشد. همچنین در نامگذاری تابع تمامی موارد نامگذاری متغیرها باید رعایت شود.
function [outputArg1, outputArg2, ...] = Fcn1(inputArg1,inputArg2, ...)
%FCN1 Summary of this function goes here
% Detailed explanation goes here
end
function Fcn2(inputArg1, inputArg2, ...)
%FCN2 Summary of this function goes here
% Detailed explanation goes here
end
function [outputArg1, outputArg2, ...] = Fcn3
%FCN3 Summary of this function goes here
% Detailed explanation goes here
end
function Fcn4
%FCN4 Summary of this function goes here
% Detailed explanation goes here
end
در بالا چهار حالت رایج نوشتار توابع را ارائه کردیم.
- تابع اول هم ورودی و هم خروجی دارد.
- تابع دوم حالتی است که تنها ورودی دارد.
- تابع سوم تنها خروجی دارد و ورودی ندارد.
- تابع چهارم ورودی و خروجی ندارد.
توجه کنید که “,…” بیانگر اینست که میتوانیم به تعدادی که نیاز داریم ورودی و خروجی تعریف کنیم و بخشی از سینتکس تابع نیست.
ایجاد راهنما برای تابع در متلب
ایجاد راهنما برای تابع را با یک مثال ساده ارائه میکنیم. یک تابع ساده با 2 ورودی و 2 خروجی به صورت زیر تعریف میکنیم.
function [outputArg1, outputArg2] = Fcn(inputArg1,inputArg2)
%FCN is a sample of function syntax in MATLAB
% Detailed explanation of function
% can be explaned in here
% this cooment will not be shown in description
outputArg1 = inputArg1;
outputArg2 = inputArg2;
end
کد بالا را کپی کرده و با نام Fcn ذخیره کنید. پیشتر هم گفتیم که نام تابع با نام فایل آن باید یکسان باشد. حال از دستور help برای راهنمایی درباره این تابع استفاده میکنیم.
در تصویر فوق مشاهده میکنید که اولین خط کامنت در محدوده تابع به عنوان توضیح مختصر تابع در نظر گرفته میشود. همچنین کامنتهای بعد از آن برای شرح کامل تابع استفاده میشود. البته نباید بین این کامنتها فاصلهای ایجاد شود.
محدوده توضیحات تکمیلی در زیر دستور آغاز تابع تا اولین خط اجرایی است. این توضیحات که نوشتن آنها اجباری نیست، به درك نحوه عملکرد تابع کمک میکنند. نکات نوشته شده در سطر اول بعد از دستور تابع سطر با دستور lookfor قابل جستجو هستند. همچنین تمامی نکات نوشته شده در این محدوده، دستور help همانند تصویر بالا داده میشوند.
فراخوانی تابع در متلب
برای استفاده از تابعهایی که میسازیم باید توجه داشته باشیم که آنها در Directory یا Search Path متلب باشند. یعنی برای فراخوانی تابع Fcn که در پوشه Codes است، دایرکتوری متلب هم باید در پوشه Codes باشد و یا Codes در Search Path باشد. پس از اینکه از در دسترس بودن تابع مطمئن شدیم، نوبت به فراخوانی تابع میرسد.
#1
[outputArg1, outputArg2] = Fcn(inputArg1, inputArg2)
#2
[outputArg1, ~, outputArg3] = Fcn(inputArg1, inputArg2)
#3
Fcn(inputArg1, inputArg2)
#4
[outputArg1, outputArg2] = Fcn
#5
Fcn() % Or Fcn
#6
outputArg = Fcn
#7
Fcn InputArg1 InputArg2
حالت اول: در مواقعی که چند ورودی و چند خروجی داشته باشیم شاهد این حالت هستیم. در این حالت خروجیها باید در براکت [ ] تعریف شوند. استفاده از جداکننده “,” بین براکت اختیاری است اما بهتر است قرار گیرد.
حالت دوم: اگر تابع چند خروجی داشته باشد و همه مقادیر را نخواهیم، میتوانیم به جای آن خروجیها “~” قرار دهیم.
حالت سوم: در صورتی که تابع خروجی نداشته باشد و یا خروجیهایش را نیاز نداشته باشیم قبل از اسم تابع را خالی میگذاریم. (استثنائاً اگر تابع فقط یک خروجی داشته باشد، نتیجه این حالت همان خروجی است)
حالت چهارم: اگر تابع ورودی نخواهد و یا نخواهیم ورودی بدهیم، مقابل اسم تابع را یا خالی میگذاریم و یا ( ) قرار میدهیم.
حالت پنجم: اگر تابع ورودی/خروجی نخواهد ویا نخواهیم ورودی/خروجی داشته باشیم نوشتار به این صورت است.
حالت ششم: تابع یک خروجی داشته باشد و یا فقط خروجی اول را میخواهیم. در این حالت میتوان خروجی را بدون استفاده از براکت نیز تعریف کرد.
حالت هفتم: در این حالت تابع مانند یک دستور Command عمل میکند. ابتدا نام تابع نوشته میشود و سپس ورودیها. همانطور که مشاهده میکنید، در این حالت ورودیها با استفاده از فاصله (Space) جدا شدهاند. نکته بسیار مهم دیگر آنکه در این حالت از متغیرها نمیتوان استفاده کرد. همچنین تمامی کلماتی که مقابل اسم تابع نوشته میشوند، به صورت متن (از جنس Char) وارد تابع میشوند.
در تمامی حالات تعداد ورودیها و خروجیها متغیر است. اینجا صرفاً برای نمونه از دو ورودی و خروجی به عنوان نمایندهای از چند ورودی و خروجی آورده شدهاند. روشهای ارائه شده در بالا، روشهای فراخوانی مستقیم در متلب هستند. روش فراخوانی با استفاده از فانکشن هندل (Function handle) در ادامه توضیح داده میشود.
انواع تابع در متلب
چهار نوع تابع در متلب وجود دارد که هریک کاربرد و خاصیت متفاوتی دارند. فانکشنها میتوانند به صورت محلی، تودرتو، شخصی یا ناشناس تعریف شوند. سه نوع اول نوشتار مشابهی دارند اما نوشتار و تعریف تابع ناشناس کاملاً متفاوت است.
تابع محلی در متلب (Local Functions)
تا الان مشاهده کردیم که یک فانکشن را در یک m فایل با نام یکسان با تابع تعریف کردیم. اشاره کردیم که این تابع باید در search path یا directory متلب باشد تا امکان فراخوانی داشته باشد. در این حالت تنها یک تابع در فایل تعریف کرده بودیم اما امکان تعریف تابعها دیگر نیز فراهم است. برای مثال، یک تابع به نام LocalFunctionExample ایجاد میکنیم. درون این تابع، 2 تابع محلی تعریف میکنیم تا موارد مربوطه را انجام دهند. به کد زیر دقت کنید.
function LocalFunctionExample(inputarg)
LocalFcn1(inputarg)
LocalFcn2(inputarg)
end
function LocalFcn1(str)
disp([str ': LocalFcn1'])
end
function LocalFcn2(str)
disp([str ': LocalFcn2'])
end
این تابع را با نام خودش (یعنی LocalFunctionExample) ذخیره کرده و به صورت زیر فراخوانی میکنیم.
LocalFunctionExample('Hello From')
نتیجه به صورت زیر است.
Hello From: LocalFcn1
Hello From: LocalFcn2
در کار با توابع محلی، تنها تابع اصلی که همنام فایل است را میتوان در خارج از فایل فراخوانی کرد. مثلا اگر توابع داخلی localFcn1 و localFcn2 را فراخوانی کنیم، با خطا مواجه میشویم.
LocalFcn1('Hello From')
Undefined function or variable 'LocalFcn1'.
در نسخههای قدیمی متلب تنها میتوانستیم توابع محلی را در یک فایل مختص توابع تعریف کنیم. اما خوشبختانه از نسخه R2016b امکانی فراهم شد تا بتوانیم در یک اسکریپت نیز تابع محلی تعریف کنیم. در این حالت توابع در انتهای فایل تعریف میشوند و نام فایل نباید با نام توابع یکسان باشد.
اگر بخواهیم از توابع محلی در فایلهای دیگر نیز استفاده کنیم، باید از تابع localfunctions استفاده کنیم. این تابع که تنها باید در تابع اصلی استفاده شود، هندل توابع را به صورت یک بردار خروجی میدهد. میتوانیم خروجی این تابع را جز یکی از خروجیهای تابع اصلی بگذاریم تا در فایلهای خارجی از هندلها بهره ببریم.
تابع تودرتو در متلب (Nested Functions)
این قابلیت در متلب وجود دارد که در هر تابع، تابعی دیگر تعریف کنیم.
function [outputArg1, outputArg2] = ParentFunction(inputArg1, inputArg2)
outputArg1 = inputArg1;
NestedFunction;
outputArg2 = inputArg2;
function NestedFunction
inputArg2 = inputArg1 / inputArg2;
end
end
چون NestedFunction درون ParentFunction تعریف شده، مشابه فانکشنهای محلی، از بیرون به صورت مستقیم به این تابع دسترسی نیست. تفاوت اصلی این رویکرد با توابع محلی در scope یا محدوده عملکرد تابعهاست. که در بخش بعدی به آن میپردازیم.
تابع شخصی در متلب (Private Functions)
در مواقعی استفاده میشوند که میخواهیم دسترسی به یک تابع را محدود کنیم. پیش از این گفتیم برای فراخوانی یک تابع، باید در search path یا در دایرکتوری متلب باشد. در این صورت تابع در همه جا قابل استفاده خواهد بود. حال اگر بخواهیم یک تابع محدود به مجموعه مشخصی از اسکریپتها و توابع باشد از تابع شخصی استفاده میکنیم. اگر برنامهها و یا تابعهای ما در پوشه Parent قرار داشته باشند ابتدا یک پوشه با نام private ایجاد میکنیم. سپس در این پوشه تمامی تابعهای که قصد داریم “شخصی” شوند را وارد میکنیم. از نظر نوشتار و یا نحوه تعریف، توابع شخصی با تابعهایی که پیش از این اشاره کردیم تفاوتی ندارند. تنها تفاوت، محل قرارگیری فایل فانکشنهاست. این m فایلها در پوشه private هستند که خود در پوشه به اصطلاح “والد” قرار دارد. در پوشه والد یا parent کدهایی که به توابع شخصی نیاز دارند قرار دارد.
تابع ناشناس در متلب (Anonymous Functions)
این توابع دسته خاصی از توابع هستند. علاوه بر نوشتار، کاربرد و محدودیت متفاوتی دارند. مسئله بزرگی که درمورد دیگر توابع وجود دارد این است که امکان ذخیره آنها در متغیر وجود ندارد. یعنی امکان استفاده یک تابع به عنوان یک مقدار به صورت مستقیم وجود ندارد. دلیل آنهم اینست که تابع در متلب یک ساختار است و نه یک نوع داده (data type). تابعهای ناشناس از سوی دیگر، فانکشنهایی هستند که به صورت مقدار ذخیره میشوند. اما تفاوتی که دارند اینست که تنها یک دستور را اجرا میکنند. همچنین نام آنها، نام متغیری است که در آن ذخیره شدهاست.
variableName = @(inputArg1,inputArg2)expression;
مشابه قبل در این نوع تابع نیز محدودیتی در تعداد ورودیها وجود ندارد. در این نوع تابع محدوده عملکرد مشابه تابعهای تودرتو است و در فراخوانی مشابه دیگر تابعهاست. به مثال زیر که یک تابع ناشناس در متلب است دقت کنید.
sqr = @(x) x.^2;
a = sqr(5)
a =
25
فانکشن هندل (Function Handle) نیز نوعی تابع ناشناس در متلب است که در ادامه بیشتر با آن آشنا میشویم.
محدوده عملکرد در توابع
در پنجره workspace که به صورت پیشفرض، سمت راست برنامه متلب قرار دارد، مقدارهای موجود در حافظه را میبینیم. مقدارهایی که در این فضا قرار دارند در تمام بخش script در دسترس هستند. اما توابع، ساختارهایی هستند که قرار است فرآیندی را انجام دهند. به عبارت دیگر، مثلا یک تابع 3 ورودی میگیرد و با انجام چندین خط محاسبات، یک خروجی میدهد. پارامترهایی که در حین محاسبات بوجود میآیند، در فضای کاری ذخیره نخواهند شد.
اگر قرار باشد تمامی متغیرهایی که در تابع تعریف میشوند در فضای کاری باشند، مقدار زیادی از حافظه درگیر میشود. پس برای جلوگیری از اشغال بیمورد حافظه، تابعها و دیگر ساختارها محدوده بندی شدهاند. در فانکشنها محدودهبندیها وابسته به نوع تابع است. نکته مشترک برای همه آنها اینست که از خارج به مقدارهای داخل تابع دسترسی وجود ندارد. اما در ادامه جهت برعکس، یعنی دسترسی تابع به مقدارهای خارج از آن را بررسی کنیم.
محدوده دسترسی تابعهای محلی، تودرتو و شخصی
این توابع امکان دسترسی به مقدارهای یکدیگر ندارند اما امکان دسترسی گرفتن به فضای کاری global را دارند. علاوه بر آن امکان فراخوانی تابعهای دیگر (در همسایگی، در search path و دایرکتوری) را دارند.
محدوده دسترسی تابعهای تودرتو و ناشناس
این توابع علاوه بر محدودهی خود، به محدوده به اصطلاح parent خود نیز دسترسی دارند. به همین دلیل است که در مثالها، متغیرهای خارج از محیط خودشان را فراخوانی میکنند. همانگونه که در مثال تابعهای تودرتو دیدیم مقدار متغیر inputArg2 توسط تابع NestedFunction تغییر پیدا کردهاست. این حالت تنها بین scope درونی و scope والد برقرار شدهاست. اما همانطور که گفته شد این امکان به صورت پیش فرض بین محدوده تابع و محدوده فضای کاری وجود ندارد. پس هیچ ارتباطی بین دو متغیر همنام در تابع و در workspace وجود ندارد. البته درصورت لزوم، امکان برقراری ارتباط وجود دارد. در ادامه نحوه برقراری این ارتباط را بیان میکنیم.
دستورات اختصاصی توابع
در متلب دستوراتی برای توابع تعبیه شدهاند که عملکرد پیشفرض توابع را تغییر دهند. دو دستور ابتدایی که Global و Persistent هستند مربوط به محدوده عملکرد و حافظه هستند و دستور Return نحوه اجرای تابع را تغییر میدهد.
دستور Global در متلب
function alter
global A
B = 'C';
A = B;
end
پس از ذخیره تابع با نام alter، کد زیر را در پنجره فرمان اجرا میکنیم.
clc,clear global;
global A;
A = 'A';
B = 'B';
alter;
disp(A);
C
disp(B)
B
در این مثال متغیر A با استفاده از دستور global هم در پنجره فرمان و هم در تابع معرفی شدهاست. مشاهده میکنیم که مقدار متغیر A با فراخوانی alter عوض شدهاست اما این اتفاق برای B نیفتاده است. نکته دیگر اینکه برای حذف این متغیرها از فضای گلوبال باید از دستور clear global مشابه بالا استفاده کنیم.
دستور Persistent در متلب
اشاره کردیم که متغیرهایی که درون تابع هستند با هربار اجرای برنامه مجدداً تعریف و مقدار گذاری میشوند. اگر بخواهیم متغیری در تابع تعریف کنیم که با اجرای مجدد تابع حذف نشود از این دستور استفاده میکنیم. میتوان با دستوراتی، متغیری که به این روش تعریف شده را حتی پس از اجرا clear در حافظه نیز نگه داشت.
دستور Return در متلب
در دیگر زبانهای برنامهنویسی این دستور در توابع دو کاربرد دارد. اول خروجی دادن مقدارهای مورد نظر و دوم جلوگیری از اجرای ادامه تابع. اما در متلب مقدار خروجی باید تا قبل این دستور مشخص شود. این دستور تنها مانع اجرای ادامه دستورات تابع میشود. بنابراین آخرین مقداری که خروجیها تا قبل از return داشتهاند، به بیرون از تابع ارسال میشود.
متغیرهای پیشساخته در تابع
در برنامه متلب برای توابع به صورت پیش فرض چهار متغیر وجود دارد که خارج از تابع بیکاربرد اند. این چهار متغیر برای بررسی مقدارهای ورودی و خروجی تابع استفاده میشوند. پیش از این اشاره کردیم که ممکن است تعداد ورودیها/خروجیها متغیر باشد. اما با این سطح از انعطاف، باید راهکاری برای مدیریت مقدارها بوجود میآمد که در ادامه به آنها میپردازیم.
متغیر nargin
این متغیر تعداد ورودیهای تابع را مشخص میکند.
متغیر nargout
مشابه nargin، این متغیر تعداد خروجیهای تابع را مشخص میکند.
متغیر varargin در متلب
هنگامی که ورودیهای تابع از نظر تعداد نامشخص باشند، واضح است که به روش مرسوم مقدارهای ورودی دریافت نمیشوند. تمامی مقدارهایی که خارج از محدوده مورد انتظار هستند در متغیر varargin ذخیره میشوند. در ابتدا باید برای متلب مشخص کنیم که تابع امکان دریافت تعداد نامشخص ورودی را دارد. برای اینکار این متغیر را در ورودی قرار میدهیم. با اینکار میتوانیم درون تابع از مقدارهای آن (در صورت وجود) استفاده کنیم. به مثال زیر دقت کنید.
function VariableInputArguments(inputArg1, inputArg2, varargin)
disp(inputArg1);
disp(inputArg2);
disp(varargin)
end
پس از ذخیره تابع، آن را با دو ورودی فراخوانی میکنیم.
VariableInputArguments('One','second')
One
second
حال آن را با پنج ورودی فراخوانی میکنیم.
VariableInputArguments('One', 2, 'third', [4,5,6,7], @(x)x^2-2*x+1)
One
2
{'third'} {[4 5 6 7]} {@(x)x^2-2*x+1}
مشاهده میشود که ورودیهای دوم به بعد را یکجا باهم نمایش داده است. در این مثال حداقل دو ورودی لازم است و ورودیهای پس از آن اختیاری هستند و وارد varargin میشوند. اگر تمامی ورودیها اختیاری بودند، میتوانیم تنها varargin را به عنوان ورودی تابع تعریف کنیم.
متغیر varargout در متلب
متغیر varargout مشابه متغیر varargin است با این تفاوت که کاربرد آن برای خروجی تابع است. یعنی اگر تعداد خروجیهای تابع مشخص نباشد (متغیر باشد) از این دستور استفاده میکنیم.
فانکشن هندل در متلب (Function Handle)
در بخش توابع ناشناس به فانکشن هندل اشاره کردیم. گفتیم که چون تابع یک ساختار است امکان انتقال آن به صورت یک مقدار وجود ندارد. اما باید راهکاری برای انتقال و فراخوانی فانکشن وجود داشته باشد. برای مثال روش حل معادلات به روش محاسبات عددی تماماً بر اساس توابعی هستند که کاربر وارد میکند. چون روشهای حل ثابت هستند، حلکننده (solver) باید به تابع کاربر مقدارهایی وارد کند و خروجی آن را دریافت کند. پیش از این در تمامی مثالها نام تابع برای ما مشخص بوده است. همچنین موردی وجود نداشته که بخواهیم تابعی را فراخوانی کنیم که حتی نام آن را نمیدانیم. حتی اگر کاربر نام تابع را هم به عنوان ورودی بدهد، راهی امنی برای فراخوانی آن تابع وجود ندارد. راهکاری در متلب تعبیه شده تا تابع را در یک متغیر نگه داشته و همانند تابع anonymous فراخوانی کند. برای اینکار کافیست تا پیش از نام تابع مورد نظرمان تنها یک @ قرار بدهیم. توجه کنید که نباید به تابع ورودی دهیم.
برای مثال انتگرال عبارت x2 + 2x + 1 را با استفاده از تابع intergral محاسبه میکنیم. برای این کار ابتدا تابع زیر را تعریف و با نام IntExp ذخیره میکنیم.
function fx = IntExp(x)
fx = x.^2 + 2.*x + 1;
end
سپس در پنجره فرمان عبارت زیر را مینویسیم.
integral(@IntExp, 0, 10)
ans =
443.3333
تمرینات این جلسه
در انتهای این جلسه 3 تمرین متلب مربوط به مباحث این جلسه ارائه شده است. لطفا این تمرینها را حل کرده و با پاسخ آن مقایسه کنید. پاسخ تمرینات متلب این جلسه در کانال تلگرام متلب پلاس منتشر میشود. از آیکونهای سمت راست صفحه میتوانید در این کانال عضو شوید.
تمرین اول) تابعی بنویسید که یک عدد (شعاع) به عنوان ورودی گرفته محیط و مساحت دایره متناظر را محاسبه کند.
تمرین دوم) مثال قبل را با استفاده از یک تابع اصلی و دو تابع محلی بنویسید. توابع محلی برای محاسبه محیط و مساحت بکار روند.
تمرین سوم) تابعی بنویسید که مختصات دو نقطه (در صفحه) را دریافت کرده و فاصله بین آنها را محاسبه کند.
جمعبندی
خب، جلسه نوزدهم از سری جلسات آموزش متلب به پایان رسید. این جلسه درباره تابع در متلب به طور کامل صحبت کردیم. یادگیری و استفاده از تابع در متلب کمک زیادی به اجرای بهتر برنامهها میکند. همچنین استفاده از توابع در برنامههای پیچیده و بزرگ امری اجتناب ناپذیر است. چرا که خوانایی و رفع خطای برنامه را افزایش میدهد. به همین دلیل حتما مباحث این جلسه را به دقت فرا بگیرید. در انتها چند تمرین برای یادگیری بیشتر به شما واگذار کردیم که پاسخ آنها در کانال تلگرامی متلب پلاس وجود دارد. بی صبرانه منتظر نظرات، سوال و ابهامات شما عزیزان هستیم. سعی میکنیم تا هرگونه سوال یا ابهامی که در این باره دارید را پاسخ دهیم.
توصیه میشود که حتما تمرینات این جلسه را انجام بدید و اگر سوال و ابهامی دارید در بخش نظرات (پایین همین صفحه) به ما بگید. از فهرست سمت راست هم میتونید به بقیه جلسات دسترسی داشته باشید.
3 Comments
به گفتگوی ما بپیوندید و دیدگاه خود را با ما در میان بگذارید.
درود. مطالب خیلی ساده و کاربردی بیان شده. فقط ای کاش یک PDF با فهرست پویا (Book Marks) از تمامی مطالب ایجاد می کردید و برای دانلود میذاشتید.
سلام و عرض ادب
محمد جان خیلی ممنونیم از پیشنهادت. حتما این مورد رو در آینده به مطالب آموزش متلب اضافه میکنیم.
آره واقعا خیلی خوب میشه اگه اضافه کنید