# gradient

Compute the gradient of a real function or sampled data.

## Syntax

dx = gradient(yc,xc)

dx = gradient(m)

[dx,dy,...] = gradient(m)

[...] = gradient(m,d)

[...] = gradient(m,x,y,...)

[...] = gradient(f,p)

[...] = gradient(f,p,d)

[...] = gradient(f,p,x,y,...)

## Inputs

`yc`- Sampled y coordinate data from which to compute the gradient, paired with
`xc`. `xc`- Sampled x coordinate data from which to compute the gradient, paired with
`yc`. `m`- A matrix of sampled data from which to compute the gradient.
`f`- The function for which to compute the gradient.
`p`- The points at which to compute the gradient when using
`f`. `d`- One half of the central difference interval, used in all dimensions.
`x,y,...`- Each value is one half of the central difference interval used in its corresponding dimension.

## Outputs

- dx,dy,...
- The gradient vector components for each dimension.

## Example

Function input with a common interval size for all dimensions:

```
function obj = Func(x,y)
obj = 2*(x-3).^2 - 5*(x-3).*(y-2) + 4*(y-2).^2 + 6;
end
points = [2,5;3,6;4,7];
[dx,dy] = gradient(@Func, points, 0.001)
dx = [Matrix] 3 x 1
-19.00000
-20.00000
-21.00000
dy = [Matrix] 3 x 1
29.00000
32.00000
35.00000
```

Matrix data input wtih separate interval sizes for each
dimension:

```
m = [1 125 729 2197; 8 216 1000 2744; 27 343 1331 3375; 64 512 1728 4096];
[dx,dy] = gradient(m, 0.1, 0.2)
dx = [Matrix] 4 x 4
1240 3640 10360 14680
2080 4960 12640 17440
3160 6520 15160 20440
4480 8320 17920 23680
dy = [Matrix] 4 x 4
35 455 1355 2735
65 545 1505 2945
140 740 1820 3380
185 845 1985 3605
```

Matrix inputs with (x,y) coordinate data:

```
yc = [1, 4, 9, 16; 25, 36, 49, 64];
xc = [1, 2, 3, 4];
dx = gradient(yc, xc)
dx = [Matrix] 2 x 4
3 4 6 7
11 12 14 15
```