آکادمی سیم پاور

گام شانزدهم: توابع در متلب

گام شانزدهم: توابع در متلب

توابع مجموعه ای از دستورات است که یک وظیفه را اجرا می کند.در متلب، توابع در فایل های متفاوت مشخص شده اند. نام فایل و تابع باید یکسان باشد.

توابع بر روی متغیر ها در فضای کاری خودشان عمل می کنند، که فضای کاری محلی نامیده می شود،دسترسی به فضای کاری جداگانه در خط فرمان  متلب  فضای کاری پایه نامیده می شود.

توابع می توانند بیش از یک آرگومان ورودی را بپذیرند و ممکن است بیش از یک آرگومان خروج را برگردانند.

نحوه اجرا در متلبی از عبارت توابع  این گونه است:

482

مثال

تابع زیر mymax نامیده می شود  که باید در یک فایل به اسم  mymax.m نوشته شود. ممکن است پنج عدد آرگومان را به عنوان ورودی بگیرد و بزرگترین اعداد را برگرداند.

یک فایل ایجاد نمایید، اسم آن را mymax بگذارید و کد زیر را در آن تایپ نمایید:

function max = mymax(nl, n2, n3, n4, n5)

%thisfunction calculates the maximum of the

% five numbers given as input

max = nl;

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 شروع می شود.این نام تابع و آرگومتن ها را می دهد.در مثال ما، تابع  mymax پنج آرگومان ورودی و یک آرگومان خروجی دارد.

خطوط فرمان  که بعد از عبارت  function می آیند متن کمکی را فراهم می کنند.زمانی که شما تایپ می کنید این خطوط چاپ می شوند:

help max

متلب دستورات بالا را اجرا خواهد کرد و نتیجه زیر را برمیگرداند:

483

شما می توانید تابع را به این صورت فراخوانی کنید:

lmymax(34,78,89,23,l)


توابع بی نام ( نام مستعار)

متلب دستورات بالا را اجرا خواهد کرد و نتیجه زیر را برمیگرداند:

484

توابع بی نام مانند توابع درون خطی در زبان های برنامه نویسی مرسوم هستند، که درون عبارت متلب مجرد تعریف  شده اند. شامل دستورات  و تعدادی ازآرگومان های  ورودی و خروجی  متلب است.

شما می توانید  توابع مستعار  راست را در خط فرمان متلب یا  در یک تابع یا اسکریپت تعریف کنید.

با این راه شما می توانید تابع ساده ای بدون داشتن یک فایل برای آن ها ایجاد کنید.

نحوه اجرا در متلب برای ایجاد یک تابع مستعار از عبارت اینگونه است:

490

مثال

در این مثال، ما تابع مستعاری به نام power خواهیم نوشت، که  تعداد دو ورودی را میگیرد و  و رقم اول به توان رقم دوم را برمی گرداند.

یک فایل اسکریپت ایجاد نمایید و کد زیر را در آن تایپ کنید:

power =@(x, n) x.9n;

resultl = power(7,3)

result2 = power(49,0.5)

result3 = power(lo,-10)

result4 = power (4.5,1.5)

زمانی که شما فایل را اجرا می کنید، این نمایش می یابد:

491

توابع فرعی و اصلی

هر تابعی نسبت به تابع مستعار باید درون یک فایل تعریف شود.هر تابع فایل شامل تابع اصلی موردنیاز است که اول دیدار می شودو هر تعداد  تابع – فرعی اختیاری  بعد از تابع اصلی می آید و استفاده می شود.

توابع اصلی می تواند خارج از فایل تعریف شده آن ها فراخوانی شود،در هریک از خط فرمان یا توابع دیگر، اما توابع فرعی نمی توانند با خط فرمان یا دیگر توابع ،خارج از فایل تابع فراخوانی شوند.

توابع فرعی تنها با توابع اصلی قابل مشاهده اند و دیگر توابع فرعی مطابق با فایل توابع آن ها تعریف می شوند.

مثال

اجازه دهید تابعی با نام quadratic بنویسیم  که ریشه معادل quadratic  را محاسبه می کند.این تابع سه ورودی ، co – efficient  quadratic،co- efficient خطی و تابع فرعی disc را میگیرد، که جداگانه محاسبه می شوند.

یک فایل تابع quadratic.m ایجاد نمایید و کد زیر را در آن تایپ کنید:

function[xl,x2]= quadratic(a,b,c)

%thisfunction returns the roots of

% a quadratic equation.

%lt takes 3 input arguments

% which are the co-efficients of x2, x and the

%constant term

%lt returns the roots

d = disc(a,b,c);

xl =(-b + d)/(2*a);

x2 = )-b – dl / (2*a);

end%end of quadratic

function dis = disc(a,b,c)

%function calculates the discriminant

dis = sqrt(b^2-4*a*c);

end%end of sub-function

شما می توانید تابع بالا را از خط فرمان فراخوانی کنید:

quadratic(2,4,-4)

متلب دستورات بالا را اجرا خواهد کرد و نتایج زیر را برمیگرداند:

492

توابع تو در تو

شما می توانید تابعی درون بدنه تابع دیگر تعریف کنید.آن ها توابع تو در تو نامیده می شوند.تابع تو در تو a شامل هر یا تمامی اجزای تابع ذدیگری است.

توابع تو در تو در  حوزه ای از توابع دیگر تعریف شده اند و آن ها دسترسی به  فضای کاری توابع در برگرفته را  به اشتراک می گذارند.

تابع تو در تو با نحوه اجرا در متلبزیر در ادامه آمده است:

493

مثال

اجازه دهید دوباره تابع quadratic را بنویسیم، از مثال قبلی، اگرچه، در این صورت تابع disc تابع تو درتو خواهد بود.

یک تابع فایل quadratic2.m ایجاد نمایید و کد زیر را در آن تایپ کنید:

function[xl,x2]= quadfatic2(a,b,c)

function disc % nested function

d = sqxt(b^2-4*a*c);

end%end of function disc

disc;

xl =(-b + d) / (2*a);

x2 = )-b – d) / (2*a):

end%end of function quadxatic2

شما می توانید تابع بالا را از خط فرمان به این صورت فراخوانی کنید:

quadratic2(2,4,-4)

متلب عبارت بالا را اجرا خواهد کرد و نتیجه زیر را برمی گرداند:

494

 

توابع خصوصی

تابع خصوصی یک تابع اصلی است  که تنها به یک گروه از توابع دیگر محدود شده است اگر شما نمی خواهید تابع(ها)  نمایش داده شود، شما می توانید آن ها را مانند تابع خصوصی ایجاد کنید.

تابع خصوصی  در subfolders با اسم خصوصی قرار داده می شود.

مثال

اجازه دهید دوباره تابع quadratic را بنویسیم. در این  صورت، تابع  disc به صورت جداگانه محاسبه می شود، که یک تابع خصوصی خواهد بود.

یک زیر پوشه با اسم خصوصی در فهرست کارتان ایجاد نمایید. تابع زیر تابع فایل disc.m را در آن ذخیره می کند:

function dis = disc(a,b,c)

%function calculates the discriminant

dis = sqrt(b^2-4*a*c);

end%end of sub-function

یک تابع quadratic3.m در فهرست کاری ایجاد نمایید و کد زیر را در آن تایپ کنید:

function[xl,x2]= quadratic3(a,b,c)

%thisfunction returns the roots of

% a quadratic equation.

%lt takes 3 input arguments

% which are the co-efficients of x2, x and the

%constant term

%lt returns the roots

d = disc(a,b,c);

xl =(-b + d)/(2*a);

x2 =(-b – d)/(2*a);

end%end of quadratic3

شما می توانید تابع بالا را از خط فرمان به این صورت فراخوانی کنید:

quadratic(2,4,-4)

متلب دستورات بالا را اجرا خواهد کرد و نتیجه زیر را بر می گرداند:

495

متغیرهای عمومی

متغیرهای عمومی می توانند در بیش از یک تابع به اشتراک گذاشته شوند.به همین دلیل، شما به اعلان متغیرهای عمومی در تمام توابع نیاز دارید.

اگر شما می خواهید به متغیرهای فضای کاری اصلی دسترسی داشته باشید، در آن صورت متغیر را در خط فرمان اعلان کنید.

اعلان متغیرهای عمومی باید قبل از اینکه متغیرها در تابع به صورت حقیقی استفاده شوند انجام شود. یک تمرین خوب برای حروف بزرگ برای اسامی متغیرهای عمومی برای تشخیص آن ها از متغیرهای دیگر  استفاده شده است.

مثال

اجازه دهید یک فایل تابع با نام  average.m ایجاد کنیم و کد زیر را در آن تایپ نماییم:

496

یک فایل اسکریپت ایجاد کنید و کد زیر را  در آن تایپ کنید:

global total;

total =lo;

n =[34,45,25,45,33,l9,40,34,38,42];

av = average(n)

زمانی که شما فایل را اجرا می کنید، نتیجه زیر نشان داده خواهد شد:

497

 

 

خرید کتاب 28 گام موثر در فتح متلب

سعید عربعامری
من سعید عربعامری نویسنده کتاب 28 گام موثر در فتح متلب مدرس کشوری متلب و سیمولینک و کارشناس ارشد مهندسی برق قدرتم . بعد از اینکه دیدم سایتهای متعدد یک مجموعه کامل آموزش متلب و سیمولینک ندارند به فکر راه اندازی این مجموعه شدم
http://sim-power.ir

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *