MATLAB - 子函式



MATLAB 中的子函式是一個強大的功能,它允許您將較大的函式分解成較小的、模組化的元件。這些較小的元件或子函式可以在與主函式相同的 .m 檔案中定義,並設計用於執行特定的、本地化的任務。使用子函式可以極大地增強程式碼組織、可讀性和可重用性。

建立子函式

按照以下步驟在 matlab 中建立子函式。

步驟 1 − 首先定義您希望在 .m 檔案中包含的主函式。

步驟 2 − 在主函式下方,使用 function 關鍵字定義一個或多個子函式。

步驟 3 − 以下是一個示例,其中包含 .m 檔案中的主函式和子函式。

假設您希望建立一個 MATLAB 函式來計算矩形的面積。您可以定義主函式 calculateRectangleArea 和子函式 areaOfRectangle 如下所示:

% Main function
function area = calculateRectangleArea(length, width)
   area = areaOfRectangle(length, width);
end

% Sub-function
function A = areaOfRectangle(l, w)
   A = l * w;
end

在 matlab 中,calculateRectangleArea.m 檔案將如下所示:

area of rectangle

在上面的示例中,areaOfRectangle 是在主函式 calculateRectangleArea 中使用的子函式。子函式封裝了計算面積的邏輯,促進了程式碼模組化。

步驟 4 − 讓我們在 matlab 命令視窗中執行上述函式,如下所示:

result = calculateRectangleArea(4, 5)

輸出為:

>> result = calculateRectangleArea(4, 5)

result =

    20

子函式的作用域

子函式的作用域有限,只能在同一 .m 檔案中的主函式內部訪問。它們在檔案外部不可見。這種封裝有助於防止命名衝突,並允許您專注於每個函式中的特定任務。

在程式碼中使用多個子函式

讓我們考慮一個稍微複雜一點的示例,它顯示了主函式內部子函式的作用域。在這裡,您希望計算長方體的體積。您可以建立主函式和多個子函式來處理計算的不同方面:

% Main function
function volume = calculatePrismVolume(length, width, height)
   baseArea = areaOfRectangle(length, width);
   volume = volumeOfPrism(baseArea, height);
end

% Sub-function 1
function A = areaOfRectangle(l, w)
   A = l * w;
end

% Sub-function 2
function V = volumeOfPrism(baseArea, h)
   V = baseArea * h;
end

在這個例子中,areaOfRectangle 和 volumeOfPrism 是子函式,它們分別負責計算矩形的面積和長方體的體積。

讓我們看看 calculatePrismVolume.m 在 matlab .m 指令碼檔案中的顯示。

calculate prism volume

現在讓我們在 matlab 命令視窗中執行它,如下所示:

>> result = calculatePrismVolume(4, 5, 6)

result =

   120

Matlab 中的區域性函式

在 MATLAB 中,“子函式”和“區域性函式”指的是同一個概念。這兩個術語通常可以互換使用,來描述在同一個指令碼或函式檔案中定義並具有有限作用域的函式,只能在同一個檔案中訪問。這些函式用於將較大的函式分解成較小的、模組化的元件。

無論是子函式還是區域性函式,它們的主要特徵都是:

  • 它們在與主函式相同的指令碼或函式檔案中定義。
  • 它們的作用域有限,只能在同一個檔案中訪問。
  • 它們用於在主函式的上下文中執行特定的、本地化的任務。
  • 它們透過封裝相關功能來增強程式碼模組化、組織和可讀性。

使用子函式的優點

  • 子函式有助於將複雜的任務分解成較小的、可管理的部分,增強程式碼模組化和可重用性。
  • 程式碼更易於閱讀,因為每個子函式都專注於一項特定任務,使其更容易理解。
  • 子函式提供了一定程度的封裝,將實現細節隱藏在主函式和其他函式之外。
  • 子函式有助於組織您的程式碼,將相關函式儲存在單個 .m 檔案中。
  • 常見的任務可以封裝在子函式中,減少冗餘。

子函式或區域性函式與巢狀函式的區別

MATLAB 中的子函式或區域性函式和巢狀函式在程式碼模組化和組織方面具有相似的目的,但在作用域和可訪問性方面存在一些重要差異。

子函式 巢狀函式
子函式的作用域有限,只能在定義它們的 main 函式或指令碼內部訪問。子函式無法從定義它們的檔案外部訪問。它們有助於將邏輯封裝在特定的函式或指令碼中,使其更具模組化。 巢狀函式的作用域更廣。它們可以在封閉函式和同一包含函式中的任何其他巢狀函式內部訪問。它們還可以直接訪問封閉函式中的變數,而無需將它們作為引數傳遞。巢狀函式本質上是函式內部的私有函式,並且可以訪問包含函式的工作區。
子函式通常在與主函式相同的檔案中定義,並且通常用於將複雜的主函式分解成較小的、模組化的元件。它們可以用於組織單個檔案中的程式碼。 巢狀函式在封閉函式內定義,在單個 .m 檔案內建立分層結構。這允許您封裝功能,同時保持清晰的層次結構。
子函式通常無法從外部程式碼或定義它們的檔案外部的其他函式訪問。 巢狀函式無法從封閉函式外部的外部程式碼或函式訪問。它們本質上是封閉函式的私有函式。
廣告

© . All rights reserved.