matlab中如何定义函数:两种写法按需选用
matlab中如何定义函数分为脚本局部函数和独立函数文件两种方式,局部函数写在脚本末尾,适合简短计算、临时调试,不用单独新建m文件,独立函数必须单独保存同名m文件,适合复用性强、多脚本调用的代码,你要区分清楚,脚本局部函数不能放在脚本代码的前面,R2016b及以上版本才支持脚本内嵌局部函数,低版本MATLAB不识别这类写法,会直接抛出语法报错。
matlab函数文件定义
新建后缀为.m的文件,文件名和函数名保持完全一致,大小写也要匹配,文件第一行用function关键字声明,格式为function[输出1,输出2]=函数名(输入1,输入2),等号左边方括号存放返回变量,没有输出参数可以直接省略方括号和等号,括号里写传入的参数,无输入参数就保留空括号。函数体写在声明行下方,末尾给输出变量赋值,不赋值会出现返回空值,文件保存后,在命令行或者其他脚本里直接写函数名加参数就能调用。
示例代码:functionres=add_num(a,b)res=a+b;end这个文件保存为add_num.m,调用写法add_num(3,5),返回结果8。
end关键字不是强制的,嵌套函数场景下必须写end,普通单函数文件可以省略,加上end能减少版本兼容带来的解析异常,大多数工程代码都会加上。
matlab脚本局部函数定义
脚本文件的所有主代码写完之后,在文件尾部追加局部函数,多个局部函数依次排列,互相之间可以调用,但是脚本前面的代码只能在脚本内访问这些局部函数,其他外部m文件无法读取。局部函数的声明语法和独立函数一致,同样支持多输入多输出。
示例脚本结构:x=2;y=4;disp(mul(x,y));functionout=mul(m,n)out=m*n;end
局部函数,仅当前脚本可用。
匿名函数快速定义
匿名函数适合一行简短运算,不需要单独写function块,语法为函数句柄=@(参数列表)表达式,返回的句柄可以像普通函数一样传参调用,也能作为参数传入fminsearch、arrayfun这类内置函数,不适合包含分支、循环的复杂逻辑,复杂流程改用前面两种函数形式。
示例代码:f=@(t)t^2+1;,调用f(4),得到17。
| 函数类型 | 文件要求 | 调用范围 | 适合场景 |
|---|---|---|---|
| 独立m文件函数 | 单独m文件,同名 | 全路径内任意脚本调用 | 长期复用、复杂计算 |
| 脚本局部函数 | 写在脚本末尾 | 仅当前脚本内部调用 | 单次项目配套子计算 |
| 匿名函数 | 无独立文件 | 当前工作区有效 | 单行公式、内置算子传参 |
嵌套函数写在主函数内部,作用域封闭,内层函数可以直接读取外层函数的变量,变量共享特性会增加代码排错难度,非特殊需求一般不优先选用。
MATLAB路径会影响函数查找,自定义函数所在文件夹需要加入搜索路径,否则调用时提示找不到函数,使用addpath命令可以临时添加路径,重启软件后失效,永久路径设置在主页选项卡的设置路径面板里操作。
