# Function subset #

Get or set a subset of a matrix or string.

## Syntax #

``````math.subset(value, index)                                // retrieve a subset
math.subset(value, index, replacement [, defaultValue])  // replace a subset
``````

### Parameters #

Parameter Type Description
`matrix` Array | Matrix | string An array, matrix, or string
`index` Index For each dimension of the target, specifies an index or a list of indices to fetch or set. `subset` uses the cartesian product of the indices specified in each dimension.
`replacement` * An array, matrix, or scalar. If provided, the subset is replaced with replacement. If not provided, the subset is returned
`defaultValue` * Default value, filled in on new entries when the matrix is resized. If not provided, math.matrix elements will be left undefined. Default value: undefined.

### Returns #

Type Description
Array | Matrix | string Either the retrieved subset or the updated matrix.

### Throws #

Type | Description —- | ———–

## Examples #

``````// get a subset
const d = [[1, 2], [3, 4]]
math.subset(d, math.index(1, 0))             // returns 3
math.subset(d, math.index([0, 1], 1))        // returns [[2], [4]]
math.subset(d, math.index([false, true], 0)) // returns [[3]]

// replace a subset
const e = []
const f = math.subset(e, math.index(0, [0, 2]), [5, 6])  // f = [[5, 0, 6]]
const g = math.subset(f, math.index(1, 1), 7, 0)         // g = [[5, 0, 6], [0, 7, 0]]
math.subset(g, math.index([false, true], 1), 8)          // returns [[5, 0, 6], [0, 8, 0]]

// get submatrix using ranges
const M = [
[1,2,3],
[4,5,6],
[7,8,9]
]
math.subset(M, math.index(math.range(0,2), math.range(0,3))) // [[1, 2, 3], [4, 5, 6]]
``````