matlab 各类函数区别定义

时间:2024-02-25 17:33:23

主函数(Primary function)    

l  (一般)与保存文件同名的那个函数;

l  在当前目录、搜索路径上,列出文件名的函数;

l  在指令窗中或其他函数中,可直接调用的函数;

l  函数M文件中,由第一个function 引出的函数。

(  采用 help functionname 可获取函数所携带的帮助信息。)

子函数(Subfunction)

l  子函数不独立存在,只能寄生在主函数体内;

l  在函数文件中,由非第一个function引出的函数

l  一个M函数文件可以包含多个子函数;

l  子函数只能被其所在的主函数和其他“同居”子函数调用;

l  子函数可以出现在主函数体的任何位置,其位置先后与调用次序无关。

l  在M函数文件中,任何指令通过“名字”对函数进行调用时,子函数的优先级仅次于内装函数。

同一文件的主函数、子函数的工作空间都是彼此独立的。各函数间的信息,或通过输入输出宗量传递,或通过全局变量传递,或通过跨空间指令传递。

l  采用help functionname/subfunctionname 可获取子函数所带的帮助信息。

 

嵌套函数(Nested function)

l  在函数文件中,由非第一个function引出并以end为结尾的函数

l  一个M函数文件可以包含多个嵌套函数;

l  主函数一旦包含嵌套函数,就必须在整个函数文件的结尾使用end,以结束主函数及其所有附带的函数

l  嵌套函数只能被其“直系父、子”或“亲兄弟”函数调用;

l  采用help functionname/nestedfunctionname 可获取嵌套函数所带的帮助信息。

 

嵌套函数的调用规则

 1 function A(x, y)             % 主函数
 2     B(x, y);                        % 只能调用“子B”;不能调用“孙C”
 3     D(y);                            % 只能调用“子D”;不能调用“孙E”
 4     function B(x, y)     % “子”嵌套函数 B
 5     C(x);                        % 调用“子C”
 6     D(y);                        % 调用“兄D”;不能调用“侄E”
 7         function C(x)     % “孙”嵌套函数 C
 8         D(x);                    %    调用“叔D”
 9         end
10     end
11     function D(x)         % “子”嵌套函数 D
12         E(x);                        % 调用“子E”
13         function E             % “孙”嵌套函数 E
14         ...
15         end
16     end
17 end
18 
19 
20 嵌套函数的变量定义范围。
21 function exm06044_2_1
22     x = 5;        % 在主函数中定义的变量 x
23     nestfun1
24     function nestfun1
25         nestfun2
26         function nestfun2
27         x = x + 1        %在“孙”嵌套函数中,可以寻访、修改。
28         end
29     end
30 end
31 
32 
33 function exm06044_2_2
34     nestfun1
35     function nestfun1
36         nestfun2
37         function nestfun2
38         x = 5;        %在“孙”嵌套函数中,定义的变量 x
39         end
40     end
41     x = x + 1                %在主函数中,可以寻访、修改。
42 end
43 
44 function exm06044_2_3
45     nestfun1
46     nestfun2
47     function nestfun1
48     x = 5;                %在“兄”嵌套函数中,定义变量 x
49     end
50     function nestfun2
51     x = x + 1            %在“弟”嵌套函数中,不能寻访、修改 x
52     end
53 end

〖说明〗

l  嵌套函数有自己的内存空间,但与其直系函数的内存空间之间存在同名变量接口。

l  兄弟嵌套函数各具独立的内存空间,各自空间内的同名变量相互独立,没有任何联系。

私用函数(Private function)

l  在名为Private的子文件夹上的M函数文件;

l  私用函数的构造与普通M函数完全相同。

l  私用函数只能被其直接“父”文件夹上函数文件所调用。

l  M文件中,任何指令通过“名字”对函数进行调用时,私用函数的优先级虽低于内装函数和子函数,但高于其他任何目录上的函数。

l  私用函数的帮助信息可用以下指令获得

help private/myprivfun

匿名函数(Anonymous function)

l  不以M文件形式驻留在文件夹上的函数;

l  可在指令窗或任何函数体内直接通过指令生成的函数。

l  创建匿名函数的方法

n  在指令窗或任何M文件中,运行以下指令

fhandle = @(arglist) expr

fhandle     属函数句柄数据类型

arglist     匿名函数的输入量

expr     用输入量构成的函数表达式

n  调用格式

fhandle(arglist)

l  匿名函数expr中,除了输入变量arglist外的其他变量必须是已经被赋值的,并从此在该匿名函数的整个存在期间保持不变,不管该匿名函数在以后调用时那些变量自身值是否已经变化或甚至不再存在。