在 MATLAB 中将向量附加到 3D 矩阵
本教程将讨论使用 MATLAB 中的 cat()
函数将向量附加到 3D 矩阵。
在 MATLAB 中将向量附加到 3D 矩阵
3D 矩阵或阵列不同于 2D 矩阵或阵列。在二维矩阵或数组中,我们有两个维度,其中第一个维度称为行,第二个维度称为列。
在 3D 矩阵或数组中,我们有 3 个维度,其中前两个维度与 2D 矩阵或数组相同,第三个维度称为页面或表格。一个简单的 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 矩阵。我们用另一个向量替换了第一页的第一行。
正如我们在上面的输出中看到的,输出上显示的文本之前和之后的输出是不同的,因为我们替换了第一页的第一行。被替换的行大小和新行应该相同。
我们也可以用另一个矩阵或数组替换整个页面或任何维度,但大小应该相同。