参数化功能

概观

本主题说明如何存储或访问的数学函数,你传递给MATLAB额外的参数®功能功能, 如fzero要么积分

MATLAB函数功能评估在一定范围值的数学表达式。他们被称为功能函数,因为他们是接受一个函数句柄(指向函数的指针)作为输入功能。所有这些功能预计你的目标函数输入变量的具体数量。例如,fzero积分接受句柄到恰好有一个输入变量函数。

假设你要查找的三次多项式的零X3+BX+C对于系数的不同值bC。虽然你可以创建一个接受三个输入变量的函数(XbC),你不能传递一个函数处理,要求所有三种这些投入fzero。然而,可以采取匿名或嵌套函数的特性来定义额外的输入值。

使用参数化嵌套函数

定义参数的一种方法是使用嵌套函数-a功能的程序文件的另一个功能完全包含。在这个例子中,创建一个名为文件findzero.m包含父函数findzero和嵌套函数

功能Y = findzero(B,C,X0)Y = fzero(@聚,X0);功能Y =聚(X)Y = X ^ 3 + B * X + C;结束结束

嵌套函数定义了与一个输入变量的三次多项式,X。父函数接受的参数bC作为输入值。之所以巢findzero是嵌套函数共享它们的父功能的工作区。因此,函数可以访问的值bC您传递给findzero

为了找到多项式的零B = 2C = 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。匿名函数的输入出现在括号紧随@符号创建函数句柄。因为bC在工作区中,当你创建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;结束

在命令行中,定义bC,然后调用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);

相关话题