MATLAB 中的 Map 函数

2025年7月28日 | 阅读 8 分钟

引言

MATLAB 映射函数能够快速地将操作或转换应用于数据结构。

MATLAB 中,您可以将定义的操作应用于整个数据集,例如数组、矩阵和单元格数组,并支持顺序或并行处理。映射旨在使重复性任务变得更容易,同时减少编码工作量并创建更清晰的程序。

MATLAB 中映射的主要工具包括:

  • arrayfun: 在数组中的每个数据值上运行一次的函数。
  • cellfun: 再次为开发人员规范基于单元格的操作。
  • Map: 创建一个键值存储系统,以快速有效地查找数据。

示例: 使用 arrayfun 对数组中的元素进行平方运算

输出

 
1     4     9    16   

通过映射操作,开发人员需要更少的显式循环,这使得他们的代码更直接,并且运行速度比以前更快。

映射函数对数据操作和处理的重要性

数据处理 需要使用映射函数,因为它们为这项工作提供了重要的好处

  • 简单性: 与为大型数据集处理编写循环相比,这种方法使数据处理更容易。
  • 效率: MATLAB 选择内置计算工具来加快处理速度。
  • 灵活性: MATLAB 处理多种类型的数字数据,包括单值列表、数组矩阵和集合数组。
  • 可扩展性: 该系统支持多维数组计算,并有助于轻松处理大量数据集。

示例: 使用 cellfun 计算单元格数组中的字符串长度

输出

 
6     7    9   

映射函数在执行这些任务时提高了数据处理速度和准确性,使信号监控和 数据科学 应用程序运行更快。

MATLAB 中映射函数的主要区别

MATLAB 并非唯一拥有映射概念的语言。许多编程语言都支持映射函数,但 MATLAB 对它们进行了特殊设计,使其最适合其矩阵处理和数学功能。

语言设计

  • MATLAB 的映射函数与其计算引擎无缝连接,该引擎使用内置向量和优化例程。
  • Python 中,map() 函数和列表推导式通过 NumPy 支持 通用地执行映射任务。

语法简洁性

  • MATLAB 的 arrayfun 函数通过其内置编程结构简化了数据映射。
  • 在 Java 和 C++ 中执行映射时,添加样板步骤会增加工作量。

对特殊数据结构的支持

  • MATLAB 的 containers.Map 产品专为与键值对配合使用而构建,并且在数值和科学应用中运行最佳。
  • Python 的 dict 和 Java 的 HashMap 可以处理键值对,但它们与专门面向数值的数据结构的工作方式不同。

示例: 使用 MATLAB 的 containers.Map 进行键值映射

输出

 
10  

MATLAB 映射函数最适合工程数据,因为它们正确处理数值以满足研究需求。

MATLAB 中映射函数的基本语法和功能

MATLAB 映射使用预设函数,按照您的指示操作数据集中的每个项目。MATLAB 提供了许多高级映射工具来帮助用户有效地处理、转换和修改他们的数据集。一般语法和用法

映射相关函数的一般形式可以表示为:

其中

  • fun: 一个工具,使您能够将函数规则添加到您的数据集中。
  • data: 输入数据集可以是任何标准 MATLAB 存储安排,具体取决于所选的映射函数。
  • result: 我们的函数 fun 将数据转换为其结果。

MATLAB 中缺乏标准映射功能,这促使使用 arrayfun 和 cellfun 替代方案,它们执行类似的功能。

关键组件说明

  1. fun:要应用的函数
    • 数据集对每个输入元素执行此过程。
    • 相关函数可以通过内置 MATLAB 工具直接出现,或者您自己创建必要的工具。
    • 当您输入 fun = @(x) x^2 时,MATLAB 会生成一个匿名函数来对输入数据进行平方运算。
  2. data:输入数据集
    • 函数接收其数据输入集合作为参数。
    • 输入可以采用数字序列、对象数组或基于必要条件的结构化表的形式。
    • 示例: 当您输入 data = [1, 2, 3, 4] 时,MATLAB 会创建一个从一到四的数字元素列表。

展示基本映射操作的示例

1. 将 arrayfun 用于数值数组

arrayfun 对数值集合中的每个值执行定义的操作。

示例

将数组的每个元素平方。

输出

 
Squared Elements:
1     4     9    16   

2. 将 cellfun 用于单元格数组

cellfun 函数将指定函数应用于单元格数组中的每个数组元素。

示例

查找单元格数组中字符串的长度。

输出

 
Lengths of Strings:
 6     2     5   

3. 使用内置函数进行映射

内置函数自动与数组一起工作,无需创建自定义代码。

示例

将正弦函数应用于角度数组。

输出

 
Sine Values:
0.0000    0.7071    1.0000    0.0000  

4. 组合函数和数据

您可以通过将函数一起使用来为映射过程添加决策支持。

示例

将所有大于 3 的元素加上 5。

输出

 
Modified Array:
    1     3    10    12   

MATLAB 中映射函数的类型

MATLAB 映射函数允许用户对所有数组元素、单元格数组和键值元素执行操作。

使用 arrayfun 进行映射

arrayfun 函数对数组中的所有元素执行定义的操作。该方法用简化的解决方案取代了传统的循环,从而节省了代码空间。

语法

  • fun: 我们将对每个组件使用此操作。
  • array: 一个包含一系列值的结构,这些值将接收函数执行。

示例 1:将数组中的每个元素平方。

输出

 
Squared Array:
1     4     9    16

示例 2:检查数组中的元素是否为偶数。

输出

 
Even Check:
0     1     0     1   

用例

  • 系统对数组元素执行数学运算。
  • 您可以构建填充了逻辑测试值的数组。
  • 用户可以将自定义函数直接应用于每个数组条目。

使用 cellfun 进行映射

cellfun 工具通过对集合中的每个条目运行特定操作来处理单元格数组。这种方法有助于很好地管理不同类型的数据集合。

语法

  • fun: 将此定义的函数应用于每个单元格。
  • cellArray: 输入单元格数组。

示例 1:计算单元格数组中每个字符串的长度。

输出

 
Lengths of Strings:
6     7     9

示例 2:应用自定义函数对单元格数组中的数值元素进行平方。

输出

 
Squared Cell Elements:
1     4     9    16   

用例

  • 该系统处理文本输入和输出任务,包括字符串长度测量和文本转换。
  • 您可以对单元格数组集合中的每个数字执行数学任务。
  • 我们的自定义函数使我们能够同时处理不同类型的 数据结构

使用 containers.Map 进行映射

MATLAB 的 containers.Map 提供了一种键值存储方法,因此您可以通过其关联的键轻松访问数据。

语法

  • keys: 一组唯一的键。
  • values: 每个键都包含一个关联的值项。

示例 1:创建地图并通过其键检索值。

输出

 
Value for Apple:
    10   

示例 2:更新值并检查键是否存在。

输出

 
Updated Value for Banana:
    25
Cherry is in the map.   

主要特点

  • 数据可以快速将其键值对连接到存储元素中。
  • 条目更改会实时自动发生。
  • 使用 isKey() 查找集合中是否存在元素。

用例

  • 系统管理所有配置设置。
  • 数据元素通过此系统接收元数据标签。
  • 我们制作字典以帮助快速查找数据。

MATLAB 中映射函数的高级特性和技术

1. 映射中的匿名函数和内联函数

即时计算的内联示例

匿名函数 通过让您免于设置永久函数块来提供临时编程解决方案。当您必须个性化数组处理而无需创建额外的专用函数时,这种方法会很方便。

  • 示例: 通过运行函数,它将生成向量中所有值的倒数。

输出

 
1.0000    0.5000    0.3333    0.2500    0.2000   

内联函数通过在单个文件中查找所有数据值的倒数来处理它们。

2. 嵌套和多级映射

嵌套数据结构中的映射函数

通过 MATLAB,您可以将函数映射到基本数组和高级组织结构,例如单元格数组和跨多个维度的数组。此功能最适合需要特定级别函数的层次数据结构。

  • 单元格数组示例:一个单元格数组在其整个结构中包含组织在单独单元格中的数值数组。要确定单元格数组内每个数组的总和,可以使用 cellfun 功能。

输出

 
6   15   24   

sum 函数通过使用 cellfun 计算所有总值,扩展到单元格数组中的每个数值数组。

多维数组示例

在多维数组上使用函数仍然易于实现。当您打算将 3x3 矩阵中的所有 9 个数字乘以 2 时

输出

 
2   4   6
 8  10  12
14  16  18   

arrayfun 命令执行将矩阵乘以 2 的操作,并同时对所有元素运行它。

3. 并行计算中的映射

大规模数据集的映射操作并行化

处理大数据集时,将函数应用于每个单独项目的成本会迅速增加。MATLAB 中内置的并行计算工具可帮助用户将映射作业分解到多个处理器上,从而加快数据密集型映射的速度。

MATLAB 提供 pararrayfun,它在多个计算资源之间分配工作以复制 arrayfun 的功能。它有助于在处理大型数据集的复杂函数期间加快计算速度。

  • 语法

带有参数 n 的命令将工作分配到 CPU 内核,同时将函数 fun 应用于数据元素。

  • 示例: 我们的任务是计算数据集中许多数字的平方根。pararrayfun 使我们能够将工作分配到多个内核