MATLAB 中的多维数组

17 Mar 2025 | 4 分钟阅读
  • 具有超过两个维度的数组称为多维数组。
  • 多维数组在 MATLAB 中使用两个以上下标创建。
  • 例如
    • 让我们使用函数 `ones(3, 8, 3)` 创建一个三维数组。
    • 此函数创建一个 3x8x3 的数组,总共有 3*8*3 = 72 个元素。
    • 第三个下标指示根据第一个和第二个下标创建行和列中元素的集合数量。
Multi-Dimensional Arrays in MATLAB
    • 让我们看另一个例子
    • 这里我们使用了一些其他函数,其中一个是 perms 函数。
    • perms 函数返回将矩阵或向量的元素以不同的行向量顺序排列的所有可能方式或排列。
Multi-Dimensional Arrays in MATLAB
Multi-Dimensional Arrays in MATLAB

上述 3D 数组的示意图

Multi-Dimensional Arrays in MATLAB

MATLAB 中的单元数组

单元格是 MATLAB 中的功能数据对象。它可以包含任何数据,数字数组、字符串、结构体或单元格。单元格的数组称为 单元数组

例如,单元数组的一个单元格包含一个实数数组,另一个包含一个字符串数组,还有一个包含一个复数向量。

Multi-Dimensional Arrays in MATLAB

在编程术语中,单元数组的每个元素都是指向另一个数据结构的指针,并且这些数据结构可以是不同的类型。

单元数组提供了一种收集问题信息的好方法,因为所有数据可以放在一起并通过单个名称访问。

单元数组使用大括号 `:{}` 而不是小括号 `()` 来选择和显示单元格的内容。这种差异是因为单元数组包含数据结构而不是数据。假设单元数组 `a` 定义如下所示。

Multi-Dimensional Arrays in MATLAB

那么元素 `a(1, 1)` 的内容是一个包含 3x3 数字数据数组的数据结构,并且对 `a(1, 1)` 的引用显示单元格的内容,即数据结构。

相比之下,对 `a{1, 1}` 的引用显示单元格中包含的数据项的内容。

Multi-Dimensional Arrays in MATLAB

注意: `a(1,1)` 表示单元格 `a(1,1)` 的内容(它是一个数据结构),而 `a{1,1}` 表示单元格内数据结构的内容。

创建单元数组

可以使用 cell 函数创建单元数组。

Multi-Dimensional Arrays in MATLAB
  • 我们也可以使用花括号创建单元数组
Multi-Dimensional Arrays in MATLAB
  • 使用花括号访问单元数组的元素
Multi-Dimensional Arrays in MATLAB
  • 使用单元数组存储不同大小的数组
Multi-Dimensional Arrays in MATLAB

MATLAB 中的结构体数组

结构体是一种数据类型,其中每个单独的元素都有一个名称。

结构体的单独元素称为 字段,结构体中的每个字段可能具有不同的类型。

通过将结构体名称与字段名称结合,并用句点分隔,来寻址各个字段。

字段中的数据使用点表示法访问。

创建结构体

在 MATLAB 中有几种创建结构体的方法。

使用点表示法创建结构体数组

  • 点表示法用于命名结构体数组的字段。
Multi-Dimensional Arrays in MATLAB

向结构体数组添加元素

  • 因为结构体在 MATLAB 中也是数组,所以我们可以根据索引插入额外的元素。
Multi-Dimensional Arrays in MATLAB
  • 这里要记住的一点是,添加更多元素时,所有字段的名称都应该相同。
  • 命令的结构
Multi-Dimensional Arrays in MATLAB

使用 `struct` 命令通过单条语句添加元素

  • 我们可以使用单条语句向结构体数组添加元素。
  • 所有字段和值对都在 struct 命令参数中定义。
Multi-Dimensional Arrays in MATLAB

访问结构体数组的元素

  • 我们可以使用索引访问结构体的任何元素。
Multi-Dimensional Arrays in MATLAB
  • 我们可以将元素的值分配给另一个变量。
Multi-Dimensional Arrays in MATLAB

MATLAB 中的子数组

选择并使用 MATLAB 数组的子集,就像它们是分开的数组一样,这是很方便的。要选择数组的一部分,需要在数组名后的括号中包含所有要选择的项的列表。

例如,假设数组 `arr1` 描述如下

Multi-Dimensional Arrays in MATLAB

那么 `arr1(3)` 就是 3,`arr1([1 4])` 是数组 `[1.1 -4.4]`,`arr1(1:2:5)` 是数组 `[1.1 3.3 5.5]`。

对于二维数组,可以在下标中使用冒号来选择该下标的所有值。例如,假设

Multi-Dimensional Arrays in MATLAB

此语句将创建 `arr2` 数组,包括这些值。

Multi-Dimensional Arrays in MATLAB

子数组 `arr2(1, :)` 将是 `[1 2 3]`,子数组 `arr2(:, 1:2:3)` 将是

Multi-Dimensional Arrays in MATLAB

`end` 函数

MATLAB 包含一个名为 `end` 的特殊函数,它对于创建数组下标非常有用。当在数组下标中使用时,`end` 返回该下标的最大值。

例如,假设数组 `arr3` 描述如下

Multi-Dimensional Arrays in MATLAB

那么 `arr3(5: end)` 将是数组 `[5 6 7 8]`,`array(end)` 将是值 8。

`end` 返回的值始终是给定下标的最大值。如果 `end` 出现在不同的下标中,它可以在同一表达式中返回不同的值。

例如,假设 3x4 数组 `arr4` 定义如下

Multi-Dimensional Arrays in MATLAB

那么表达式 `arr4(2: end, 2: end)` 将返回数组。

Multi-Dimensional Arrays in MATLAB

注意:第一个 `end` 返回值 3,而第二个 `end` 返回值 4!