本节介绍 MATLAB 的 5 种函数类型,分别为:主函数、子函数、嵌套函数、私有函数和重载函数。
通常 M 文件中的第一个函数为主函数,主函数后可以是任意数量的子函数。主函数可以被该文件之外的其他函数调用,主函数的调用是通过存储该函数的 M 文件的文件名进行的。
M 文件中可以包括多个函数,除主函数之外的其他函数称为子函数。子函数只能被主函数或该文件内的其他子函数调用。每个子函数以函数定义语句开始,直至下一个函数的定义或文件的结尾。各个子函数以任意顺序出现,但主函数必须最先出现。
主函数和子函数,具体程序如下:
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
每个函数可以嵌套多个函数,通常为平级嵌套结构和多层嵌套结构。
平级嵌套结构,具体程序如下:
function x = A(p1, p2) ... function y = B(p3) ... end function z = C(p4) ... end ... end
上面示例中,函数 A 嵌套了函数 B 和函数 C。
多层嵌套结构,具体程序如下:
function x = A(p1, p2) ... function y = B(p3) ... function z = C(p4) ... end ... end ... end
上面示例中函数 A 嵌套了函数 B,函数 B 嵌套了函数 C。
一个嵌套函数可以被下列函数调用。
嵌套函数的调用,具体程序如下:
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 脚本文件调用。
函数重载允许多个函数使用相同的函数名、不同的输入变量数据类型。函数调用时,系统根据函数输入变量的数据类型选择对应的函数。
更多...
加载中...