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
廣告

© . All rights reserved.