本主题介绍如何存储或访问您传递给Matlab的数学函数的额外参数®功能功能, 如Fzero.
或者不可缺少的
。
MATLAB函数函数在一系列值中评估数学表达式。它们被称为函数函数,因为它们是接受函数句柄(指向函数的指针)作为输入的函数。这些函数中的每一个都希望您的客观函数具有特定数量的输入变量。例如,Fzero.
和不可缺少的
接受句柄到具有完全一个输入变量的函数。
假设您想找到立方多项式的零X3.+
BX.+
C对于系数的不同值B.和C。虽然您可以创建一个接受三个输入变量的函数(X那B., 和C),您无法通过函数句柄,该函数需要所有三个输入Fzero.
。但是,您可以利用匿名或嵌套函数的属性来定义其他输入的值。
定义参数的一种方法是使用a嵌套功能-a函数完全包含在程序文件中的另一个函数中。对于此示例,创建一个名为的文件findzero.m.
包含父功能Findzero.
和嵌套功能poly
:
功能y = findzero(b,c,x0)y = fzero(@ poly,x0);功能y = poly(x)y = x ^ 3 + b * x + c;结尾结尾
嵌套函数定义了具有一个输入变量的立方多项式,X
。父函数接受参数B.
和C
作为输入值。巢的原因poly
之内Findzero.
是嵌套函数共享其父函数的工作区。因此,这是poly
函数可以访问值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);