匿名函数,子函数和嵌套函数

一、匿名函数 anonymous function

匿名函数基本定义

fhandle = @(arglist)expr

expr 具体的函数表达式
arglist 指定的函数自变量

匿名函数的种类

(1)单变量匿名函数

f = @(x)x.^2;

含有参数、参数值已知的单个自变量的匿名函数

a = 10;
b = 20;
f = @(x)a*x + b;
f(1:6)

(2)多变量匿名函数

g = @(x,y)x.^2+y.^2;

与单变量相同
a = 1;
b = 2;
g = @(x,y)a*x + y.^b;
g(1:5;1:5) %x,y 的值一一对应

(3)单重匿名函数

只有一个@引导

(4)多重匿名函数

f = @(a,b)@(x)a*x + b

a,b 外层变量
x 内层变量

每个@符号里的变量的作用域都是一直到表达式的结尾

二、子函数 sub-function

函数M文件中第一个“function”引导的是主函数,调用文件时总是从主函数开始执行
子函数是指在同一函数文件中主函数之后的由“function”引导的函数,必须位于主函数之后
子函数可以被主函数和其他子函数调用,子函数也可以调用主函数,应避免死循环产生

三、嵌套函数 nested function

嵌套函数的定义

嵌套在函数体内部的函数
包含有嵌套函数的函数,无论是主函数、子函数或者嵌套函数,都应在末尾加上end

嵌套函数的种类

(1)单重嵌套函数

嵌套在别的函数体内部,自己的内部不再有嵌套函数

(2)多重嵌套函数

嵌套在别的函数体内,同时自己内部又嵌套这别的另一层或者几层函数

function x = A(p1,p2)
...
    function y1 = B1(p3)
    ...
        function z1 = C1(p4)
        ...
        end
    ...
    end
...
    function y2 = B2(p5)
    ...
`       function z1 = C2(p6)
        ...
            function w = D(p7)
            ...
            end
        end
    end
end

嵌套函数的变量作用域

父函数和嵌套在其内的函数,它们各自的变量是可以拿过来直接用的,
而父函数访问嵌套在其内的函数里的变量则必须经过调用后才可以用


版权声明:本文为qq_33917378原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。