Main Content

reshape

既存の要素を再配列して配列を形状変更する

説明

B = reshape(A,sz) は、A の形状をサイズ ベクトル sz で定義される size(B) に変更します。たとえば reshape(A,[2,3])A を 2 行 3 列の行列に形状変更します。sz には少なくとも 2 つの要素が必要で、prod(sz)numel(A) と同じでなければなりません。

B = reshape(A,sz1,...,szN) は、A の形状を sz1×...×szN の配列に変更します。sz1,...,szN は各次元のサイズを示します。1 つの次元のサイズを [] として指定すると、その次元のサイズを自動で計算することができます。B の要素の数が A の要素の数と一致するようにサイズが計算されます。たとえば A が 10 行 10 列の行列の場合、reshape(A,2,2,[]) と指定すると A の 100 個の要素から 2×2×25 の配列が生成されます。

すべて折りたたむ

1 行 10 列のベクトルを 5 行 2 列の行列に形状変更します。

A = 1:10;
B = reshape(A,[5,2])
B = 5×2

     1     6
     2     7
     3     8
     4     9
     5    10

4 行 4 列の正方行列の形状を、2 列の行列に変更します。最初の次元を [] として指定して、適切な行数を reshape で自動計算します。

A = magic(4)
A = 4×4

    16     2     3    13
     5    11    10     8
     9     7     6    12
     4    14    15     1

B = reshape(A,[],2)
B = 8×2

    16     3
     5    10
     9     6
     4    15
     2    13
    11     8
     7    12
    14     1

結果は 8 行 2 列の行列となります。この行列の要素の数は元の行列と同じになります。B の要素の列方向の順序も A の順序が維持されます。

乱数値の 2×2×3 配列を 6 行 2 列の行列に形状変更します。

rng default
A = rand(2,2,3)
A = 
A(:,:,1) =

    0.8147    0.1270
    0.9058    0.9134


A(:,:,2) =

    0.6324    0.2785
    0.0975    0.5469


A(:,:,3) =

    0.9575    0.1576
    0.9649    0.9706

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

    0.8147    0.2785
    0.9058    0.5469
    0.1270    0.9575
    0.9134    0.9649
    0.6324    0.1576
    0.0975    0.9706

入力引数

すべて折りたたむ

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

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

出力サイズ。整数の行ベクトルとして指定します。sz の各要素は B の対応する次元のサイズを示します。szAB の要素の数が同じになるように指定しなければなりません。つまり、prod(sz)numel(A) が同じでなければなりません。

2 番目より後の次元のサイズが 1 の場合、それらの次元は出力 B に反映されません。たとえば reshape(A,[3,2,1,1]) では 3 行 2 列の行列が生成されます。

例: reshape(A,[3,2])

例: reshape(A,[6,4,10])

例: reshape(A,[5,5,5,5])

各次元のサイズ。2 つ以上の整数として指定します。オプションで [] を 1 つだけ使用できます。次元のサイズは少なくとも 2 つ指定しなければならず、[] として指定できるのは 1 つだけです。これを指定すると、その次元のサイズが numel(B)numel(A) が一致するように自動的に計算されます。[] を使用して次元のサイズを自動で計算する場合、"明示的に指定する" 次元のサイズは入力行列の要素の数 numel(A) を割り切れる値にしなければなりません。

2 番目より後の次元のサイズが 1 の場合、それらの次元は出力 B に反映されません。たとえば reshape(A,3,2,1,1) では 3 行 2 列の行列が生成されます。

例: reshape(A,3,2)

例: reshape(A,6,[],10)

例: reshape(A,2,5,3,[])

例: reshape(A,5,5,5,5)

出力引数

すべて折りたたむ

形状変更後の配列。ベクトル、行列、多次元配列または cell 配列として返されます。B の要素のデータ型と数は A と同じになります。B の要素の列方向の順序は A の順序が維持されます。

データ型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | logical | char | string | cell | datetime | duration | calendarDuration

ヒント

  • 関数 reshape は入力データ内の既存の要素を再配列します。要素を追加または削除する場合は、関数 resize を使用します。

拡張機能

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

バージョン履歴

R2006a より前に導入