三、用内联函数命令 inline
定义格式1:
fun=inline(字符串表达式)
执行后,命令窗会出现如下内容:
fun =
Inline function:
fun(var,...) = 字符串表达式
其中,“var,...”是内联函数 fun 的形参变量列表,各变量的名称和“字符串表达式”中出现的是一样的,是一一对应的。在定义格式1下,它们的排列顺序是按字母表顺序排列的。
定义格式2:
fun=inline(字符串表达式,'var',...)
执行后,命令窗会出现如下内容:
fun =
Inline function:
fun(var,...) = 字符串表达式
定义格式2与定义格式1的区别在于,定义格式2指定了形参变量列表中变量的排列顺序,它们按指定的顺序排列,而不再是按默认的字母表顺序排列。但同定义格式1一样,各变量的名称还是和“字符串表达式”中出现的是一样的,还是一一对应的。
调用格式:
fun(a,...)
“a,...”是实参变量列表,不管内联函数是按哪种格式定义的,它们被内联函数调用时,实参变量列表“a,...”中的第一个代表形参变量列表“var,...”中的第一个,实参变量列表“a,...”中的第二个代表形参变量列表“var,...”中的第二个,依此类推。然后再根据形参变量列表“var,...”与字符串表达式中各变量之间的一一对应关系,进行替换取值,从而得出函数值。
“a,...”的名称可以任意取,没必要和“var,...”相同。
1、输入参数“字符串表达式”可以是函数字符串表达式,或是代表它的标识符(按方法一定义的字符串表达式的标识符 f)。
2、函数表达式采用数组算法时,定义的是函数矩阵(矩阵的元素是函数),若采用矩阵算法,则定义的是矩阵函数(自变量是矩阵的函数)。
3、将内联函数保存在工作空间,可多次使用。
4、与 inline 相关的结果命令:
argnames(fun):返回内联函数中的形参变量列表
char(fun):将内联函数转换成字符串
formula(fun):同 char(fun) 作用一样
例子:
% 采用数组算法
>> u=[1 2];v=[2 3];
% 定义格式1
>> f = inline('3*sin(2*x.^2)+y')
f =
Inline function:
f(x,y) = 3*sin(2*x.^2)+y
>> f(u,v)
ans =
4.7279 5.9681
>> f = inline('3*sin(2*y.^2)+x')
f =
Inline function:
f(x,y) = 3*sin(2*y.^2)+x
>> f(u,v)
ans =
3.9681 -0.2530
% 定义格式2,指定变量顺序
>> f = inline('3*sin(2*x.^2)+y','y','x')
f =
Inline function:
f(y,x) = 3*sin(2*x.^2)+y
>> f(u,v)
ans =
3.9681 -0.2530
>> f = inline('3*sin(2*y.^2)+x','y','x')
f =
Inline function:
f(y,x) = 3*sin(2*y.^2)+x
>> f(u,v)
ans =
4.7279 5.9681
% 采用矩阵算法
>> u=[1 2;2 3];v=[2 3;3 4];
% 定义格式1
>> f = inline('3*sin(2*x^2)+y')
f =
Inline function:
f(x,y) = 3*sin(2*x^2)+y
>> f(u,v)
ans =
0.3679 2.1363
2.1363 6.2877
% 定义格式2,指定变量顺序
>> f = inline('3*sin(2*x^2)+y','y','x')
f =
Inline function:
f(y,x) = 3*sin(2*x^2)+y
>> f(u,v)
ans =
3.2877 -0.9753
-0.9753 2.2129
>> argnames(f)
ans =
'x'
'y'
>> char(f)
ans =
3*sin(2*x^2)+y