• MATLAB的函数类型(5种)

    本节介绍 MATLAB 的 5 种函数类型,分别为:主函数、子函数、嵌套函数、私有函数和重载函数。

    主函数

    通常 M 文件中的第一个函数为主函数,主函数后可以是任意数量的子函数。主函数可以被该文件之外的其他函数调用,主函数的调用是通过存储该函数的 M 文件的文件名进行的。

    子函数

    M 文件中可以包括多个函数,除主函数之外的其他函数称为子函数。子函数只能被主函数或该文件内的其他子函数调用。每个子函数以函数定义语句开始,直至下一个函数的定义或文件的结尾。各个子函数以任意顺序出现,但主函数必须最先出现。

    示例1

    主函数和子函数,具体程序如下:

    function [avg, med] = newstats(u)    % 主函数
    % NEWSTATS Find mean and median with internal functions.
    n = length(u);
    avg = mean(u, n);
    med = median(u, n);
    function a = mean(v, n)    % 子函数
    % Calculate average.
    a = sum(v)/n;
    function m = median(v, n)    % 子函数
    % Calculate median.
    w = sort(v);
    if rem(n, 2) == 1
        m = w((n+1) / 2);
    else
        m = (w(n/2) + w(n/2+1)) / 2;
    end

    当在 M 文件中调用函数时,系统首先判断是否为子函数,然后判断是否为私有函数,最后判断其是否为当前目录下的标准 M 文件函数或者系统内置函数。

    嵌套函数

    函数体可以定义其他的函数,这种内部函数称为嵌套函数。当 M 文件存在一个或多个嵌套函数时,M 文件中的所有函数必须以 end 结束。

    嵌套函数的语法如下:

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

    每个函数可以嵌套多个函数,通常为平级嵌套结构和多层嵌套结构。

    示例2

    平级嵌套结构,具体程序如下:

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

    上面示例中,函数 A 嵌套了函数 B 和函数 C。

    示例3

    多层嵌套结构,具体程序如下:

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

    上面示例中函数 A 嵌套了函数 B,函数 B 嵌套了函数 C。

    一个嵌套函数可以被下列函数调用。

    • 该嵌套函数的上一层函数。
    • 同一母函数下的同级嵌套函数。
    • 任一低级别的函数。

    示例4

    嵌套函数的调用,具体程序如下:

    function A(x, y)    % Primary function
    B(x, y);
    D(y);
        function B(x, y)    % Nested in A
        C(x);
        D(y);
            function C(x)    % Nested in B
            D(x);
            end
        end
        function D(x) % Nested in A
        E(x);
            function E(x) % Nested in D
            ...
            end
        end
    end

    示例中函数 A 可以调用函数 B 和函数 D,但不能调用函数 C 和函数 E;函数 B 可以调用函数 D 和函数 C,函数 D 可以调用函数 B 和函数 E;函数 C 可以调用函数 B 和函数 D。

    私有函数

    私有函数是指位于 private 目录下的 M 文件函数。私有函数的构造与普通 M 函数完全相同,私有函数只能被 private 目录的上一级目录下的 M 函数文件调用,而不能被其他目录下的任何 M 函数、M 脚本文件调用,也不能被上一级目录下的 M 脚本文件调用。

    重载函数

    函数重载允许多个函数使用相同的函数名、不同的输入变量数据类型。函数调用时,系统根据函数输入变量的数据类型选择对应的函数。

更多...

加载中...