Matlab中的函数可以分为匿名函数、M文件主函数、嵌套函数、子函数、私有函数、和重载函数。
匿名函数通常只是由一句很简单的声明语句组成,使用匿名函数的优点是不需要维护一个M文件。
创建匿名函数的标准格式如下:F=@(input1,input2…)expr
例如:function1=@(x)(x-2*x.^2)
function2=@(x,y)(sin(x)-cos(y))
function3=@()(3+2) function3()
function4=@(a)(quad(@(x)(a.*x.^2+1./a.*x+1./a),0,1)) %匿名函数的嵌套使用
M文件主函数每一个M文件第一行定义的函数就是M文件主函数,一个M文件只能包含一个主函数。M文件主函数的说法是针对其内部的子函数和嵌套函数而言的。
子函数是一个M文件中除了一个主函数外,该文件中的其他函数称为子函数,保存时所用的函数名应该与主函数定义名相同,外部函数只能对主函数进行调用。
所有的子函数都有自己独立的声明、帮助和注释等结构,只需要在位置上注意处于主函数之后即可,而各个子函数则没有前后顺序选择,可以任意放位置。
M文件内部发生函数调用时,MATLAB首先检查该文件中是否存在相应的名称的子函数,然后检查这一M文件所在目录的子目录下是否存在同名的私有函数,然后按照MATLAB路径,检查是否存在同名的M文件或内部函数。
嵌套函数,在一个函数内部,可以定义一个或多个函数,这种定义在其他函数内部的函数就称为嵌套函数。一个函数内部可以嵌套多个函数,嵌套函数内部又可以继续嵌套其他函数。
嵌套函数的书写格式:
function x=A(b1,b2)
.
.
function y=B(c1,c2)
.
.
end
.
.
end
私有函数是具有限制性访问权限的函数,是位于私有目录private目录下函数文件,这些私有函数的构造与普通M函数完全相同,只不过私有函数的调用只能被private直接父目录下的M文件所调用,任何指令通过“名称”对函数进行调用时,私有函数的优先级仅次于MATLAB的内置函数和子函数。
重载函数:重载是一个计算机编程中非常重要的概念,它经常是用在处理功能类似,但是参数类型或个不同的函数编写中。例如实现两个相同的计算功能,输入变量数量相同,不同的是其中一个输入变量的类型为双精度浮点类型,另一个输入类型为整数,这个时候就可以编写两个同名函数,一个用来处理双精度浮点类型的输入函数,另一个用来处理整型的输入参数。重载函数放置在不同的文件路径下,文件名以@开头,然后跟一个代表MATLAB数据类型的字符。
在Matlab中提供的多分支判断语句switch-case.与其他程序设计语言的switch-case语句不同的是,在MATLAB语言中,当其中一个case语句后的条件为真时,switch-case语句不对其后的case语句进行判断,也就是说在MATLAB语言中,即使多条case判断语句为真,也只是执行所遇到的第一条为真的语句,不必像C语言那样,在每条case语句后加上break语句以防止继续执行后面为真的case条件语句。
参考:《MATLAB GUI程序设计》王广、邢林芳