function函数嵌套 matlab_MATLAB嵌套函数

嵌套函数的定义

嵌套函数,即nested function,就是嵌套在函数体内部的函数。嵌套函数可以出现在一个函数体内部的任何位置,开始以function声明,结束的时候加上end。需要说明的是包含有嵌套函数的函数,无论它是主函数、子函数、嵌套函数,都应该在末尾的地方加上end。下面的代码是一个简单的嵌套函数的例子

例1

function r=MyTestNestedFun(input)

a=5;

c=sin(input)+tan(input);

function y=nestedfun(b)

y=a*c+b;

end

r=nestedfun(5);

end

>> r=MyTestNestedFun(6)

r =

2.1479

结果是这样得到的:调用MyTestNestedFun后,程序依次执行a=5;c=sin(input)+tan(input);然后又调用nestedfun这个嵌套函数,此时b=5,而嵌套函数所在的函数中的a,c对嵌套函数是可见的。r=a*c+b=5*(-0.5704)+5=2.1479

嵌套函数种类

嵌套函数可以分为单重嵌套函数和多重嵌套函数。先说单重嵌套函数,这样的函数嵌套在别的函数体内,自己内部不再有嵌套的函数。如上例示例。一个函数里可以有一个或者多个单重嵌套函数。

多重嵌套函数,这样的函数嵌套在别的函数体内,同时自己内部又嵌套着别的另一层或几层函数。同样一个函数里可以有一个或者多个多重嵌套函数。如下

例2

function x=A(p1,p2)

...

function y1=B1(p3)

...

function z1=C1(p4)

...

end

...

end

...

function y2=B2(p5)

...

function z2=C2(p6)_

...

function w=D(p7)

...

end

end

end

end

该函数A(p1,p2)内部有两个嵌套函数,分别B1(p3)和B2(p5),而B1(p3)和B2(p5)分别是二重和三重嵌套函数。

嵌套函数的变量作用域

例1

function r=NestedFunctionVarScopeDemo(a)

b=a+1;

function Nested1

c=b+1;

function Nested11

d=c+a;

end

Nested11;

end

Nested1

r=d;

end

运行上面的代码,譬如

r=NestedFunctionVarScopeDemo(1)

r =

4

上述代码有一个二重嵌套函数Nested1,它内部还包含一个嵌套函数Nested11,整个函数的执行过程如下:

传入变量a=1,计算b的值,b=2;遇到Nested1的函数定义,往下是调用Nested1的语句,进入Nested1之后先计算c的值&

你可能感兴趣的:(function函数嵌套,matlab)