# cumprod

Cumulative product

## Syntax

• `B = cumprod(A)` example
• `B = cumprod(A,dim)` example
• `B = cumprod(___,direction)` example

## Description

example

````B = cumprod(A)` returns the cumulative product of `A` starting at the beginning of the first array dimension in `A` whose size does not equal 1.If `A` is a vector, then `cumprod(A)` returns a vector containing the cumulative product of the elements of `A`.If `A` is a matrix, then `cumprod(A)` returns a matrix containing the cumulative products for each column of `A`.If `A` is a multidimensional array, then `cumprod(A)` acts along the first nonsingleton dimension.```

example

````B = cumprod(A,dim)` returns the cumulative product along dimension `dim`. For example, if `A` is a matrix, then `cumprod(A,2)` returns the cumulative product of each row.```

example

````B = cumprod(___,direction)` optionally specifies the direction using any of the previous syntaxes. You must specify `A`, and optionally can specify `dim`. For instance, `cumprod(A,2,'reverse')` returns the cumulative product within the rows of `A` by working from end to beginning of the second dimension.```

## Examples

collapse all

### Cumulative Product of Vector

Find the cumulative product of the integers from `1` to `5`.

```A = 1:5; B = cumprod(A)```
```B = 1 2 6 24 120```

`B(2)` is the product of `A(1)` and `A(2)`, while `B(5)` is the product of elements `A(1)` through `A(5)`.

### Cumulative Product of Each Column in Matrix

Define a 3-by-3 matrix whose elements correspond to their linear indices.

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

Find the cumulative product of the columns of `A`.

`B = cumprod(A)`
```B = 1 4 7 2 20 56 6 120 504```

`B(5)` is the product of `A(4)` and `A(5)`, while `B(9)` is the product of `A(7)` , `A(8)`, and `A(9)`.

### Cumulative Product of Each Row in Matrix

Define a 2-by-3 matrix whose elements correspond to their linear indices.

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

Find the cumulative product of the rows of `A`.

`B = cumprod(A,2)`
```B = 1 3 15 2 8 48```

`B(3)` is the product of `A(1)` and `A(3)`, while `B(5)` is the product of `A(1)`, `A(3)`, and `A(5)` .

### Logical Input with Double Output

Create an array of logical values.

`A = [true false true; true true false]`
```A = 1 0 1 1 1 0 ```

Find the cumulative product of the rows of `A`.

`B = cumprod(A,2)`
```B = 1 0 0 1 1 0```

The output is `double`.

`class(B)`
```ans = double```

### Reverse Cumulative Product

Create a 3-by-3 matrix of random integers between 1 and 10.

```rng default; A = randi([1,10],3)```
```A = 9 10 3 10 7 6 2 1 10 ```

Calculate the cumulative product along the columns. Specify the `'reverse'` option to work from bottom to top in each column.

`B = cumprod(A,'reverse')`
```B = 180 70 180 20 7 60 2 1 10 ```

The result is the same size as `A`.

## Input Arguments

collapse all

### `A` — Input arrayvector | matrix | multidimensional array

Input array, specified as a vector, matrix, or multidimensional array.

Data Types: `double` | `single` | `int8` | `int16` | `int32` | `int64` | `uint8` | `uint16` | `uint32` | `uint64` | `logical`
Complex Number Support: Yes

### `dim` — Dimension to operate alongpositive integer scalar

Dimension to operate along, specified as a positive integer scalar. If no value is specified, then the default is the first array dimension whose size does not equal 1.

Consider a two-dimensional input array, `A`.

• `cumprod(A,1)` works on successive elements in the columns of `A` and returns the cumulative products of each column.

• `cumprod(A,2)` works on successive elements in the rows of `A` and returns the cumulative products of each row.

`cumprod` returns `A` if `dim` is greater than `ndims(A)`.

### `direction` — Direction of cumulation`'forward'` (default) | `'reverse'`

Direction of cumulation, specified as the string `'forward'` (default) or `'reverse'`.

• `'forward'` works from `1` to `end` of the active dimension.

• `'reverse'` works from `end` to `1` of the active dimension.

Data Types: `char`

## Output Arguments

collapse all

### `B` — Cumulative product arrayvector | matrix | multidimensional array

Cumulative product array, returned as a vector, matrix, or multidimensional array of the same size as the input array `A`.

The class of `B` is the same as the class of `A` except if `A` is `logical`, in which case `B` is `double`.

collapse all

### First Nonsingleton Dimension

The first nonsingleton dimension is the first dimension of an array whose size is not equal to `1`.

For example:

• If `X` is a 1-by-n row vector, then the second dimension is the first nonsingleton dimension of `X`.

• If `X` is a 1-by-0-by-n empty array, then the second dimension is the first nonsingleton dimension of `X`.

• If `X` is a 1-by-1-by-3 array, then the third dimension is the first nonsingleton dimension of `X`.

### Tips

• Many cumulative functions in MATLAB® support the `'reverse'` option. This option allows quick directional calculations without needing a flip or reflection of the input array.