本主题说明如何存储或访问的数学函数,你传递给MATLAB额外的参数®功能功能, 如fzero
要么积分
。
MATLAB函数功能评估在一定范围值的数学表达式。他们被称为功能函数,因为他们是接受一个函数句柄(指向函数的指针)作为输入功能。所有这些功能预计你的目标函数输入变量的具体数量。例如,fzero
和积分
接受句柄到恰好有一个输入变量函数。
假设你要查找的三次多项式的零X3+
BX+
C对于系数的不同值b和C。虽然你可以创建一个接受三个输入变量的函数(X,b和C),你不能传递一个函数处理,要求所有三种这些投入fzero
。然而,可以采取匿名或嵌套函数的特性来定义额外的输入值。
定义参数的一种方法是使用嵌套函数-a功能的程序文件的另一个功能完全包含。在这个例子中,创建一个名为文件findzero.m
包含父函数findzero
和嵌套函数聚
:
功能Y = findzero(B,C,X0)Y = fzero(@聚,X0);功能Y =聚(X)Y = X ^ 3 + B * X + C;结束结束
嵌套函数定义了与一个输入变量的三次多项式,X
。父函数接受的参数b
和C
作为输入值。之所以巢聚
内findzero
是嵌套函数共享它们的父功能的工作区。因此,聚
函数可以访问的值b
和C
您传递给findzero
。
为了找到多项式的零B = 2
和C = 3.5
使用起点X0 = 0
,你可以调用findzero
在命令行:
X = findzero(2,3.5,0)
X = -1.0945
访问额外的参数的另一种方法是使用匿名函数。匿名函数是可以在一个命令定义,而无需创建一个单独的程序文件的功能。他们可以使用在当前工作区中可用的任何变量。
例如,创建一个句柄描述三次多项式一个匿名函数,并找到零:
B = 2;C = 3.5;cubicpoly = @(X)的x ^ 3 + B * X + C;X = fzero(cubicpoly,0)
X = -1.0945
变量cubicpoly
是一个函数来处理其有一个输入一个匿名函数,X
。匿名函数的输入出现在括号紧随@
符号创建函数句柄。因为b
和C
在工作区中,当你创建cubicpoly
,匿名函数并不需要这些系数的输入。
你并不需要创建一个中间变量,cubicpoly
,对于匿名函数。相反,你可以包括功能句柄调用中的整个定义fzero
:
B = 2;C = 3.5;X = fzero(@(X)的x ^ 3 + B * X + C,0)
X = -1.0945
您也可以使用匿名函数调用更复杂的目标函数,你在函数文件中定义。例如,假设你有一个文件名为cubicpoly.m
这个函数的定义:
功能Y = cubicpoly(X,B,C)Y = X ^ 3 + B * X + C;结束
在命令行中,定义b
和C
,然后调用fzero
用匿名函数调用cubicpoly
:
B = 2;C = 3.5;X = fzero(@(X)cubicpoly(X,B,C),0)
X = -1.0945
要更改参数的值,你必须创建一个新的匿名功能。例如:
B = 10;C = 25;X = fzero(@(X)的x ^ 3 + B * X + C,0);