• MATLAB函数


    MATLAB函数

    在MATLAB中,函数定义在单独的文件。函数和函数的文件名应该是相同的。

    函数是一起执行任务的一组语句。

    函数在自己的工作空间进行操作,被称为本地工作区,独立的工作区;在 MATLAB 命令提示符访问,这就是所谓的基础工作区的变量。

    函数可以接受多个输入参数和可能返回多个输出参数。

    函数语句的语法是:

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

    详细例子

    下述有个 mymax 函数,它需要五个数字作为参数并返回最大的数字。

    建立函数文件,命名为 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 函数有5个输入参数和一个输出参数。

    注释行语句的功能后提供的帮助文本。这些线条打印,当输入:

    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 语句定义一个内联函数

    它由一个单一的 MATLAB 表达式和任意数量的输入和输出参数。

    在MATLAB命令行或在一个函数或脚本可以定义一个匿名函数。

    这种方式,可以创建简单的函数,而不必为他们创建一个文件。

    建立一个匿名函数表达式的语法如下:

    f = @(arglist)expression

    详细例子

    在这个例子中,我们将编写一个匿名函数 power,这将需要两个数字作为输入并返回第二个数字到第一个数字次幂。

    在MATLAB中建立一个脚本文件,并输入下述代码:

    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 将包含的主要 quadratic 函数和子函数 disc 来计算判别。

    在MATLAB中建立一个函数文件 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
    

    MATLAB嵌套函数

    在这个机体内另一个函数,可以定义函数。这些被称为嵌套函数。

    嵌套函数包含任何其他函数的任何或所有的组件。

    嵌套函数被另一个函数的范围内定义他们共享访问包含函数的工作区。

    嵌套函数的语法如下:

    function x = A(p1, p2)
    ...
    B(p2)
       function y = B(p3)
       ...
       end
    ...
    end

    详细例子

    我们重写前面例子的 quadratic 函数,但是,这一次的 disc 函数将是一个嵌套函数。 

    在MATLAB中建立一个函数文件 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.7321
    

    MATLAB私有函数

    一个私有函数是一个主要的函数,是只看得见一组有限的其它函数。

    如果不想公开的执行的一个函数,可以创建私有函数。

    私有函数驻留特殊的名字私人的子文件夹中。

    他们是可见的,只有在父文件夹的函数。

    详细例子

    重写 quadratic 函数。然而,这时计算​​的判别式 disc 函数,是一个私有函数。

    在MATLAB中建立一个子文件夹命名为私人工作目录。它存储在以下函数文件 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 [x1,x2] = quadratic3(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 quadratic3

    可以从命令提示符调用上面的函数为:

    quadratic3(2,4,-4)

    MATLAB执行上面的语句,返回以下结果:

    ans =
        0.7321
    

    MATLAB全局变量

    全局变量可以由一个以上的函数共享。对于这一点,需要将变量声明为global ,就可以在所有的函数可使用。

    如果想访问该变量。从基工作区,然后在命令行声明的变量。

    全局声明必须出现在变量中。实际上是使用功能。这是一个很好的做法是使用大写字母为全局变量的名称,以区别于其他变量。

    详细例子

    创建一个函数文件名为 average.m ,输入下述代码:

    function avg = average(nums)
    global TOTAL
    avg = sum(nums)/TOTAL;
    end

    在MATLAB中建立一个脚本文件,输入下面的代码:

    global TOTAL;
    TOTAL = 10;
    n = [34, 45, 25, 45, 33, 19, 40, 34, 38, 42];
    av = average(n)

    运行该文件,显示以下结果:

    av =
       35.5000

  • 相关阅读:
    如何解决无法npm下载electron依赖的
    dm8备份与还原
    Linux新漏洞曝光,居然又双叒是提升权限漏洞
    mysql面试题12:讲一讲MySQL中什么是半同步复制?底层实现?
    sha256为什么不可逆,sha256的安全性如何
    springboot 2.0 集成 shiro 和 thymeleaf-extras-shiro 2.0 使用过程遇到的问题
    华为机试 - 5键键盘
    远勤山丨于无声处听惊雷——写在远航汽车投产下线之际
    Prometheus监控K8S
    Zookeeper系列——6Zookeeper的分布式锁及Leader选举原理分析
  • 原文地址:https://blog.csdn.net/std86021/article/details/128072972