MATLAB を使用した累積合計

Ammar Ali 2022年1月20日 MATLAB MATLAB Vector
MATLAB を使用した累積合計

このチュートリアルでは、MATLAB の cumsum() 関数を使用してベクトルまたは行列の累積和を見つける方法について説明します。

MATLAB の cumsum() 関数を使用して、ベクトルまたは行列の累積合計を取得する

MATLAB の組み込み関数 cumsum() を使用して、ベクトルまたは行列の累積合計を見つけることができます。

入力がベクトルの場合、cumsum() 関数はベクトル要素の累積合計を返します。入力が行列の場合、cumsum() 関数は行列列の累積合計を返します。

入力が多次元配列の場合、cumsum() 関数は最初の非シングルトン次元の累積合計を返します。たとえば、ベクトルの要素の累積合計を見つけましょう。

以下のコードを参照してください。

clc v = 1:9 s = cumsum(v) 

出力:

v =   1 2 3 4 5 6 7 8 9   s =   1 3 6 10 15 21 28 36 45 

行列の累積和を求めましょう。以下のコードを参照してください。

clc v = [1:3; 1:3] s = cumsum(v) 

出力:

v =   1 2 3  1 2 3   s =   1 2 3  2 4 6 

出力では、変数 s に各列の累積合計が含まれています。cumsum() 関数の 2 番目の引数として整数を渡すことにより、列の行の累積合計を見つけることもできます。

たとえば、上記の行列の行の累積合計を見つけましょう。以下のコードを参照してください。

clc v = [1:3; 1:3] s = cumsum(v,2) 

出力:

v =   1 2 3  1 2 3   s =   1 3 6  1 3 6 

出力では、変数 s に各行の累積合計が含まれています。

論理入力の累積合計も見つけることができます。この場合、cumsum() 関数は false の代わりに 0 を使用し、1 は true であり、答えはデータ型 double になります。

ベクトルまたは行列の累積合計を逆にすることもできます。デフォルトでは、cumsum() 関数はベクトルまたは行列の左側から始まる累積合計を検索しますが、ベクトルまたは行列の右側から開始する累積合計を検索するには、文字列を逆に使用することもできます。cumsum() 関数。

たとえば、ベクトルの右側から始まる累積合計を見つけましょう。以下のコードを参照してください。

clc v = 1:3 s = cumsum(v,'reverse') 

出力:

v =   1 2 3   s =   6 5 3 

出力では、累積合計は右側から始まります。ベクトルまたは行列内に NaN 値があり、その累積合計が見つかった場合、cumsum() 関数は最初の NaN 値が検出されるとすぐに出力値を NaN に変換します。

NaN 値を回避するために、cumsum() 関数の引数として omitnan 文字列を使用して、NaN 値を無視するように関数に指示できます。たとえば、いくつかの NaN 値を含むベクトルを作成し、cumsum() 関数を使用してその累積合計を見つけましょう。

以下のコードを参照してください。

clc v = [1 NaN 5 6 7 NaN NaN] s = cumsum(v,'omitnan') 

出力:

v =   1 NaN 5 6 7 NaN NaN   s =   1 1 6 12 19 19 19 

cumsum() 関数は、出力の NaN 値を無視して累積合計を計算しました。

チュートリアルを楽しんでいますか? <a href="https://www.youtube.com/@delftstack/?sub_confirmation=1" style="color: #a94442; font-weight: bold; text-decoration: underline;">DelftStackをチャンネル登録</a> して、高品質な動画ガイドをさらに制作するためのサポートをお願いします。 Subscribe
著者: Ammar Ali
Ammar Ali avatar Ammar Ali avatar

Hello! I am Ammar Ali, a programmer here to learn from experience, people, and docs, and create interesting and useful programming content. I mostly create content about Python, Matlab, and Microcontrollers like Arduino and PIC.

LinkedIn Facebook

関連記事 - MATLAB Vector