MATLAB Repmat
このチュートリアルでは、MATLAB の repmat()
関数を使用して、配列の繰り返し値を使用してマトリックスを作成する方法について説明します。
MATLAB repmat()
関数
repmat()
関数は、小さな配列から大きな行列を作成します。この関数は、配列の指定された値を繰り返して、大きな行列を作成します。
repmat()
関数には 3つの基本的な構文があります。最初の構文を以下に示します。
M = repmat(A,n);
上記の構文は、行と列の次元に A
の n
コピーを含む配列を返します。A
が行列の場合、出力行列 M
は行列 A
のサイズに n
を掛けたものに等しくなり、A
のサイズより大きくなります。
repmat()
関数の最初の引数は、入力配列がスカラー、マトリックス、ベクトル、または多次元配列である可能性があることです。2 番目の引数は、入力配列が行と列の次元で繰り返される回数を設定します。
repmat()
関数の 2 番目の構文は次のとおりです。
M = repmat(A,r1,...,rN);
上記の構文は、各次元での A
のコピーの配置を説明するスカラーのリストを返します。A
が N
次元のマトリックスである場合、M
のサイズは A
のサイズよりも大きくなります。
r1
は、入力配列が最初の次元で繰り返される回数を定義します。repmat()
関数の 3 番目の構文を以下に示します。
M = repmat(A,r);
上記の構文は、行ベクトル r
の繰り返しスキームに従って、行と列の次元に A
のコピーを含む配列を返します。
たとえば、ベクトル r
を使用して、指定された配列または行列が行および列の次元で繰り返される回数を定義できます。このベクトルには、入力配列または行列が繰り返されて出力が作成される回数が含まれます。マトリックス。
repmat()
関数を使用して、単一の値を繰り返すことでマトリックスを作成できます。たとえば、値 5 を含む 2 行 2 列のマトリックスを作成しましょう。
以下のコードを参照してください。
clc
clear
M = repmat(5,2,2)
出力:
M =
5 5
5 5
clc
および clear
コマンドは、上記のコードのコマンドおよびワークスペースウィンドウをクリアするために使用されます。出力は、数値 5 のみを含む 2 行 2 列のマトリックスです。
repmat()
関数を使用して、別のマトリックスの繰り返しからマトリックスを作成することもできます。たとえば、diag()
関数を使用して対角線行列を作成してから、対角線行列を繰り返して行列を作成しましょう。
以下のコードを参照してください。
clc
clear
D = diag([5 15 25])
M = repmat(D,2,3)
出力:
D =
5 0 0
0 15 0
0 0 25
M =
5 0 0 5 0 0 5 0 0
0 15 0 0 15 0 0 15 0
0 0 25 0 0 25 0 0 25
5 0 0 5 0 0 5 0 0
0 15 0 0 15 0 0 15 0
0 0 25 0 0 25 0 0 25
上記のコードでは、対角行列を行次元で 2 回、列次元で 3 回繰り返しました。
入力が 3 行であるため、出力マトリックスのサイズは 6 x 9 になり、出力行のサイズが 6 になるように 2 回繰り返し、入力マトリックスは 3 列で、3 回繰り返しました。出力列のサイズが 9 になるようにします。
repmat()
関数を使用して 3D マトリックスを作成することもできます。繰り返しスキームでは 3つの値を使用する必要があります。
たとえば、repmat()
関数を使用して 6 x 3x2 のマトリックスを作成しましょう。以下のコードを参照してください。
clc
clear
D = diag([5 15 25])
M = repmat(D,2,1,2)
出力:
D =
5 0 0
0 15 0
0 0 25
M(:,:,1) =
5 0 0
0 15 0
0 0 25
5 0 0
0 15 0
0 0 25
M(:,:,2) =
5 0 0
0 15 0
0 0 25
5 0 0
0 15 0
0 0 25
ご覧のとおり、出力マトリックスは 3 次元マトリックスです。行ベクトルの水平または垂直スタックを使用してマトリックスを作成することもできます。
たとえば、あるディメンションでベクトルを繰り返したくない場合は、その場所に 1 を渡すことができます。repmat()
関数内で、2 番目の引数は 1 番目または行の次元の繰り返しスキームを定義します。
3 番目の引数は、2 番目または列の次元の繰り返しスキームを定義します。
たとえば、行ベクトルの水平スタックを持つマトリックスを作成しましょう。以下のコードを参照してください。
clc
clear
D = (1:5)'
M = repmat(D,1,5)
出力:
D =
1
2
3
4
5
M =
1 1 1 1 1
2 2 2 2 2
3 3 3 3 3
4 4 4 4 4
5 5 5 5 5
上記のコードでは、指定されたベクトルを転置して列ベクトルに変換し、水平スタックを作成しましたが、垂直スタックの場合は、指定されたベクトルの転置を行う必要はありません。
repmat()
関数を使用して、小さなテーブルから大きなテーブルを作成することもできます。たとえば、table()
関数を使用してテーブルを作成し、最初のテーブルから別の大きなテーブルを作成してみましょう。
以下のコードを参照してください。
clc
clear
T_1 = table([19; 16],[60; 53],'VariableNames',{'Age' 'Height'})
T_2 = repmat(T_1, 2,2)
出力:
T_1 =
2×2 table
Age Height
___ ______
19 60
16 53
T_2 =
4×4 table
Age Height Age_1 Height_1
___ ______ _____ ________
19 60 19 60
16 53 16 53
19 60 19 60
16 53 16 53
上記のコードでは、行と列のディメンションを 2 回繰り返して、より大きなテーブルを作成しました。