- Matlab 教程
- MATLAB - 首頁
- MATLAB - 概述
- MATLAB - 特性
- MATLAB - 環境設定
- MATLAB - 編輯器
- MATLAB - 線上
- MATLAB - 工作區
- MATLAB - 語法
- MATLAB - 變數
- MATLAB - 命令
- MATLAB - 資料型別
- MATLAB - 運算子
- MATLAB - 日期和時間
- MATLAB - 數字
- MATLAB - 隨機數
- MATLAB - 字串和字元
- MATLAB - 文字格式化
- MATLAB - 時間表
- MATLAB - M 檔案
- MATLAB - 冒號表示法
- MATLAB - 資料匯入
- MATLAB - 資料輸出
- MATLAB - 資料歸一化
- MATLAB - 預定義變數
- MATLAB - 決策制定
- MATLAB - 決策
- MATLAB - If End 語句
- MATLAB - If Else 語句
- MATLAB - If…Elseif Else 語句
- MATLAB - 巢狀 If 語句
- MATLAB - Switch 語句
- MATLAB - 巢狀 Switch
- MATLAB - 迴圈
- MATLAB - 迴圈
- MATLAB - For 迴圈
- MATLAB - While 迴圈
- MATLAB - 巢狀迴圈
- MATLAB - Break 語句
- MATLAB - Continue 語句
- MATLAB - End 語句
- MATLAB - 陣列
- MATLAB - 陣列
- MATLAB - 向量
- MATLAB - 轉置運算子
- MATLAB - 陣列索引
- MATLAB - 多維陣列
- MATLAB - 相容陣列
- MATLAB - 分類陣列
- MATLAB - 元胞陣列
- MATLAB - 矩陣
- MATLAB - 稀疏矩陣
- MATLAB - 表格
- MATLAB - 結構體
- MATLAB - 陣列乘法
- MATLAB - 陣列除法
- MATLAB - 陣列函式
- MATLAB - 函式
- MATLAB - 函式
- MATLAB - 函式引數
- MATLAB - 匿名函式
- MATLAB - 巢狀函式
- MATLAB - Return 語句
- MATLAB - 空函式
- MATLAB - 區域性函式
- MATLAB - 全域性變數
- MATLAB - 函式控制代碼
- MATLAB - Filter 函式
- MATLAB - 階乘
- MATLAB - 私有函式
- MATLAB - 子函式
- MATLAB - 遞迴函式
- MATLAB - 函式優先順序順序
- MATLAB - Map 函式
- MATLAB - Mean 函式
- MATLAB - End 函式
- MATLAB - 錯誤處理
- MATLAB - 錯誤處理
- MATLAB - Try...Catch 語句
- MATLAB - 除錯
- MATLAB - 繪圖
- MATLAB - 繪圖
- MATLAB - 繪製陣列
- MATLAB - 繪製向量
- MATLAB - 條形圖
- MATLAB - 直方圖
- MATLAB - 圖形
- MATLAB - 2D 線圖
- MATLAB - 3D 圖
- MATLAB - 格式化繪圖
- MATLAB - 對數座標軸繪圖
- MATLAB - 繪製誤差條
- MATLAB - 繪製 3D 等值線圖
- MATLAB - 極座標圖
- MATLAB - 散點圖
- MATLAB - 繪製表示式或函式
- MATLAB - 繪製矩形
- MATLAB - 繪製頻譜圖
- MATLAB - 繪製網格曲面
- MATLAB - 繪製正弦波
- MATLAB - 插值
- MATLAB - 插值
- MATLAB - 線性插值
- MATLAB - 2D 陣列插值
- MATLAB - 3D 陣列插值
- MATLAB - 多項式
- MATLAB - 多項式
- MATLAB - 多項式加法
- MATLAB - 多項式乘法
- MATLAB - 多項式除法
- MATLAB - 多項式的導數
- MATLAB - 變換
- MATLAB - 變換
- MATLAB - 拉普拉斯變換
- MATLAB - 拉普拉斯濾波器
- MATLAB - 高斯-拉普拉斯濾波器
- MATLAB - 逆傅立葉變換
- MATLAB - 傅立葉變換
- MATLAB - 快速傅立葉變換
- MATLAB - 2D 逆餘弦變換
- MATLAB - 向座標軸新增圖例
- MATLAB - 面向物件
- MATLAB - 面向物件程式設計
- MATLAB - 類和物件
- MATLAB - 函式過載
- MATLAB - 運算子過載
- MATLAB - 使用者定義類
- MATLAB - 複製物件
- MATLAB - 代數
- MATLAB - 線性代數
- MATLAB - 高斯消元法
- MATLAB - 高斯-約旦消元法
- MATLAB - 簡化行階梯形式
- MATLAB - 特徵值和特徵向量
- MATLAB - 積分
- MATLAB - 積分
- MATLAB - 二重積分
- MATLAB - 梯形法則
- MATLAB - 辛普森法則
- MATLAB - 雜項
- MATLAB - 微積分
- MATLAB - 微分
- MATLAB - 矩陣的逆
- MATLAB - GNU Octave
- MATLAB - Simulink
- MATLAB - 有用資源
- MATLAB - 快速指南
- MATLAB - 有用資源
- MATLAB - 討論
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 檔案將如下所示:
在上面的示例中,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 指令碼檔案中的顯示。
現在讓我們在 matlab 命令視窗中執行它,如下所示:
>> result = calculatePrismVolume(4, 5, 6) result = 120
Matlab 中的區域性函式
在 MATLAB 中,“子函式”和“區域性函式”指的是同一個概念。這兩個術語通常可以互換使用,來描述在同一個指令碼或函式檔案中定義並具有有限作用域的函式,只能在同一個檔案中訪問。這些函式用於將較大的函式分解成較小的、模組化的元件。
無論是子函式還是區域性函式,它們的主要特徵都是:
- 它們在與主函式相同的指令碼或函式檔案中定義。
- 它們的作用域有限,只能在同一個檔案中訪問。
- 它們用於在主函式的上下文中執行特定的、本地化的任務。
- 它們透過封裝相關功能來增強程式碼模組化、組織和可讀性。
使用子函式的優點
- 子函式有助於將複雜的任務分解成較小的、可管理的部分,增強程式碼模組化和可重用性。
- 程式碼更易於閱讀,因為每個子函式都專注於一項特定任務,使其更容易理解。
- 子函式提供了一定程度的封裝,將實現細節隱藏在主函式和其他函式之外。
- 子函式有助於組織您的程式碼,將相關函式儲存在單個 .m 檔案中。
- 常見的任務可以封裝在子函式中,減少冗餘。
子函式或區域性函式與巢狀函式的區別
MATLAB 中的子函式或區域性函式和巢狀函式在程式碼模組化和組織方面具有相似的目的,但在作用域和可訪問性方面存在一些重要差異。
| 子函式 | 巢狀函式 |
|---|---|
| 子函式的作用域有限,只能在定義它們的 main 函式或指令碼內部訪問。子函式無法從定義它們的檔案外部訪問。它們有助於將邏輯封裝在特定的函式或指令碼中,使其更具模組化。 | 巢狀函式的作用域更廣。它們可以在封閉函式和同一包含函式中的任何其他巢狀函式內部訪問。它們還可以直接訪問封閉函式中的變數,而無需將它們作為引數傳遞。巢狀函式本質上是函式內部的私有函式,並且可以訪問包含函式的工作區。 |
| 子函式通常在與主函式相同的檔案中定義,並且通常用於將複雜的主函式分解成較小的、模組化的元件。它們可以用於組織單個檔案中的程式碼。 | 巢狀函式在封閉函式內定義,在單個 .m 檔案內建立分層結構。這允許您封裝功能,同時保持清晰的層次結構。 |
| 子函式通常無法從外部程式碼或定義它們的檔案外部的其他函式訪問。 | 巢狀函式無法從封閉函式外部的外部程式碼或函式訪問。它們本質上是封閉函式的私有函式。 |