MATLAB - 函数句柄



MATLAB 中的函数句柄是一个强大的工具,允许您将函数视为变量。它们提供了一种在代码中存储、传递和操作函数的方法。当您需要将函数作为其他函数的参数、动态创建自定义函数或在不同函数之间动态切换时,函数句柄特别有用。

什么是函数句柄?

MATLAB 中的函数句柄是一种数据类型,用于存储对函数的引用。使用函数句柄允许您间接调用函数,而不管它在代码中的哪个位置被调用。

函数句柄的常见应用包括:

  • 将函数作为参数传递给另一个函数,通常称为“函数函数”。例如,您可以将函数传递给积分和优化函数,例如 integral 和 fzero。
  • 指定回调函数,例如用于响应 UI 事件或与数据采集硬件交互的函数。
  • 创建对内联定义函数的句柄,而不是像匿名函数那样将它们存储在单独的程序文件中。
  • 启用从主函数外部调用局部函数。

创建函数句柄

在 MATLAB 中创建函数句柄是一个基本概念,允许您存储对函数的引用以供以后使用。当您想将函数作为参数传递、使用匿名函数或在代码中动态切换不同函数时,这尤其有用。

要创建函数句柄,您可以使用 @ 符号后跟函数名称或匿名函数。以下是如何执行此操作:

使用命名函数

% Define a named function
function result = myFunction(x)
    result = x^2;
end

% Create a function handle to myFunction
funcHandle = @myFunction;

在 MATLAB 中,您可以使用 function 关键字定义命名函数。此函数 myFunction 接受一个输入参数 x 并返回 x 的平方。以下是此命名函数的代码:

% Define a named function
function result = myFunction(x)
   result = x^2;
end

在此示例中,myFunction 计算输入 x 的平方并将其分配给变量 result。

在 matlab 中,myFunction 函数如下所示:

function result

现在我将创建一个函数句柄。要创建对 myFunction 函数的函数句柄,您可以使用 @ 符号后跟函数名称:

% Create a function handle to myFunction
funcHandle = @myFunction;

这里,funcHandle 是一个变量,现在存储对 myFunction 函数的引用。它可以用来间接调用 myFunction。

函数句柄在 matlab 命令窗口中创建,如下所示:

funchandle variable

如果查看工作区,funcHandle 将在其中创建,并且它的类为 function_handle。

现在让我们了解如何使用这些函数句柄。

使用函数句柄

现在您有了函数句柄,您可以使用它来调用 myFunction 函数。例如:

result = funcHandle(5);

在此代码中,funcHandle(5) 使用 x = 5 调用 myFunction,结果存储在变量 result 中。在这种情况下,result 将被分配值 25,因为 myFunction 对输入进行平方。

在 matlab 命令窗口中执行时,输出为:

>> funcHandle = @myFunction;
>> result = funcHandle(5)

result =

   25

>> 

使用匿名函数

当您需要快速创建简单、短小的函数时,匿名函数通常更方便:

% Create an anonymous function to square a number
funcHandle = @(x) x^2;

您可以如下调用函数句柄:

result = funcHandle(5)

在 matlab 命令窗口中执行的结果为:

>> funcHandle = @(x) x^2;
>> result = funcHandle(5)

result =

   25

>> 

将函数句柄作为参数传递

函数句柄通常用作其他函数的参数,尤其是在您希望对不同数据应用相同操作时:

% Define a custom function that takes a function handle as an argument
function result = applyOperation(func, a, b)
    result = func(a, b);
end

% Use applyOperation to apply different operations
add = @(a, b) a + b;
subtract = @(a, b) a - b;

result1 = applyOperation(add, 5, 3); % result1 = 8
result2 = applyOperation(subtract, 5, 3); % result2 = 2

让我们详细了解以上代码。

定义自定义函数

自定义函数让我们可以在 matlab 中创建如下所示的函数:

applyoperation
  • 在上面的函数 applyOperation 中,它接受一个参数 func,这是一个函数句柄。
  • func 是一个函数句柄,表示一个操作(例如,加法或减法)。
  • ab 是将对 func 表示的操作执行其上的输入值。
  • result 是将 func 指定的操作应用于 ab 的输出。

为不同的操作定义函数句柄

定义了两个函数句柄 add 和 subtract,分别表示加法和减法运算:

add = @(a, b) a + b;
subtract = @(a, b) a - b;
  • add 是一个函数句柄,它接受两个输入 a 和 b 并返回它们的和。
  • subtract 是一个函数句柄,它接受两个输入 a 和 b 并返回它们的差。

使用 applyOperation 应用不同的操作

applyOperation 函数可用于将不同的操作应用于输入值。

使用 add 函数句柄

result1 = applyOperation(add, 5, 3);

使用 subtract 函数句柄

result2 = applyOperation(subtract, 5, 3);

在 matlab 命令窗口中执行上述代码,输出为:

>> add = @(a, b) a + b;
subtract = @(a, b) a - b;
>> result1 = applyOperation(add, 5, 3)

result1 =

     8
>> result2 = applyOperation(subtract, 5, 3)

result2 =

     2
广告
© . All rights reserved.