ورود ثبت

ورود به بخش کاربری

نام کاربری *
رمز عبور *
مرا به خاطر بسپار
    جمعه, 01 دی 1396 ساعت 03:57

    جلسه ششم - توابع در Matlab

    نوشته شده توسط

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

    نحوه تعریف یک تابع به صورت عمومی:

    function [out1,out2, ..., outN] = myfun(in1,in2,in3, ..., inN)

    مثال:

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

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

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

    خطوطی که با % شروع میشوند به عنوان راهنمای کد نویسی استفاده می شوند و  این خطوط هنگام تایپ دستور help  نمایش داده می شوند

    help mymax

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

    This function calculates the maximum of the

     five numbers given as input

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

    mymax(34, 78, 89, 23, 11)

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

    ans = 89

    توابع ناشناس

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

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

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

    نحو ایجاد یک تابع ناشناس از یک عبارت است از:

    f = @(arglist)expression

    مثال

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

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

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

    result1 = power(7, 3)

    result2 = power(49, 0.5)

    result3 = power(10, -10)

    result4 = power (4.5, 1.5)

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

    result1 =  343

    result2 =  7

    result3 =  1.0000e-10

    result4 =  9.5459

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

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

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

    مثال

    حالا بیایید یک تابع به نام quadratic بنویسیم که ریشه های یک معادله درجه دوم را محاسبه کند. این تابع به سه ورودی(ضرایب معادله) نیاز دارد و دو ریشه را برمی گرداند.

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

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

    %this function returns the roots of

    % a quadratic equation.

    % It takes 3 input arguments

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

    %constant term

    % It returns the roots

    d = disc(a,b,c);

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

    x2 = (-b - d) / (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)

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

    ans = 0.7321

    توابع تو در تو

    شما می توانید توابع را در داخل یک تابع دیگر نیز تعریف کنید. این ها توابع تو در تو نامیده می شوند.

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

    function x = A(p1, p2)

    ...

    B(p2)

       function y = B(p3)

       ...

       end

    ...

    End

    مثال

    بیایید تابع قبل را بازنویسی کنیم:

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

    function [x1,x2] = quadratic2(a,b,c)

    function disc  % nested function

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

    end % end of function disc

    disc;

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

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

    end % end of function quadratic2

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

    quadratic2 (2،4، -4)

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

    ans = 0.73205

    توابع خصوصی

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

    مثال

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

    یک زیر پوشه به نام private  در مسیر فایل اصلی ایجاد کنید فایل تابع با نام disk.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 [x1,x2] = quadratic3(a,b,c)

    %this function returns the roots of

    % a quadratic equation.

    % It takes 3 input arguments

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

    %constant term

    % It returns the roots

    d = disc(a,b,c);

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

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

    end % end of quadratic3

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

    quadratic3(2,4,-4)

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

    ans = 0.73205

    شاد و موفق باشید

    خواندن 318 دفعه آخرین ویرایش در یکشنبه, 01 بهمن 1396 ساعت 09:57
    محتوای بیشتر در این بخش: « جلسه پنجم - معرفی ماتریس ها در Matlab
    © هر گونه کپی برداری و نشر غیر قانونی مورد پیگرد قانونی قرار می‌گیرد