Main Content

cumprod

累积乘积

说明

示例

B = cumprod(A) 返回 A 的累积乘积,该累积乘积从 A 中大小大于 1 的第一个数组维度开始计算。

  • 如果 A 是向量,则 B 是相同大小的向量,包含 A 的累积乘积。

  • 如果 A 是矩阵,则 B 是相同大小的矩阵,包含 A 的每列的累积乘积。

  • 如果 A 是多维数组,则 B 是相同大小的数组,包含沿 A 中大小大于 1 的第一个数组维度计算的累积乘积。

  • 如果 A 是表或时间表,则 M 是相同大小的表或时间表,包含 A 中每个变量的累积乘积。 (自 R2023a 起)

B 的类与 A 的类相同,但 Alogical 除外(这种情况下 Bdouble)。

示例

B = cumprod(A,dim) 返回沿维度 dim 计算的元素的累积乘积。例如,如果 A 是矩阵,则 cumprod(A,2) 返回沿 A 的各行计算的累积乘积。

示例

B = cumprod(___,direction) 可在上述任一语法的基础上指定计算方向。例如,cumprod(A,2,"reverse") 返回沿 A 的第二个维度按从尾到头的顺序计算的各行的累积乘积。

示例

B = cumprod(___,nanflag) 指定包含还是省略 A 中的 NaN 值。例如,cumprod(A,"omitnan") 在计算每个乘积时会忽略 NaN 值。默认情况下,cumprod 包括 NaN 值。

示例

全部折叠

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

A = 1:5;
B = cumprod(A)
B = 1×5

     1     2     6    24   120

创建一个元素与其线性索引对应的 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 = cumprod(A)
B = 3×3

     1     4     7
     2    20    56
     6   120   504

创建元素与其线性索引对应的 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 = cumprod(A,2)
B = 2×3

     1     3    15
     2     8    48

创建一个逻辑值数组。

A = [true false true; true true false]
A = 2x3 logical array

   1   0   1
   1   1   0

计算 A 的行的累积乘积。

B = cumprod(A,2)
B = 2×3

     1     0     0
     1     1     0

输出的类型为 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 = cumprod(A,"reverse")
B = 3×3

   180    70   180
    20     7    60
     2     1    10

创建一个包含 NaN 值的矩阵。

A = [3 5 NaN 4; 2 6 NaN 9; 1 3 0 NaN]
A = 3×4

     3     5   NaN     4
     2     6   NaN     9
     1     3     0   NaN

计算矩阵的累积乘积,不包括 NaN 值。对于包含前导 NaN 值的矩阵列,在遇到非 NaN 值之前,累积乘积一直为 1。

B = cumprod(A,"omitnan")
B = 3×4

     3     5     1     4
     6    30     1    36
     6    90     0    36

输入参数

全部折叠

输入数组,指定为向量、矩阵、多维数组、表或时间表。

数据类型: double | single | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | logical | table | timetable
复数支持:

沿其运算的维度,指定为正整数标量。如果不指定维度,则默认为第一个大于 1 的数组维度。

以一个二维输入数组 A 为例。

  • cumprod(A,1) 使用 A 列中的累积元素,并返回每列的累积乘积。

  • cumprod(A,2) 使用 A 行中的累积元素,并返回每行的累积乘积。

cumprod(A,1) column-wise operation and cumprod(A,2) row-wise operation

如果 dim 大于 ndims(A),则 cumprod 返回 A

累积方向,指定为以下值之一:

  • "forward" - 从运算维度的 1end 运算。

  • "reverse" - 从运算维度的 end1 运算。

缺失值条件,指定为下列值之一:

  • "includemissing""includenan" - 在计算累积乘积时包括 A 中的 NaN 值。只要在 A 中遇到第一个 NaN 值,B 中的元素就立即成为 NaN"includemissing""includenan" 具有相同的行为。

  • "omitmissing""omitnan" - 在计算累积乘积时忽略 A 中的 NaN 值。如果 A 有连续前导 NaN 值,则 B 中对应的元素是 1。"omitmissing""omitnan" 具有相同的行为。

提示

  • 利用许多累积函数中的 "reverse" 选项可以快速执行定向计算,而不需要翻转或反射输入数组。

扩展功能

版本历史记录

在 R2006a 之前推出

全部展开

另请参阅

| | | | |