MATLAB构建函数主要有两个方法:在命令行中定义的匿名函数;保存为M文件;
匿名函数
语法形式为:
fhandle=@(arglist) expression
@为建立函数句柄fhandle,arglist为输入变量列表(用逗号分割)
例子:
sqr=@(x) x.^2;
sqr(5) %结果为25
quad(sqr,0,1)
调用匿名函数(不是调用函数句柄),一定要带括号。
匿名函数数组
元胞数组
A={@(x)x.^2,@(y)y+10}
调用,类似
A{1}(4)+B{2}(7)
要注意避免歧义,不要随便加空格
匿名函数输出
输出取决于调用函数左边的变量个数。
匿名函数的变量
- 定义在变量列表中的
- 函数式中变量 MATLAB把它们当成常数保存
MATLAB不会理会它们的改变,把上面第二种当成常数一直使用,除非重新构建匿名函数。
主函数
在M文件中排在最前面,主函数和M文件同名,可以在命令行调用。
子函数
M文件中排在主函数后面的就是子函数,它只能在同一文件中的其他函数调用。与主函数在定义格式上没有区别。
functin y=f(x)
....
y=...
子函数中的局部变量不可混用。
同名函数调用顺序:子函数–私有函数–其他M文件
帮助:
help myfun>mysubfun
私有函数
它需要在当前目录下建一个子目录,名称必须为private,存放在文件内的函数就是私有函数,它的上层目录称为父目录,只有父目录里面的M文件才能看见(调用)它。帮助信息:
help private/myprivfun
嵌套函数
写
需要用end结尾。
function x=A(p1,p2)
...
function y=B(P1)
...
end
...
end
调用
一个嵌套函数可以被以下函数调用:
- 该嵌套函数的上一层函数
- 同一母函数下的同级嵌套函数
- 被任一低级别的函数调用
变量范围
- 在外层主函数中的变量x可以被嵌套在里面的函数读取或者写入。
- 并联函数之间变量不能相互调用。
重载函数
假设有一个函数是为某种特定的数据类型设计的,当要使用另外类型的数据时就要重写它使之能处理新的数据类型,但它们名字都是一样的。具体取决于数据类型和参数的个数。
同一种数据类型的不同的重载函数M文件放在同一个目录下,以这种数据类型命名并用@符号开头。如 @double,在输入变量为double时才能被调用