repmat
配列のコピーの繰り返し
説明
例
同じ要素値をもつ行列の初期化
正方形ブロックの形式
行列のコピーを繰り返して 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
3 次元ブロックの配列
行列のコピーを繰り返して 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
行ベクトルの垂直スタック
列ベクトルの水平スタック
テーブル ブロックの形式
変数 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
入力引数
A
— 入力配列
スカラー | ベクトル | 行列 | 多次元配列
入力配列。スカラー、ベクトル、行列または多次元配列として指定します。
データ型: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| logical
| char
| string
| struct
| table
| datetime
| duration
| calendarDuration
| categorical
| cell
複素数のサポート: あり
n
— 入力配列を行と列の次元で繰り返す回数
整数値
入力配列を行と列の次元で繰り返す回数。整数値として指定します。n
が 0
または負の値の場合、結果は空の配列になります。
データ型: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
r1,...,rN
— 各次元の繰り返し数 (個別の引数として指定)
整数値
各次元の繰り返し数。整数値の個別の引数として指定します。0
または負の繰り返し数が含まれる場合、結果は空の配列になります。
データ型: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
r
— 各次元の繰り返し数のベクトル (行ベクトルとして指定)
整数値
各次元の繰り返し数のベクトル。整数値の行ベクトルとして指定します。r
に 0
または負の値が含まれている場合、結果は空の配列になります。
データ型: 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:5
とB = (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))
拡張機能
tall 配列
メモリの許容量を超えるような多数の行を含む配列を計算します。
この関数は tall 配列を制限付きでサポートしています。
最初の次元の複製係数は 1 でなければなりません。たとえば、
repmat(TA,1,n,p,...)
のようになります。
詳細については、tall 配列を参照してください。
C/C++ コード生成
MATLAB® Coder™ を使用して C および C++ コードを生成します。
使用上の注意および制限:
サイズの引数は固定サイズでなければなりません。
スパース行列の場合、関数
repmat
は最初の 2 つの次元の後に続く 1 を入力としてサポートしません。
GPU コード生成
GPU Coder™ を使用して NVIDIA® GPU のための CUDA® コードを生成します。
使用上の注意および制限:
サイズの引数は固定サイズでなければなりません。
スパース行列の場合、関数
repmat
は最初の 2 つの次元の後に続く 1 を入力としてサポートしません。
HDL コード生成
HDL Coder™ を使用して FPGA 設計および ASIC 設計のための VHDL、Verilog および SystemVerilog のコードを生成します。
スレッドベースの環境
MATLAB® の backgroundPool
を使用してバックグラウンドでコードを実行するか、Parallel Computing Toolbox™ の ThreadPool
を使用してコードを高速化します。
この関数はスレッドベースの環境を完全にサポートしています。詳細については、スレッドベースの環境での MATLAB 関数の実行を参照してください。
GPU 配列
Parallel Computing Toolbox™ を使用してグラフィックス処理装置 (GPU) 上で実行することにより、コードを高速化します。
関数 repmat
は GPU 配列を完全にサポートしています。この関数を GPU で実行するには、入力データを gpuArray
(Parallel Computing Toolbox) として指定します。詳細については、GPU での MATLAB 関数の実行 (Parallel Computing Toolbox)を参照してください。
分散配列
Parallel Computing Toolbox™ を使用して、クラスターの結合メモリ上で大きなアレイを分割します。
この関数は分散配列を完全にサポートしています。詳細については、分散配列を使用した MATLAB 関数の実行 (Parallel Computing Toolbox)を参照してください。
バージョン履歴
R2006a より前に導入R2019b: 繰り返しに関する一部の引数によってエラーが発生
R2019b 以降、繰り返しに関する引数が非スカラーまたは空である一部の構文でエラーが発生します。次の表で、これらの構文の更新方法を説明します。
エラー | 代替方法 |
---|---|
repmat(A,r1,r2) 、ここで r1 および r2 は行ベクトルです。 | repmat(A,[r1 r2]) |
repmat(A,empt) 、ここで empt は空の配列です。 | repmat(A,1) |
repmat(A,empt1,empt2) 、ここで empt1 および empt2 は空の配列です。 | repmat(A,1) |
repmat(A,n,empt) 、ここで n は整数で empt は空の配列です。 | repmat(A,[n 1]) |
MATLAB コマンド
次の MATLAB コマンドに対応するリンクがクリックされました。
コマンドを MATLAB コマンド ウィンドウに入力して実行してください。Web ブラウザーは MATLAB コマンドをサポートしていません。
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)