cumsum
累积和
说明
示例
向量的累积和
计算从 1
到 5
的整数的累积和。元素 B(2)
是 A(1)
和 A(2)
的和,而 B(5)
是元素 A(1)
至 A(5)
的和。
A = 1:5; B = cumsum(A)
B = 1×5
1 3 6 10 15
矩阵中每列的累积和
定义其元素与其线性索引对应的 3×3 矩阵。
A = [1 4 7; 2 5 8; 3 6 9]
A = 3×3
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 = 3×3
1 4 7
3 9 15
6 15 24
矩阵中每行的累积和
定义其元素与其线性索引对应的 2×3 矩阵。
A = [1 3 5; 2 4 6]
A = 2×3
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 = 2×3
1 4 9
2 6 12
逻辑输入的累积和
创建一个逻辑值数组。
A = [true false true; true true false]
A = 2x3 logical array
1 0 1
1 1 0
计算 A
的行的累积和。
B = cumsum(A,2)
B = 2×3
1 1 2
1 2 2
输出的类型为 double
。
class(B)
ans = 'double'
反向累积求和
创建一个包含介于 1 到 10 的随机整数的 3×3 的矩阵。
rng default;
A = randi([1,10],3)
A = 3×3
9 10 3
10 7 6
2 1 10
沿各行计算累积和。指定 'reverse'
选项在各行中从右向左运行。结果的大小与 A
相同。
B = cumsum(A,2,'reverse')
B = 3×3
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 = 1×6
3 8 NaN NaN NaN NaN
您可以使用 'omitnan'
选项在累积和计算中忽略 NaN
值。
B = cumsum(A,'omitnan')
B = 1×6
3 8 8 17 17 17
输入参数
A
— 输入数组
向量 | 矩阵 | 多维数组
输入数组,指定为向量、矩阵或多维数组。
数据类型: double
| single
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| logical
| duration
复数支持: 是
dim
— 沿其运算的维度
正整数标量
沿其运算的维度,指定为正整数标量。如果不指定维度,则默认为第一个大于 1 的数组维度。
以一个二维输入数组 A
为例:
cumsum(A,1)
对A
的列中的连续元素进行求和并返回一个包含每列累积和的行向量。cumsum(A,2)
对A
的行中的连续元素进行求和并返回一个包含每行累积和的列向量。
如果 dim
大于 ndims(A)
,则 cumsum
返回 A
。
direction
— 累积方向
'forward'
(默认) | 'reverse'
累积方向,指定为 'forward'
(默认值)或 'reverse'
。
'forward'
从活动维度的1
到end
运算。'reverse'
从活动维度的end
到1
运算。
数据类型: char
nanflag
— NaN
条件
'includenan'
(默认) | 'omitnan'
NaN
条件,指定为下列值之一:
'includenan'
- 计算累积和时包括来自输入的NaN
值,在输出中得到NaN
值。'omitnan'
- 忽略输入中的所有NaN
值。包含NaN
值的元素的总和是所有非NaN
元素的总和。如果所有元素均为NaN
,则cumsum
返回 0。
数据类型: char
输出参数
B
— 累积和数组
向量 | 矩阵 | 多维数组
累积和数组,以向量、矩阵或大小与输入数组 A
相同的多维数组的形式返回。
B
的类与 A
的类相同,但 A
为 logical
除外(这种情况下 B
为 double
)。
详细信息
第一个非单一维度
第一个非单一维度是其大小不等于 1
的数组的第一维度。
例如:
如果
X
为 1×n 的行向量,则第二个维度是X
的第一个非单一维度。如果
X
为 1×0×n 的空数组,则第二个维度是X
的第一个非单一维度。如果
X
为 1×1×3 的数组,则第三个维度是X
的第一个非单一维度。
提示
MATLAB® 中的许多累积函数都支持
'reverse'
选项。此选项可快速执行定向计算,而无需翻转或反射输入数组。
扩展功能
tall 数组
对行数太多而无法放入内存的数组进行计算。
C/C++ 代码生成
使用 MATLAB® Coder™ 生成 C 代码和 C++ 代码。
用法说明和限制:
不支持逻辑输入。首先将输入转换为
double
。代码生成不支持对此函数使用稀疏矩阵输入。
GPU 代码生成
使用 GPU Coder™ 为 NVIDIA® GPU 生成 CUDA® 代码。
用法说明和限制:
不支持逻辑输入。首先将输入转换为
double
。代码生成不支持对此函数使用稀疏矩阵输入。
基于线程的环境
使用 MATLAB® backgroundPool
在后台运行代码或使用 Parallel Computing Toolbox™ ThreadPool
加快代码运行速度。
此函数完全支持基于线程的环境。有关详细信息,请参阅Run MATLAB Functions in Thread-Based Environment。
GPU 数组
通过使用 Parallel Computing Toolbox™ 在图形处理单元 (GPU) 上运行来加快代码执行。
用法说明和限制:
不支持
nanflag
参数。未定义
cumsum
操作中的加法顺序。因此,对gpuArray
执行cumsum
操作的返回值可能与对相应的 MATLAB 数值数组执行cumsum
操作的返回值不完全相同。当A
是有符号整数类型时,差异可能很明显。
有关详细信息,请参阅Run MATLAB Functions on a GPU (Parallel Computing Toolbox)。
分布式数组
使用 Parallel Computing Toolbox™ 在集群的组合内存中对大型数组进行分区。
用法说明和限制:
未定义
cumsum
操作中的加法顺序。因此,对分布式数组执行cumsum
运算和对相应 MATLAB 数值数组执行cumsum
运算所返回的答案可能不完全相同。当A
是有符号整数类型时,差异可能很明显。
有关详细信息,请参阅Run MATLAB Functions with Distributed Arrays (Parallel Computing Toolbox)。
版本历史记录
在 R2006a 之前推出
MATLAB 命令
您点击的链接对应于以下 MATLAB 命令:
请在 MATLAB 命令行窗口中直接输入以执行命令。Web 浏览器不支持 MATLAB 命令。
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)