Matlab数据处理之累积和函数cumsum

4.7
(3)

Matlab中,可以使用cumsum函数表示一组数据的累积和。累积和,从数据的第一个其大小不等于 1 的数组维度开始返回累积和。关于求和函数sum的相关介绍,可以参考:《Matlab数组求和函数sum的使用教程》。

Matlab数据处理之累积和函数cumsum

本文主要介绍cumsum函数的常见用法、语法说明,以及一些相关实例。cumsum函数的帮助文档如下:

>> help cumsum
 cumsum Cumulative sum of elements.
    Y = cumsum(X) computes the cumulative sum along the first non-singleton
    dimension of X. Y is the same size as X.
  
    Y = cumsum(X,DIM) cumulates along the dimension specified by DIM.
  
    Y = cumsum(___,DIRECTION) cumulates in the direction specified by
    the string DIRECTION using any of the above syntaxes:
      'forward' - (default) uses the forward direction, from beginning to end.
      'reverse' -           uses the reverse direction, from end to beginning.
 
    Example: If X = [0 1 2
                     3 4 5]
 
    cumsum(X,1) is [0 1 2  and cumsum(X,2) is [0 1  3
                    3 5 7]                     3 7 12]
 
    cumsum(X,1,'reverse') is [3 5 7  and cumsum(X,2,'reverse') is [ 3 3 2
                              3 4 5]                               12 9 5]

cumsum函数常见用法

B = cumsum(A)
B = cumsum(A,dim)
B = cumsum(___,direction)
B = cumsum(___,nanflag)

cumsum函数语法说明

B = cumsum(A) 从 A 中的第一个其大小不等于 1 的数组维度开始返回 A 的累积和。

  • 如果 A 是向量,则 cumsum(A) 返回包含 A 元素累积和的向量。
  • 如果 A 是矩阵,则 cumsum(A) 返回包含 A 每列的累积和的矩阵。
  • 如果 A 为多维数组,则 cumsum(A) 沿第一个非单一维运算。

B = cumsum(A,dim) 返回沿维度 dim 的元素的累积和。例如,如果 A 是矩阵,则 cumsum(A,2) 返回每行的累积和。

B = cumsum(_,direction) 可选择性地使用上述任何语法指定方向。必须指定 A,也可以指定 dim。例如,cumsum(A,2,’reverse’) 通过从尾到头计算 A 的第二个维度返回其中各行的累积和。

B = cumsum(_,nanflag) 指定在上述任意语法的计算中包括还是忽略 NaN 值。cumsum(A,’includenan’) 会在计算中包括所有 NaN 值,而 cumsum(A,’omitnan’) 则忽略这些值。

cumsum函数实例

向量的累积和

计算从 1 到 5 的整数的累积和。元素 B(2) 是 A(1) 和 A(2) 的和,而 B(5) 是元素 A(1) 至 A(5) 的和。

>> A = 1:5;
>> B = cumsum(A)

B =

     1     3     6    10    15

矩阵中每列的累积和

定义其元素与其线性索引对应的 3×3 矩阵。

>> A = [1 4 7; 2 5 8; 3 6 9]

A =

     1     4     7
     2     5     8
     3     6     9

计算 A 的列的累积和。元素 B(5) 是 A(4) 和 A(5) 的和,而 B(9) 是 A(7)A(8) 和 A(9) 的和。

>> B = cumsum(A)

B =

     1     4     7
     3     9    15
     6    15    24
Matlab数据处理之累积和函数cumsum

矩阵中每行的累积和

定义其元素与其线性索引对应的 2×3 矩阵。

>> A = [1 3 5; 2 4 6]

A =

     1     3     5
     2     4     6

计算 A 的行的累积和。元素 B(3) 是 A(1) 和 A(3) 的和,而 B(5) 是 A(1)A(3) 和 A(5) 的和。

>> B = cumsum(A,2)

B =

     1     4     9
     2     6    12

逻辑输入的累积和

创建一个逻辑值数组。

>> A = [true false true; true true false]

A =

     1     0     1
     1     1     0

计算 A 的行的累积和。

>> B = cumsum(A,2)

B =

     1     1     2
     1     2     2

输出的类型为 double

>> class(B)

ans =

double
Matlab数据处理之累积和函数cumsum

反向累积求和

创建一个包含介于 1 到 10 的随机整数的 3×3 的矩阵。

>> rng default;
>> A = randi([1,10],3)

A =

     9    10     3
    10     7     6
     2     1    10

沿各行计算累积和。指定 'reverse' 选项在各行中从右向左运行。结果的大小与 A 相同。

>> B = cumsum(A,2,'reverse')

B =

    22    13     3
    23    13     6
    13    11    10

包含 NaN 值的向量

创建一个包含 NaN 值的向量,并计算累积和。默认情况下,cumsum 包括 NaN 值。如果您在计算中包括 NaN 值,则只要在 A 中遇到第一个 NaN 值,累积和将立即成为 NaN

>> A = [3 5 NaN 9 0 NaN];
>> B = cumsum(A)

B =

     3     8   NaN   NaN   NaN   NaN

您可以使用 'omitnan' 选项在累积和计算中忽略 NaN 值。

Matlab数据处理之累积和函数cumsum
>> B = cumsum(A,'omitnan')
错误使用 cumsum
CUMSUM 方向必须为 'forward' 或 'reverse'。

版本过低,不支持这种用法,下面给出官方答案

>> B = cumsum(A,'omitnan')
B = 1×6

     3     8     8    17    17    17

共计3人评分,平均4.7

到目前为止还没有投票~

很抱歉,这篇文章对您没有用!

让我们改善这篇文章!

告诉我们我们如何改善这篇文章?

文章目录

原创文章,作者:古哥,转载需经过作者授权同意,并附上原文链接:https://iymark.com/articles/4699.html

(0)
微信公众号
古哥的头像古哥管理团队
上一篇 2023年03月20日 20:04
下一篇 2023年03月22日 21:02

你可能感兴趣的文章

发表回复

登录后才能评论
微信小程序
微信公众号