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.