1. 函数文件式定义
为函数新建一个同名m文件,文件中可定义其他辅助函数,辅助函数要定义在主函数之后,仅主函数可在文件外调用,辅助函数只能被同文件内的其他函数调用。
function [a,b,c] = main(x,y,z)
a=test();
b=20;
c=0;
end
function s=test()
s=100;
end
2. 直接inline式定义
这种函数定义方式简单快捷,无需创建m文件,直接在代码种定义即可。
...
f=inline('x^2+y','x','y')
z=f(1,2) %x=1,y=2
...
注意函数调用的时候参数顺序是按照定义时指定顺序传入的。
上述inline函数定义相当于:
f =
Inline function:
f(x,y) = x^2+y
3. @
符号式函数定义@符号式函数定义
f=@(x,y)(x^2+y)
f(2,1) %5
4. @
函数句柄
类似C++中的函数指针或引用,将函数句柄赋值给变量实现函数重命名。这种方式不能构建新的函数,只能用于现有函数。
f=@cos
f(0) % 1
5. 符号式函数定义
使用 syms
进行符号式定义,后代入 subs
变量求取函数值。
syms f x y
f=x^2+y
subs(f,{'x','y'},{2,1}) % 5
符号式定义灵活性较高,代入的时候除直接代入变量值外,还可代入变量表达或计算式扩展或简化函数,例如:上述函数中 y=z^2
则可代入
subs(f,'y','z^2')
6. 字符串式定义
字符串式定义具有与符号式定义相仿的灵活性和定义方式,但效率要高,定义格式也比较自由。
f='x^2+y'
subs(f,{'x','y'},{3,4}) % 13
subs(f,'y','z^2') % f=x^2+z^2
subs(f,{'x','z'},{3,4}) % f=y+9
我们可以在代入前定义同名变量,这样在代入时可免去指定代入值,直接将同名变量值作为代入值代入函数定义式计算。