
- 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 語句
- 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 - 二維線圖
- MATLAB - 三維圖
- MATLAB - 圖表格式化
- MATLAB - 對數座標軸圖
- MATLAB - 繪製誤差條
- MATLAB - 繪製三維等高線圖
- MATLAB - 極座標圖
- MATLAB - 散點圖
- MATLAB - 繪製表示式或函式
- MATLAB - 繪製矩形
- MATLAB - 繪製頻譜圖
- MATLAB - 繪製網格曲面
- MATLAB - 繪製正弦波
- MATLAB - 插值
- MATLAB - 插值
- MATLAB - 線性插值
- MATLAB - 二維陣列插值
- MATLAB - 三維陣列插值
- MATLAB - 多項式
- MATLAB - 多項式
- MATLAB - 多項式加法
- MATLAB - 多項式乘法
- MATLAB - 多項式除法
- MATLAB - 多項式的導數
- MATLAB - 變換
- MATLAB - 變換函式
- MATLAB - 拉普拉斯變換
- MATLAB - 拉普拉斯濾波器
- MATLAB - 高斯-拉普拉斯濾波器
- MATLAB - 逆傅立葉變換
- MATLAB - 傅立葉變換
- MATLAB - 快速傅立葉變換
- MATLAB - 二維逆餘弦變換
- 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 函式是一個獨立的、自包含的程式碼塊,它執行特定任務,可以接受輸入引數並返回輸出值。函式有助於組織程式碼,使其更易於閱讀,並促進程式碼重用。
建立簡單的 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 中,它將如下所示:

在此程式碼中:
- function result = square(x) 宣告名為 square 的函式,該函式接受一個輸入引數 x 並返回一個結果。
- result = x^2; 計算輸入 x 的平方並將其賦給變數 result。
步驟 3:使用函式
現在你已經建立了函式,你可以在 MATLAB 工作區或其他指令碼中使用它。以下是如何使用它:
>> num = 5; result = square(num) result = 25 >>
現在我們知道了如何在 Matlab 中建立普通函式,讓我們更詳細地瞭解 Matlab 中的巢狀函式。
巢狀函式
MATLAB 中的巢狀函式允許你在其他函式中定義函式。這些巢狀函式可以訪問其父函式的變數和工作區,這對於組織程式碼、封裝功能和最大限度地減少全域性變數的使用非常有用。
巢狀函式語法
function outerFunction() % Outer function code function innerFunction() % Nested function code end % Outer function code can call innerFunction end
關於巢狀函式的重要事項
- 巢狀函式可以訪問其父函式中的變數,但反之則不然。父函式無法訪問巢狀函式中定義的變數。
- 巢狀函式還可以訪問同一父函式中其他巢狀函式的變數。
- 巢狀函式不能從父函式外部呼叫;它們的作用域僅限於父函式。
- MATLAB 允許你在單個父函式中定義多個巢狀函式。
- 巢狀函式是封裝邏輯和防止 MATLAB 程式碼混亂的有用方法。
簡單的巢狀函式示例
function area = calculateCircleArea(diameter) % Nested function to calculate radius function radius = calculateRadius(d) radius = d / 2; end % Calculate the area of the circle r = calculateRadius(diameter); area = pi * r^2; end
在這個例子中,calculateRadius 是一個巢狀函式,它可以訪問其父函式 calculateCircleArea 中的 diameter 變數。
在 Matlab 中,你將儲存並執行上述函式,如下所示:

使用值 calculateCircleArea() 執行函式的結果如下:
>> d = 10; circleArea = calculateCircleArea(d) circleArea = 78.5398
返回巢狀函式作為輸出
在 MATLAB 中,你還可以將巢狀函式作為外部函式的輸出返回。
function customCalculator = createCalculator(a, b) % Nested function to add two numbers function result = add() result = a + b; end % Nested function to subtract two numbers function result = subtract() result = a - b; end % Return the nested functions as outputs customCalculator.add = @add; customCalculator.subtract = @subtract; end
在這個例子中,createCalculator 函式返回一個結構體,其中包含兩個巢狀函式 add 和 subtract 作為函式控制代碼。
Add 函式
add 函式計算 a 和 b 的和,並將其儲存在 result 變數中。
Subtract 函式
subtract 函式計算 a 和 b 之間的差,並將其儲存在 result 變數中。
定義這些巢狀函式後,createCalculator 函式執行以下操作:
返回結構體
它建立一個名為 customCalculator 的結構體,其中將包含指向 add 和 subtract 函式的函式控制代碼。
分配函式控制代碼
它將函式控制代碼 @add 分配給 customCalculator 結構體的 add 欄位。
它將函式控制代碼 @subtract 分配給 customCalculator 結構體的 subtract 欄位。
你可以使用這些控制代碼使用指定的值執行加法和減法,如下所示:
>> calc = createCalculator(5, 3) additionResult = calc.add() subtractionResult = calc.subtract() calc = struct with fields: add: @createCalculator/add subtract: @createCalculator/subtract additionResult = 8 subtractionResult = 2 >>