MATLAB の 3D マトリックスにベクトルを追加

Ammar Ali 2024年2月15日
MATLAB の 3D マトリックスにベクトルを追加

このチュートリアルでは、MATLAB の cat() 関数を使用して 3D 行列にベクトルを追加する方法について説明します。

MATLAB の 3D マトリックスにベクトルを追加

3D マトリックスまたは配列は、2D マトリックスまたは配列とは異なります。2D 行列または配列には、最初の次元が行と呼ばれ、2 番目の次元が列と呼ばれる 2つの次元があります。

3D マトリックスまたはアレイには、最初の 2つの次元が 2D マトリックスまたはアレイと同じである、3つの次元があり、3 番目の次元はページまたはシートと呼ばれます。単純な 3D マトリックスまたは配列を以下に示します。

3D マトリックス

2D マトリックスまたは配列では、各要素は特定の場所または行と列の番号に配置され、その場所を使用して要素を取得および置換できます。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 は、3 次元に関して 3D 配列または行列を表示します。上記の例では、2 ページの 3D マトリックスがあり、各ページには 1 行 2 列の 2D マトリックスが出力に表示されます。

3D マトリックスから要素を取得する場合は、行、列、ページ番号などの場所を指定する必要があります。上記の 3D 行列または配列の最後に別のベクトルを追加または追加する場合は、cat() 関数を使用できます。この関数は、指定された次元に従って 2つの行列を連結します。

cat() 関数には 3つの入力引数があり、最初の引数は次元番号、2 番目の引数は 3D 行列、3 番目の引数は 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() 関数内で渡した次元のサイズとベクトルのサイズが同じである必要があります。

上記の例では、各ページに 1つの行しかないため、エラーは発生していません。複数の行を持つ 3D マトリックスがある場合、3 次元またはページのサイズは、指定されたベクトルのサイズとは異なります。

この問題を解決するために、zeros() 関数を使用してゼロのベクトルを作成できます。これは、3 次元またはページと同じサイズになります。次に、ゼロ行列の最初の配列を指定されたベクトルに置き換えることができます。。これで、指定されたベクトルは余分なゼロを持つ行列になり、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 行列の各ページに列が 1つしかなく、そのサイズが入力列ベクトルのサイズと等しい場合は、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 マトリックスを作成しました。最初のページの最初の行を別のベクトルに置き換えました。

上記の出力でわかるように、最初のページの最初の行を置き換えたため、出力に表示されるテキストの前後の出力は異なります。置き換えられる行サイズと新しい行は同じである必要があります。

ページ全体または任意のディメンションを別のマトリックスまたは配列に置き換えることもできますが、サイズは同じである必要があります。

著者: Ammar Ali
Ammar Ali avatar Ammar Ali avatar

Hello! I am Ammar Ali, a programmer here to learn from experience, people, and docs, and create interesting and useful programming content. I mostly create content about Python, Matlab, and Microcontrollers like Arduino and PIC.

LinkedIn Facebook

関連記事 - MATLAB Matrix