- 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 - 二维线图
- 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 - map 函数
MATLAB 中的 map 函数是一个强大的工具,允许你将特定的操作或函数应用于数组或元胞数组中的每个元素,并将结果返回到新的数组或元胞数组中。当你想对多个数据点执行相同的操作而无需编写循环时,这尤其有用。
Matlab 没有内置的 map 函数,但是,你可以使用其他内置函数和结构来实现类似的功能。
对数组使用 arrayfun
MATLAB 中的 arrayfun 函数允许你将函数应用于数组的每个元素,类似于映射的概念。
语法
B = arrayfun(func, A)
语法的详细解释如下:
B - 这是输出数组,它是将函数 func 应用于输入数组 A 的每个元素的结果。
func - 这是你想要应用于输入数组每个元素的函数。它可以是匿名函数或函数句柄。func 应该接受一个输入参数(A 的当前元素)并返回单个值。
A - 这是你想要应用函数 func 的输入数组。
示例 1
假设你有一个数字数组,并且数组中的每个数字都必须平方。为此,我们可以使用 arrayfun,如下例所示。
% This is a function to square a number square_function = @(x) x^2; % Array of numbers to be squared input_array = [1, 2, 3, 4, 5]; % Use arrayfun to apply the square function to each element output_array = arrayfun(square_function, input_array); % Display the result disp(output_array)
在这个例子中,square_function 应用于 input_array 中的每个元素,结果存储在 output_array 中。结果是 [1, 4, 9, 16, 25]。
arrayfun 简化了将函数应用于数组每个元素的过程,并帮助我们避免使用循环来执行相同操作。
当你在 matlab 命令窗口中执行相同的操作时,输出为:
>> % This is a function to square a number square_function = @(x) x^2; % Array of numbers to be squared input_array = [1, 2, 3, 4, 5]; % Use arrayfun to apply the square function to each element output_array = arrayfun(square_function, input_array); % Display the result disp(output_array) 1 4 9 16 25
对元胞数组使用 cellfun
对于元胞数组,你可以使用 cellfun 函数将函数应用于元胞数组的每个元素。
语法
B = cellfun(func, C)
B - 这是输出元胞数组,它是将函数 func 应用于输入元胞数组 C 的每个元素的结果。
func - 这是你想要应用于元胞数组每个元素的函数。func 可以是匿名函数或函数句柄。该函数应该接受一个输入参数(C 的当前元素)并返回单个值。
C - 这是你想要应用函数 func 的输入元胞数组。
示例 1:将函数应用于字符串元胞数组
假设你有一个字符串元胞数组,并且你想要知道元胞数组中每个字符串的长度。为此,你可以使用 cellfun(),如下例所示:
% Create a cell array of strings input_cell_array = {'apple', 'banana', 'cherry'}; % Define a function to find the length of a string length_function = @(str) length(str); % Use cellfun to apply the length function to each element output_array = cellfun(length_function, input_cell_array); % Display the result disp(output_array)
在这个例子中,length_function 应用于 input_cell_array 中的每个字符串,结果存储在 output_array 中。
当你在 matlab 命令窗口中执行上述代码时,输出如下:
>> % Create a cell array of strings input_cell_array = {'apple', 'banana', 'cherry'}; % Define a function to find the length of a string length_function = @(str) length(str); % Use cellfun to apply the length function to each element output_array = cellfun(length_function, input_cell_array); % Display the result disp(output_array) 5 6 6
示例 2:将函数应用于数字元胞数组
假设你有一个数值数组的元胞数组,并且你想要找到每个数值数组的总和。为此,让我们使用 cellfun() 应用于每个元胞数组,如下所示:
% Create a cell array of numeric arrays numeric_cells = { [1, 2, 3], [4, 5], [6, 7, 8, 9] }; % Define a function to compute the sum of an array sum_function = @(arr) sum(arr); % Use cellfun to apply the sum function to each element output_array = cellfun(sum_function, numeric_cells); % Display the result disp(output_array)
在这个例子中,sum_function 应用于 numeric_cells 元胞数组中的每个数值数组,结果存储在 output_array 中。让我们通过在 matlab 命令窗口中执行上述代码来检查输出。
>> % Create a cell array of numeric arrays numeric_cells = { [1, 2, 3], [4, 5], [6, 7, 8, 9] }; % Define a function to compute the sum of an array sum_function = @(arr) sum(arr); % Use cellfun to apply the sum function to each element output_array = cellfun(sum_function, numeric_cells); % Display the result disp(output_array) 6 9 30