Main Content

reshape

シンボリック配列を形状変更

説明

reshape(A,n1,n2) は、A と同じ要素をもつ n1n2 列の配列を返します。要素は n1n2 列の行列の要素を満たすために A から列ごとに取得されます。

reshape(A,n1,...,nM) は、A と同じ要素をもつ n1...nM 列の配列を返します。要素は n1...nM 列の配列の要素を満たすために A から列ごとに取得されます。

reshape(A,...,[],...) は、自動的にサイズ値の振幅を計算し、プレースホルダー [] でサイズ値を表現することを可能にします。たとえば、A のサイズが 2 行 6 列の場合、reshape(A,4,[]) は 4 行 3 列の配列を返します。

reshape(A,sz) は、Asz により指定されたサイズの配列に形状変更します。sz はベクトルです。

シンボリック ベクトルの行ベクトルを列ベクトルへ形状変更

1 行 4 列の行べクトル V を 4 行 1 列の列ベクトル Y に形状変更します。ここでは、VY の要素数は同じでなければなりません。

V を作成します。

syms f(x) y
V = [3 f(x) -4 y]
V =
[ 3, f(x), -4, y]

VY に形状変更します。

Y = reshape(V,4,1)
Y =
   3
f(x)
  -4
   y

または、Y = V.' を使用します。ここで、.' は非共役転置を意味します。

シンボリック行列の形状変更

2 行 6 列のシンボリック行列 M を 4 行 3 列の行列に形状変更します。

M = sym([1 9 4 3 0 1; 3 9 5 1 9 2])
N = reshape(M,4,3)
M =
[ 1, 9, 4, 3, 0, 1]
[ 3, 9, 5, 1, 9, 2]
 
N =
[ 1, 4, 0]
[ 3, 5, 9]
[ 9, 3, 1]
[ 9, 1, 2]

MN の要素数は同じでなければなりません。reshape は、M 列ごとに読み取り、N の要素を列ごとに入れます。

または、サイズ ベクトルを使用して形状変更された行列のサイズを指定します。

sz = [4 3];
N = reshape(M,sz)
N =
[ 1, 4, 0]
[ 3, 5, 9]
[ 9, 3, 1]
[ 9, 1, 2]

形状変更された行列の次元の自動設定

次元をプレースホルダー [] で置き換えると、reshape は、行列の形状を変更するためにその次元が必要とするサイズを計算します。

行列 M を作成します。

M = sym([1 9 4 3 0 1; 3 9 5 1 9 2])
M =
[ 1, 9, 4, 3, 0, 1]
[ 3, 9, 5, 1, 9, 2]

M を 3 つの列をもつ行列に形状変更します。

reshape(M,[],3)
ans =
[ 1, 4, 0]
[ 3, 5, 9]
[ 9, 3, 1]
[ 9, 1, 2]

reshape は、形状変更された 3 列の行列が 4 行を必要とすることを計算します。

行列の行方向の形状変更

結果を転置することにより行列の行方向の形状変更を行います。

行列 M を作成します。

syms x
M = sym([1 9 0 sin(x) 2 2; NaN x 5 1 4 7])
M =
[   1, 9, 0, sin(x), 2, 2]
[ NaN, x, 5,      1, 4, 7]

結果を転置することにより M の行方向の形状変更を行います。

reshape(M,4,3).'
ans =
[ 1, NaN,      9, x]
[ 0,   5, sin(x), 1]
[ 2,   4,      2, 7]

.' は非共役転置を、' は共役転置を返すことに注意してください。

3 次元配列の 2 次元行列への形状変更

3 行 3 列 2 列の配列 M を 9 行 2 列の行列に形状変更します。

M には、要素が 18 個あります。9 行 2 列の行列には要素が 18 個あるので、M をそれらに形状変更することができます。M を構築します。

syms x
M = [sin(x) x 4; 3 2 9; 8 x x];
M(:,:,2) = M'
M(:,:,1) = 
[ sin(x), x, 4]
[      3, 2, 9]
[      8, x, x]
M(:,:,2) = 
[ sin(conj(x)), 3,       8]
[      conj(x), 2, conj(x)]
[            4, 9, conj(x)]

M を 9 行 2 列の行列に形状変更します。

N = reshape(M,9,2)
N =
[ sin(x), sin(conj(x))]
[      3,      conj(x)]
[      8,            4]
[      x,            3]
[      2,            2]
[      x,            9]
[      4,            8]
[      9,      conj(x)]
[      x,      conj(x)]

形状変更を使用した配列の分割

ループの代わりに reshape を使用して配列を分割して更に計算します。reshape を使用してベクトル V を分割し、3 要素ごとの積を求めます。

ベクトル V を作成します。

syms x
V = [exp(x) 1 3 9 x 2 7 7 1 8 x^2 3 4 sin(x) x]
V =
[ exp(x), 1, 3, 9, x, 2, 7, 7, 1, 8, x^2, 3, 4, sin(x), x]

行数に 3 を指定します。列数はプレースホルダー [] を使用します。これにより、reshape は自動的に 3 行に必要な列数を計算します。

M = prod( reshape(V,3,[]) )
M =
[ 3*exp(x), 18*x, 49, 24*x^2, 4*x*sin(x)]

reshape は、3 行の行列に必要な 5 列を計算します。prod はその後、各列の要素を乗算して結果を返します。

入力引数

すべて折りたたむ

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

形状変更された行列の次元。コンマ区切りスカラーとして指定します。たとえば、reshape(A,3,2) は 3 行 2 列の配列を返します。n1,n2 により指定された出力配列の要素数は numel(A) と等しくなければなりません。

形状変更された配列の次元。コンマ区切りスカラーとして指定します。たとえば、reshape(A,3,2,2) は 3 行 2 列 2 列の行列を返します。n1,...,nM により指定された出力配列の要素数は numel(A) と等しくなければなりません。

形状変更された配列のサイズ。数値ベクトルとして指定します。たとえば、reshape(A,[3 2]) は 3 行 2 列の配列を返します。sz により指定された出力配列の要素数は numel(A) と等しくなければなりません。

バージョン履歴

R2006a より前に導入