Main Content

このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。

cumsum

シンボリック累積和

説明

B = cumsum(A) は、A のサイズが 1 でない最初の配列次元の先頭から始まる A の累積和を返します。出力 BA と同じサイズです。

  • A がベクトルの場合、cumsum(A) は、A の要素の累積和を含むベクトルを返します。

  • A が行列の場合、cumsum(A) は、A の各列の累積和を含む行列を返します。

  • A が多次元配列の場合、cumsum(A)大きさが 1 でない最初の次元に沿って機能します。

B = cumsum(A,dim) は、次元 dim に沿って累積和を返します。たとえば、A が行列の場合、cumsum(A,2) は、各行の累積和を返します。

B = cumsum(___,direction) は、上述の構文のいずれかを使用して、方向を指定します。たとえば cumsum(A,2,'reverse') は、A の 2 番目の次元の末尾から先頭の方向に演算を行い、行の累積和を返します。

B = cumsum(___,nanflag) は、前述の任意の構文について NaN 値を計算に含めるか除外するかを指定します。cumsum(A,'includenan') ではすべての NaN 値が計算に含められ、cumsum(A,'omitnan') ではこれらが無視されます。

すべて折りたたむ

シンボリック ベクトルを作成します。要素の累積和を求めます。

syms x
A = (1:5)*x
A = (x2x3x4x5x)[x, 2*x, 3*x, 4*x, 5*x]

累積和のベクトルでは、要素 B(2)A(1)A(2) の和です。B(5)A(1) から A(5) までの要素の和です。

B = cumsum(A)
B = (x3x6x10x15x)[x, 3*x, 6*x, 10*x, 15*x]

要素がすべて 1 に等しい 3 行 3 列のシンボリック行列 A を作成します。

A = sym(ones(3))
A = 

(111111111)[sym(1), sym(1), sym(1); sym(1), sym(1), sym(1); sym(1), sym(1), sym(1)]

A の要素の累積和を計算します。既定の設定では、cumsum は各列の累積和を返します。

B = cumsum(A)
B = 

(111222333)[sym(1), sym(1), sym(1); sym(2), sym(2), sym(2); sym(3), sym(3), sym(3)]

各行の累積和を計算するには、dim オプションの値を 2 に設定します。

B = cumsum(A,2)
B = 

(123123123)[sym(1), sym(2), sym(3); sym(1), sym(2), sym(3); sym(1), sym(2), sym(3)]

3 x 3 x 2 のシンボリック配列を作成します。

syms x y
A(:,:,1) = [x y 3; 3 x y; y 2 x];
A(:,:,2) = [x y 1/3; 1 y x; 1/3 x 2];
A
A(:,:,1) = 

(xy33xyy2x)[x, y, sym(3); sym(3), x, y; y, sym(2), x]

A(:,:,2) = 

(xy131yx13x2)[x, y, sym(1/3); sym(1), y, x; sym(1/3), x, sym(2)]

dim2 を指定して、行に沿って累積和を計算します。'reverse' オプションを指定して、各行の右から左の方向に演算を行います。結果は A と同じサイズです。

B = cumsum(A,2,'reverse')
B(:,:,1) = 

(x+y+3y+33x+y+3x+yyx+y+2x+2x)[x + y + 3, y + 3, sym(3); x + y + 3, x + y, y; x + y + 2, x + 2, x]

B(:,:,2) = 

(x+y+13y+1313x+y+1x+yxx+73x+22)[x + y + sym(1/3), y + sym(1/3), sym(1/3); x + y + 1, x + y, x; x + sym(7/3), x + 2, sym(2)]

3 番目の次元 (ページ) に沿って累積和を計算するには、dim3 を指定します。'reverse' オプションを指定して、最大のページ インデックスから最小のページ インデックスの方向に演算を行います。

B = cumsum(A,3,'reverse')
B(:,:,1) = 

(2x2y1034x+yx+yy+13x+2x+2)[2*x, 2*y, sym(10/3); sym(4), x + y, x + y; y + sym(1/3), x + 2, x + 2]

B(:,:,2) = 

(xy131yx13x2)[x, y, sym(1/3); sym(1), y, x; sym(1/3), x, sym(2)]

NaN 値を含むシンボリック ベクトルを作成します。累積和を計算します。

A = [sym('a') sym('b') 1 NaN 2]
A = (ab1NaN2)[a, b, sym(1), sym(NaN), sym(2)]
B = cumsum(A)
B = (aa+ba+b+1NaNNaN)[a, a + b, a + b + 1, sym(NaN), sym(NaN)]

'omitnan' オプションを使用して、累積和の計算で NaN 値を無視できます。

B = cumsum(A,'omitnan')
B = (aa+ba+b+1a+b+1a+b+3)[a, a + b, a + b + 1, a + b + 1, a + b + 3]

入力引数

すべて折りたたむ

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

演算の対象の次元。正の整数スカラーとして指定します。値を指定しない場合、既定値は、サイズが 1 ではない最初の配列の次元です。

2 次元の入力配列 A について考えます。

  • cumsum(A,1) は、A の列の連続する要素に作用して各列の累積和を返します。

  • cumsum(A,2) は、A の行の連続する要素に作用して各行の累積和を返します。

dimndims(A) より大きい場合、cumsumA を返します。

累積の方向。'forward' (既定値) または 'reverse' のいずれかとして指定します。

  • 'forward' は、アクティブな次元の 1 から end の方向に演算を行います。

  • 'reverse' は、アクティブな次元の end から 1 の方向に演算を行います。

データ型: char

NaN の条件。次のいずれかとして指定します。

  • 'includenan' — 累積和の計算時に入力の NaN 値を含め、結果として NaN 値を出力します。

  • 'omitnan' — 入力の NaN 値をすべて無視します。NaN 値を含む要素の和は、すべての非 NaN 要素の和になります。すべての要素が NaN の場合、cumsum は 0 を返します。

データ型: char

出力引数

すべて折りたたむ

累積和の配列。入力 A と同じサイズのベクトル、行列、または多次元配列として返されます。

詳細

すべて折りたたむ

大きさが 1 でない最初の次元

大きさが 1 でない最初の次元は、サイズが 1 に等しくない配列の最初の次元です。

以下に例を示します。

  • X が 1 行 n 列の行ベクトルの場合、2 番目の次元が大きさが 1 でない X の最初の次元になります。

  • X が 1 x 0 x n の空配列の場合、2 番目の次元が大きさが 1 でない X の最初の次元になります。

  • X が 1 x 1 x 3 の配列の場合、3 番目の次元が大きさが 1 でない X の最初の次元になります。

参考

| | | |

R2013b で導入