使用 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() 函数中传递一个整数作为第二个参数来查找列中行的累积总和。

例如,让我们找到上述矩阵的行的累积和。请参阅下面的代码。

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() 函数将使用 0 代替 false,而 1 为 true,答案将是 double 数据类型。

我们还可以反转向量或矩阵中的累积和。默认情况下,cumsum() 函数从向量或矩阵的左侧开始查找累积和,但我们也可以通过在向量或矩阵内部使用字符串 reverse 来查找从向量或矩阵右侧开始的累积和 cumsum() 函数。

例如,让我们从向量的右侧开始计算累积和。请参阅下面的代码。

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

输出:

v =
     1     2     3
s =
     6     5     3

在输出中,累积总和从右侧开始。如果我们在向量或矩阵中有 NaN 值并找到它的累积和,一旦遇到第一个 NaN 值,cumsum() 函数就会将输出值转换为 NaN。

为了避免 NaN 值,我们可以使用 omitnan 字符串作为 cumsum() 函数中的参数告诉函数忽略 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 值。