本页对应的英文页面已更新,但尚未翻译。 若要查看最新内容,请点击此处访问英文页面。

cumprod

累积乘积

说明

示例

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

  • 如果 A 是向量,cumprod(A) 返回包含 A 元素的累计乘积的向量。

  • 如果 A 是矩阵,则 cumprod(A) 返回包含 A 每列的累计乘积的矩阵。

  • 如果 A 为多维数组,则 cumprod(A) 沿第一个非单一维运算。

示例

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

示例

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

示例

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

示例

全部折叠

计算从 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 值的向量,并计算累积乘积。默认情况下,cumprod 包括 NaN 值。如果您在计算中包括 NaN 值,则只要在 A 中遇到第一个 NaN 值,累积乘积将立即变成 NaN

A = [1 3 NaN 2 4 NaN];
B = cumprod(A)
B = 1×6

     1     3   NaN   NaN   NaN   NaN

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

B = cumprod(A,'omitnan')
B = 1×6

     1     3     3     6    24    24

输入参数

全部折叠

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

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

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

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

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

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

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

累积方向,指定为 'forward'(默认值)或 'reverse'

  • 'forward' 从活动维度的 1end 运算。

  • 'reverse' 从活动维度的 end1 运算。

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

  • 'includenan' - 计算每个积时包括来自输入的 NaN 值,在输出中得到 NaN 值。

  • 'omitnan' - 忽略输入中的 NaN 值。包含 NaN 值的元素的乘积是所有非 NaN 元素的乘积。如果所有元素均为 NaN,则 cumprod 返回 1。

输出参数

全部折叠

累计乘积数组,以向量、矩阵或大小与输入数组 A 相同的多维数组的形式返回。

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

详细信息

全部折叠

第一个非单一维度

第一个非单一维度是其大小不等于 1 的数组的第一维度。

例如:

  • 如果 X 为 1×n 的行向量,则第二个维度是 X 的第一个非单一维度。

  • 如果 X 为 1×0×n 的空数组,则第二个维度是 X 的第一个非单一维度。

  • 如果 X 为 1×1×3 的数组,则第三个维度是 X 的第一个非单一维度。

提示

  • MATLAB® 中的许多累积函数都支持 'reverse' 选项。此选项可快速执行定向计算,而无需翻转或反射输入数组。

扩展功能

另请参阅

| | | | |

在 R2006a 之前推出