MATLAB - 匿名函数



MATLAB 函数是一个独立的、自包含的代码块,它执行特定的任务,并且可以接受输入参数并返回输出值。函数有助于组织代码,使其更易读,并促进代码重用。

创建简单的 MATLAB 函数

假设我们想要创建一个函数来计算给定数字的平方。以下是操作方法:

步骤 1 - 创建新的 MATLAB 脚本

打开 MATLAB 并通过点击“新建脚本”按钮或使用 edit 命令创建一个新的脚本文件。将其保存为 .m 文件扩展名(例如,square.m)。

步骤 2 - 定义函数

在 square.m 文件中,定义函数如下:

function result = square(x)
   % This function calculates the square of a number.
   result = x^2;
end

在 matlab 中,它将如下所示:

square m file

在此代码中:

  • function result = square(x) 声明名为 square 的函数,它接受一个输入参数 x 并返回一个结果。
  • result = x^2; 计算输入 x 的平方并将结果赋值给变量 result。

步骤 3 - 使用函数

现在您已经创建了函数,您可以在 MATLAB 工作区或其他脚本中使用它。以下是使用方法:

>> num = 5;
result = square(num)

result =

   25

>> 

现在我们知道了如何在 Matlab 中创建普通函数,让我们更详细地了解 Matlab 中的匿名函数。

什么是匿名函数?

匿名函数是 MATLAB 中的小型、未命名的函数,使用 @(inputs) 表达式语法定义。它们也称为 lambda 函数,因为它们允许您创建函数而无需显式命名它们。匿名函数可以有多个输入,并且可以返回单个输出。

创建匿名函数

要在 MATLAB 中创建匿名函数,可以使用 @(inputs) 表达式语法。以下是一个简单的示例:

square = @(x) x^2;

在此示例中,我们定义了一个名为 square 的匿名函数,它接受一个输入 x 并返回其平方。

使用匿名函数

匿名函数的使用方式与普通函数相同。您可以使用参数调用它们,将它们分配给变量,并将它们作为参数传递给其他函数。以下是一些示例:

result = square(5); % Calls the anonymous function with x=5, result is 25.

Matlab 匿名函数用法

没有变量的匿名函数,也称为常量匿名函数,特别用于需要将函数传递给另一个函数但不需要任何输入参数的情况。

您可以使用 @() 表达式语法创建没有输入参数的常量匿名函数。以下是一个示例

constant_func = @() 42;

在此示例中,我们定义了一个名为 constant_func 的匿名函数,它不接受任何输入参数,并且始终返回常量值 42。

没有变量的匿名函数也称为常量匿名函数

常量匿名函数可用作其他函数的函数句柄,这些函数期望一个函数参数。以下是一个示例:

function applyFunctionToArray(arr, func)
   result = func();  % Call the function with no arguments
   disp(result);
end

% Use the constant anonymous function as an argument
constant_func = @() 42;
applyFunctionToArray([1, 2, 3], constant_func);

在此示例中:

  • 我们定义了一个自定义函数 applyFunctionToArray,它接受一个数组 arr 和一个函数句柄 func 作为参数。
  • 在 applyFunctionToArray 内部,我们调用提供的函数 func,不带任何参数,因为它不需要任何参数。
  • 我们使用匿名函数 constant_func 作为 applyFunctionToArray 的参数。它将始终返回 42。
  • 当我们使用数组 [1, 2, 3] 和常量匿名函数调用 applyFunctionToArray 时,它将 42 打印到控制台。

具有一个变量的匿名函数

您可以使用 @(variable) 表达式语法在 MATLAB 中创建具有一个变量的匿名函数。以下是一个示例:

square = @(x) x^2;

在此示例中,我们定义了一个名为 square 的匿名函数,它接受一个输入变量 x 并返回 x 的平方。

您可以按如下方式调用该函数:

result = square(5);% Calls the anonymous function with x=5, result is 25.

具有多个变量的匿名函数

当您想要定义一个简单的、未命名的函数,该函数接受多个输入参数时,可以使用 MATLAB 中的具有多个变量的匿名函数。

要创建具有多个变量的匿名函数,可以使用 @(var1, var2, ...) 表达式语法。以下是一个示例:

addition = @(x, y) x + y;

在此示例中,我们定义了一个名为 addition 的匿名函数,它接受两个输入变量 x 和 y,并返回它们的和。

您可以按如下所示调用匿名函数:

result1 = addition(4, 5);  % the result1 = 9

匿名函数作为其他函数的参数

在下面的示例中,我将使用arrayfun函数,该函数将给定函数应用于数组的每个元素。

% Define an array of numbers
numbers = [1, 2, 3, 4, 5];

% Use arrayfun to double each element using an anonymous function
doubled_numbers = arrayfun(@(x) 2 * x, numbers)

在此示例中:

  • 一个名为 numbers 的数字数组定义了值 [1,2,3,4,5]。
  • 我们使用 arrayfun 函数并将匿名函数 @(x) 2 * x 作为第一个参数提供。此匿名函数接受一个输入 x 并返回 2 * x,有效地将 x 的值加倍。
  • arrayfun 将此匿名函数应用于 numbers 数组的每个元素,从而产生一个名为 doubled_numbers 的新数组。
  • 最后,我们显示 doubled_numbers 数组,其中包含原始数组的加倍值。

当您在 matlab 中执行相同操作时,输出为:

>> 
numbers = [1, 2, 3, 4, 5];

doubled_numbers = arrayfun(@(x) 2 * x, numbers)

doubled_numbers =

   2     4     6     8    10
广告