# expandMatrix

Enlarge a matrix by extending the edge values.

## Syntax

    mat_new = expandMatrix(mat, exp_coeff)
    mat_new = expandMatrix(mat, exp_coeff, edge_val)

## Description

`expandMatrix` enlarges an input matrix by extension of the values at the outer faces of the matrix (endpoints in 1D, outer edges in 2D, outer surfaces in 3D). Alternatively, if an input for `edge_val` is given, all expanded matrix elements will have this value. The values for `exp_coeff` are forced to be real positive integers (or zero). Note, indexing is done inline with other k-Wave functions using `mat(x)` in 1D, `mat(x, y)` in 2D, and `mat(x, y, z)` in 3D.

For example, running

    mat = magic(3)
    expandMatrix(mat, 1)
    expandMatrix(mat, [2 0 1 0], 0)

will give the outputs

    ans =

         8     8     1     6     6
         8     8     1     6     6
         3     3     5     7     7
         4     4     9     2     2
         4     4     9     2     2

    ans =

         0     0     0     0     0
         0     0     8     1     6
         0     0     3     5     7
         0     0     4     9     2

## Inputs

`mat` | the matrix to enlarge
`exp_coeff` | the number of elements to add in each dimension, where `exp_coeff = [a]` or `[x_start, x_end]` in 1D `exp_coeff = [a]` or `[x, y]` or `[x_start, x_end, y_start, y_end]` in 2D `exp_coeff = [a]` or `[x, y, z]` or `[x_start, x_end, y_start, y_end, z_start, z_end]` in 3D (here `a` is applied to all dimensions)

## Optional Inputs

`edge_val` | value to use in the matrix expansion

## Outputs

`mat_new` | expanded matrix

## See Also

`resize`