首页 > 编程笔记 > MATLAB笔记 阅读:11

MATLAB inline()内联函数的用法(非常详细,附带实例)

在 MATLAB 中,内联函数(Inline Function)的属性和编写方式与普通函数的相同,但相对来说,内联函数的创建要简单得多,其调用格式如下。

表:inline()函数调用格式
调用格式 说 明
inline('CE') 把字符串表达式“CE”转化为输入变量自动生成的内联函数。

本语句将自动对字符串 CE 进行辨识,其中,除了预定义变量名(如圆周率 pi)、常用函数名(如 sin、rand 等),其他由字母和数字组成的连续字符均被辨识为变量。

另外,连续字符后紧接左括号的,不会被辨识为变量,如 array(1)。
inline('CE', arg1, arg2, …) 把字符串表达式“CE”转换为 arg1、arg2 等指定的输入变量的内联函数。

本语句创建的内联函数最为可靠,对于输入变量的字符串,用户可以随意改变,但是由于输入变量已经规定,因此生成的内联函数不会出现辨识失误等错误。
inline('CE', n) 把字符串表达式“CE”转化为 n 个指定的输入变量的内联函数。

本语句对输入变量的字符是有限制的,其字符只能是 x,P1,…,Pn 等,其中 P 一定为大写字母。

使用 inline() 函数时,有以下几点需要注意:
1) 字符串表达式“CE”中不能包含赋值符号“=”。

2) 内联函数是沟通 eval 和 feval 两个函数的桥梁,只要是 eval 函数可以操作的表达式,都可以通过 inline 指令转化为内联函数。这样,内联函数总可以被 feval 函数调用。MATLAB 中的许多内置函数就是通过被转换为内联函数,从而具备了根据被处理的方式不同而变换不同函数形式的能力的。

MATLAB 中的内联函数属性性指令集如下表所示,读者可以根据需要使用。

表:MATLAB 中的内联函数属性性指令集
指令句法 功能 指令句法 功能
class(inline_fun) 提供内联函数的类型 argnames(inline_fun) 提供内联函数的输入变量
char(inline_fun) 提供内联函数的计算公式 vectorize(inline_fun) 使内联函数适用于数组运算

【实例 1】内联函数的第一种创建格式是使内联函数适用于数组运算。在命令行窗口中输入以下语句,并显示相应的输出结果:
Fun1 = inline('mod(12,5)')
Fun1 =
    内联函数:
    Fun1(x) = mod(12,5)
在命令行窗口中输入以下语句,并显示相应的输出结果:
Fun2 = vectorize(Fun1)
Fun2 =
    内联函数:
    Fun2(x) = mod(12,5)
在命令行窗口中输入以下语句,并显示相应的输出结果:
Fun3 = char(Fun2)
Fun3 =
    'mod(12,5)'

【实例 2】内联函数的第一种创建格式的缺陷在于,不可以使用多标量构成的向量进行赋值,而使用第二种创建格式可以。在命令行窗口中输入以下语句,并显示相应的输出结果:
Fun4 = inline('m*exp(n(1))*cos(n(2))', Fun4(1,[-1,pi/2])
Fun4 =
    内联函数:
    Fun4(m) = m*exp(n(1))*cos(n(2))
错误使用 inline/subsref (line 14)
内联函数的输入数目太多。

在命令行窗口中输入以下语句,并显示相应的输出结果:
Fun5 = inline('m*exp(n(1))*cos(n(2))', 'm', 'n', Fun5(1,[-1,pi/2])
Fun5 =
    内联函数:
    Fun5(m,n) = m*exp(n(1))*cos(n(2))
ans =
    2.2526e-017

【实例 3】产生向量输入、向量输出的内联函数。在命令行窗口中输入以下语句,并显示相应的输出结果:
y = inline('[3*x(1)*x(2)^3;sin(x(2))]')
y =
    内联函数:
    y(x) = [3*x(1)*x(2)^3;sin(x(2))]

在命令行窗口中输入以下语句,并显示相应的输出结果:
Y = inline('[3*x(1)*x(2)^3;sin(x(2))]')
Y =
    内联函数:
    Y(x) = [3*x(1)*x(2)^3;sin(x(2))]

在命令行窗口中输入以下语句,并显示相应的输出结果:
>> argnames(Y)
ans =
    1x1 cell 数组
    {'x'}

在命令行窗口中输入以下语句,并显示相应的输出结果:
x=[10,pi*5/6];y=Y(x)
y =
    538.3034
    0.5000

【实例 4】以最简练的格式创建内联函数;内联函数可被 feval 函数调用。在命令行窗口中输入以下语句,并显示相应的输出结果:
z=inline('floor(x)*sin(P1)*exp(P2^2)',2)
z =
    内联函数:
    Z(x,P1,P2) = floor(x)*sin(P1)*exp(P2^2)

在命令行窗口中输入以下语句,并显示相应的输出结果:
z = Z(2.3,pi/8,1.2), fz = feval(z,2.3,pi/8,1.2)
z =
    3.2304
fz =
    3.2304

相关文章