- 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 - 返回語句
- MATLAB - 空函式
- MATLAB - 區域性函式
- MATLAB - 全域性變數
- MATLAB - 函式控制代碼
- MATLAB - 濾波函式
- MATLAB - 階乘
- MATLAB - 私有函式
- MATLAB - 子函式
- MATLAB - 遞迴函式
- MATLAB - 函式優先順序順序
- MATLAB - 對映函式
- MATLAB - 平均值函式
- MATLAB - 結束函式
- 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 中的小型、未命名的函式,使用 @(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