主要内容

参数化功能

概述

这一主题解释了如何存储或访问额外的参数传递给MATLAB数学函数®函数的功能,如fzero积分

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

假设你想找到三次多项式的零点x3+bx+c不同的值的系数bc。虽然你可以创建一个函数,接受三个输入变量(x,b,c),你不能通过一个函数处理,要求所有三个输入fzero。然而,您可以利用匿名或嵌套函数定义的属性值额外的输入。

使用嵌套函数参数化

是使用一种方法来定义参数嵌套函数——函数完全包含在另一个函数在程序文件中。对于这个示例,创建一个文件命名findzero.m包含一个父函数findzero和一个嵌套函数:

函数y = findzero (b, c, x0) y = fzero (x0 @poly);函数保利(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 + x + c b *, 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 + x + c b *, 0);

相关的话题