Main Content

repmat

配列のコピーの繰り返し

説明

B = repmat(A,n) は、行と列の次元に A のコピーを n 個含む配列を返します。A が行列の場合、B のサイズは size(A)*n です。

B = repmat(A,r1,...,rN) は、スカラーのリスト r1,..,rN を指定します。このリストは、各次元への A のコピーの配置方法を指定します。A の次元が N の場合、B のサイズは size(A).*[r1...rN] です。たとえば、repmat([1 2; 3 4],2,3) は 4 行 6 列の行列を返します。

B = repmat(A,r) は、行ベクトル r を使って繰り返しの方法を指定します。たとえば、repmat(A,[2 3])repmat(A,2,3) と同じ結果を返します。

すべて折りたたむ

要素に値 10 が含まれる 3 行 2 列の行列を作成します。

A = repmat(10,3,2)
A = 3×2

    10    10
    10    10
    10    10

行列のコピーを繰り返して 2 行 2 列のブロック配置にします。

A = diag([100 200 300])
A = 3×3

   100     0     0
     0   200     0
     0     0   300

B = repmat(A,2)
B = 6×6

   100     0     0   100     0     0
     0   200     0     0   200     0
     0     0   300     0     0   300
   100     0     0   100     0     0
     0   200     0     0   200     0
     0     0   300     0     0   300

行列のコピーを繰り返して 2 行 3 列のブロック配置にします。

A = diag([100 200 300])
A = 3×3

   100     0     0
     0   200     0
     0     0   300

B = repmat(A,2,3)
B = 6×9

   100     0     0   100     0     0   100     0     0
     0   200     0     0   200     0     0   200     0
     0     0   300     0     0   300     0     0   300
   100     0     0   100     0     0   100     0     0
     0   200     0     0   200     0     0   200     0
     0     0   300     0     0   300     0     0   300

行列のコピーを繰り返して 2×3×2 のブロック配置にします。

A = [1 2; 3 4]
A = 2×2

     1     2
     3     4

B = repmat(A,[2 3 2])
B = 
B(:,:,1) =

     1     2     1     2     1     2
     3     4     3     4     3     4
     1     2     1     2     1     2
     3     4     3     4     3     4


B(:,:,2) =

     1     2     1     2     1     2
     3     4     3     4     3     4
     1     2     1     2     1     2
     3     4     3     4     3     4

行ベクトルを垂直に 4 回積み重ねます。

A = 1:4;
B = repmat(A,4,1)
B = 4×4

     1     2     3     4
     1     2     3     4
     1     2     3     4
     1     2     3     4

列ベクトルを水平に 4 回積み重ねます。

A = (1:3)';  
B = repmat(A,1,4)
B = 3×4

     1     1     1     1
     2     2     2     2
     3     3     3     3

変数 Age および Height をもつ table を作成します。

A = table([39; 26],[70; 63],'VariableNames',{'Age' 'Height'})
A=2×2 table
    Age    Height
    ___    ______

    39       70  
    26       63  

テーブルのコピーを繰り返して 2 行 3 列のブロック形式にします。

B = repmat(A,2,3)
B=4×6 table
    Age    Height    Age_1    Height_1    Age_2    Height_2
    ___    ______    _____    ________    _____    ________

    39       70       39         70        39         70   
    26       63       26         63        26         63   
    39       70       39         70        39         70   
    26       63       26         63        26         63   

repmat は、table のエントリを繰り返し、新しい変数名に番号を追加します。

2 列のベクトルを作成します。

A = [1; 3; 5];
B = [2; 4];

repelem および repmat を使用して 2 つのベクトルのすべての要素の組み合わせを生成します。出力 T の各行は、最初のベクトルからの最初の要素と 2 番目のベクトルからの 2 番目の要素の組み合わせです。このコマンドは、2 つのベクトルのデカルト積を求めることと等価です。

T = [repelem(A,numel(B)) repmat(B,numel(A),1)]
T = 6×2

     1     2
     1     4
     3     2
     3     4
     5     2
     5     4

R2023a 以降では、関数combinationsを使用して、2 つのベクトルの要素のすべての組み合わせを生成することもできます。

T = combinations(A,B)
T=6×2 table
    A    B
    _    _

    1    2
    1    4
    3    2
    3    4
    5    2
    5    4

入力引数

すべて折りたたむ

入力配列。スカラー、ベクトル、行列または多次元配列として指定します。

データ型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | logical | char | string | struct | table | datetime | duration | calendarDuration | categorical | cell
複素数のサポート: あり

入力配列を行と列の次元で繰り返す回数。整数値として指定します。n0 または負の値の場合、結果は空の配列になります。

データ型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

各次元の繰り返し数。整数値の個別の引数として指定します。0 または負の繰り返し数が含まれる場合、結果は空の配列になります。

データ型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

各次元の繰り返し数のベクトル。整数値の行ベクトルとして指定します。r0 または負の値が含まれている場合、結果は空の配列になります。

データ型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

ヒント

  • 1 の配列をもつ入力のテンソル積を形成してブロック配列を作成するには、kron を使用してください。たとえば、行ベクトル A = 1:3 を縦に 4 回積み重ねる場合、B = kron(A,ones(4,1)) を使用します。

  • 1 度の呼び出しでブロック配列を作成して二項演算を実行するには、bsxfun を使用してください。場合によっては、bsxfun で、よりシンプルかつメモリ効率の高いソリューションが提供されます。たとえば、ベクトル A = 1:5B = (1:10)' を追加して 10 行 5 列の配列を生成するには、repmat(A,10,1) + repmat(B,1,5) ではなく、bsxfun(@plus,A,B) を使用します。

  • A が特定のタイプのスカラーである場合、他の関数を使用して repmat と同じ結果を得ることができます。

    repmat 構文等価な代替法
    repmat(NaN,m,n)NaN(m,n)
    repmat(single(inf),m,n)inf(m,n,'single')
    repmat(int8(0),m,n)zeros(m,n,'int8')
    repmat(uint32(1),m,n)ones(m,n,'uint32')
    repmat(eps,m,n)eps(ones(m,n))

拡張機能

HDL コード生成
HDL Coder™ を使用して FPGA 設計および ASIC 設計のための VHDL、Verilog および SystemVerilog のコードを生成します。

バージョン履歴

R2006a より前に導入

すべて展開する