参数化功能
概述
这一主题解释了如何存储或访问额外的参数传递给MATLAB数学函数®函数的功能,如fzero
或积分
。
MATLAB函数功能评估数学表达式的范围值。他们被称为函数函数,因为他们是函数接受一个函数处理(一个指针指向一个函数)作为输入。这些功能预计你的目标函数有特定数量的输入变量。例如,fzero
和积分
接受一个输入变量的处理函数。
假设你想找到三次多项式的零点x3+
bx+
c不同的值的系数b和c。虽然你可以创建一个函数,接受三个输入变量(x,b,c),你不能通过一个函数处理,要求所有三个输入fzero
。然而,您可以利用匿名或嵌套函数定义的属性值额外的输入。
使用嵌套函数参数化
是使用一种方法来定义参数嵌套函数——函数完全包含在另一个函数在程序文件中。对于这个示例,创建一个文件命名findzero.m
包含一个父函数findzero
和一个嵌套函数聚
:
函数y = findzero (b, c, x0) y = fzero (x0 @poly);函数保利(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 + x + c b *, 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 + x + c b *, 0);