- 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