使用 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 值。