reshape
シンボリック配列を形状変更
説明
reshape(
は、自動的にサイズ値の振幅を計算し、プレースホルダー A
,...,[],...)[]
でサイズ値を表現することを可能にします。たとえば、A
のサイズが 2 行 6 列の場合、reshape(A,4,[])
は 4 行 3 列の配列を返します。
例
シンボリック ベクトルの行ベクトルを列ベクトルへ形状変更
1 行 4 列の行べクトル V
を 4 行 1 列の列ベクトル Y
に形状変更します。ここでは、V
と Y
の要素数は同じでなければなりません。
V
を作成します。
syms f(x) y V = [3 f(x) -4 y]
V = [ 3, f(x), -4, y]
V
を Y
に形状変更します。
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]
M
と N
の要素数は同じでなければなりません。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
はその後、各列の要素を乗算して結果を返します。
入力引数
バージョン履歴
R2006a より前に導入