迹忆客 专注技术分享

当前位置:主页 > 学无止境 > 编程语言 > MATLAB >

在 MATLAB 中将向量附加到 3D 矩阵

作者:迹忆客 最近更新:2023/03/19 浏览次数:

本教程将讨论使用 MATLAB 中的 cat() 函数将向量附加到 3D 矩阵。

在 MATLAB 中将向量附加到 3D 矩阵

3D 矩阵或阵列不同于 2D 矩阵或阵列。在二维矩阵或数组中,我们有两个维度,其中第一个维度称为行,第二个维度称为列。

在 3D 矩阵或数组中,我们有 3 个维度,其中前两个维度与 2D 矩阵或数组相同,第三个维度称为页面或表格。一个简单的 3D 矩阵或数组如下所示。

3d 矩阵

在二维矩阵或数组中,每个元素都放置在特定位置或行列号上,我们可以使用其位置获取和替换元素。在 3D 矩阵或数组中,每个元素都放置在特定的位置、行、列和页码上,我们可以使用它的位置来获取和替换元素。

例如,3D 矩阵或数组中的第一个元素将被放置在位置 (1,1,1),这也显示在上图中。如果我们想在 3D 矩阵的末尾附加一个向量,向量的大小应该与 3D 矩阵中存在的每一页或第 3 维的大小相同。

例如,让我们创建一个具有 1 行、2 列和 2 页的 3D 矩阵或数组。请参阅下面的代码。

clc
clear

MyMatrix   = ones(1,2,2)

输出:

MyMatrix(:,:,1) =

     1     1


MyMatrix(:,:,2) =

     1     1

MATLAB 显示关于第三维的 3D 数组或矩阵。在上面的示例中,我们有一个包含 2 个页面的 3D 矩阵,每个页面将有一个 1 行 2 列的 2D 矩阵,显示在输出中。

如果我们想从 3D 矩阵中获取一个元素,我们必须给出它的位置,比如行、列和页码。如果我们想在上述 3D 矩阵或数组的末尾追加或添​​加另一个向量,我们可以使用 cat() 函数,它根据给定的维度连接两个矩阵。

cat() 函数有三个输入参数,其中第一个参数是维数,第二个参数是 3D 矩阵,第三个参数是我们要附加到 3D 矩阵的向量或矩阵。在我们的例子中,我们想要在 3D 矩阵的末尾添加向量,这意味着我们想要在最后一页之后添加向量。

cat() 函数将在 3D 矩阵中创建另一个页面来存储给定的向量。

例如,让我们使用 cat() 函数在上述 3D 矩阵或数组的末尾创建并附加一个向量。请参阅下面的代码。

MyVector = [5 6];
MyMatrix   = ones(1,2,2)
s = "After Adding Another Vector"
MyMatrix = cat(3, MyMatrix, MyVector)

输出:

MyMatrix(:,:,1) =

     1     1


MyMatrix(:,:,2) =

     1     1


s =

    "After Adding Another Vector"


MyMatrix(:,:,1) =

     1     1


MyMatrix(:,:,2) =

     1     1


MyMatrix(:,:,3) =

     5     6

正如我们在上面的输出中看到的,3D 矩阵在连接后有 3 页,最后一页包含输入向量。为了成功连接,我们在 cat() 函数中传递的维度大小和向量大小应该相同。

在上面的例子中,我们每页只有一行,所以我们没有遇到任何错误。如果我们有一个多于一行的 3D 矩阵,则第三维或页面的大小将与给定向量的大小不同。

为了解决这个问题,我们可以使用 zeros() 函数创建一个零向量,其大小与第三维或页面相同,然后我们可以将零矩阵的第一个数组替换为给定的向量.现在,给定的向量将变成一个带有额外零的矩阵,我们可以轻松地将其添加或附加到 3D 矩阵的末尾。

例如,让我们创建一个 2 行、2 列和 2 页的 3D 矩阵,然后使用上述方法添加给定的向量。请参阅下面的代码。

clc
clear

MyVector = [5 6];
MyMatrix   = ones(2,2,2)
NewVector = zeros(2,2)
NewVector(1,:) = MyVector
s = "After Adding Another Vector"
MyMatrix = cat(3, MyMatrix, NewVector)

输出:

MyMatrix(:,:,1) =

     1     1
     1     1


MyMatrix(:,:,2) =

     1     1
     1     1


NewVector =

     0     0
     0     0


NewVector =

     5     6
     0     0


s =

    "After Adding Another Vector"


MyMatrix(:,:,1) =

     1     1
     1     1


MyMatrix(:,:,2) =

     1     1
     1     1


MyMatrix(:,:,3) =

     5     6
     0     0

我们可以在上面的输出中看到向量被添加到 3D 矩阵中,但我们还必须添加零以使大小相等。如果我们想添加一个列向量,我们必须遵循上面讨论的相同方法。

如果 3D 矩阵在每一页上只有一列,并且它的大小等于输入列向量的大小,我们可以使用 cat() 函数轻松添加它们。如果 3D 矩阵有多于一列或大小不同,我们必须通过沿给定列向量添加零来使大小相等,然后我们可以使用我们在案例中使用的相同方法将其添加到 3D 矩阵添加行向量。

我们还可以替换 3D 矩阵的行、列或整页。例如,让我们使用 ones() 函数创建一个 3D 矩阵,并使用 append 运算符替换第一页的第一行。

请参阅下面的代码。

clc
clear

MyVector = [5 6];
MyMatrix   = ones(2,2,2)
s = "After replacing row"
MyMatrix(1,:,1) = MyVector

输出:

MyMatrix(:,:,1) =

     1     1
     1     1


MyMatrix(:,:,2) =

     1     1
     1     1


s =

    "After replacing row"


MyMatrix(:,:,1) =

     5     6
     1     1


MyMatrix(:,:,2) =

     1     1
     1     1

在上面的代码中,我们创建了一个 2 行、2 列和 2 页的 3D 矩阵。我们用另一个向量替换了第一页的第一行。

正如我们在上面的输出中看到的,输出上显示的文本之前和之后的输出是不同的,因为我们替换了第一页的第一行。被替换的行大小和新行应该相同。

我们也可以用另一个矩阵或数组替换整个页面或任何维度,但大小应该相同。

转载请发邮件至 1244347461@qq.com 进行申请,经作者同意之后,转载请以链接形式注明出处

本文地址:

相关文章

在 MATLAB 中注释多行

发布时间:2023/04/23 浏览次数:111 分类:MATLAB

可以使用注释块方法或 MATLAB 编辑器在 MATLAB 中注释多行。

MATLAB 最大索引

发布时间:2023/04/23 浏览次数:192 分类:MATLAB

在本教程中,我们将讨论如何使用 MATLAB 中的 max() 函数从数组及其索引中查找最大值。

MATLAB 索引超出矩阵尺寸

发布时间:2023/04/23 浏览次数:103 分类:MATLAB

要解决索引超出矩阵索引的问题,请检查你要获取或替换数据的索引。

MATLAB 检查变量类型

发布时间:2023/04/23 浏览次数:92 分类:MATLAB

在本教程中,我们将讨论如何使用 MATLAB 中的 class() 和 whos 函数检查给定变量的类型。

MATLAB vs Octave

发布时间:2023/04/23 浏览次数:74 分类:MATLAB

我们可以说 Octave 是 MATLAB 的免费版本。

MATLAB MAT 文件

发布时间:2023/04/23 浏览次数:89 分类:MATLAB

可以使用 MAT 文件在 MATLAB 中存储和加载格式化的数据。

MATLAB asv 文件

发布时间:2023/04/23 浏览次数:180 分类:MATLAB

.asv 文件是 MATLAB 生成的自动保存文件,因此在计算机崩溃时你不会丢失数据。

MATLAB 三元运算符

发布时间:2023/04/23 浏览次数:130 分类:MATLAB

MATLAB 中没有三元运算符,因此你必须使用标准格式。

MATLAB & vs &&

发布时间:2023/04/23 浏览次数:134 分类:MATLAB

在 MATLAB 中,&是逻辑与运算符,&&也是表现出短路行为的逻辑运算符。

扫一扫阅读全部技术教程

社交账号
  • https://www.github.com/onmpw
  • qq:1244347461

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便