在 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 矩陣。我們用另一個向量替換了第一頁的第一行。
正如我們在上面的輸出中看到的,輸出上顯示的文字之前和之後的輸出是不同的,因為我們替換了第一頁的第一行。被替換的行大小和新行應該相同。
我們也可以用另一個矩陣或陣列替換整個頁面或任何維度,但大小應該相同。