Numerical gradient
FX = gradient(F)
[FX,FY] = gradient(F)
[FX,FY,FZ,...] = gradient(F)
[...] = gradient(F,h)
[...] = gradient(F,h1,h2,...)
The gradient of a function of two variables, F(x,y), is defined as
$$\nabla F=\frac{\partial F}{\partial x}\widehat{i}+\frac{\partial F}{\partial y}\widehat{j}$$
and can be thought of as a collection of vectors pointing in the direction of increasing values of F. In MATLAB^{®} software, numerical gradients (differences) can be computed for functions with any number of variables. For a function of N variables, F(x,y,z, ...),
$$\nabla F=\frac{\partial F}{\partial x}\widehat{i}+\frac{\partial F}{\partial y}\widehat{j}+\frac{\partial F}{\partial z}\widehat{k}+\mathrm{...}$$
FX = gradient(F)
, where F
is
a vector, returns the one-dimensional numerical gradient of F
.
Here FX
corresponds to ∂F/∂x,
the differences in x (horizontal) direction.
[FX,FY] = gradient(F)
,
where F
is a matrix, returns the x and y components
of the two-dimensional numerical gradient. FX
corresponds
to ∂F/∂x, the
differences in x (horizontal) direction. FY
corresponds
to ∂F/∂y, the
differences in the y (vertical) direction. The
spacing between points in each direction is assumed to be one.
[FX,FY,FZ,...] = gradient(F)
,
where F
has N
dimensions, returns
the N
components of the gradient of F
.
There are two ways to control the spacing between values in F
:
A single spacing value, h
, specifies
the spacing between points in every direction.
N
spacing values (h1,h2,...
)
specifies the spacing for each dimension of F
.
Scalar spacing parameters specify a constant spacing for each dimension.
Vector parameters specify the coordinates of the values along corresponding
dimensions of F
. In this case, the length of the
vector must match the size of the corresponding dimension.
Note
The first output |
[...] = gradient(F,h)
,
where h
is a scalar, uses h
as
the spacing between points in each direction.
[...] = gradient(F,h1,h2,...)
with N
spacing
parameters specifies the spacing for each dimension of F
.
Calculate the 2-D gradient of on a grid.
v = -2:0.2:2; [x,y] = meshgrid(v); z = x .* exp(-x.^2 - y.^2); [px,py] = gradient(z,.2,.2);
Plot the contour lines and vectors in the same figure.
contour(v,v,z) hold on quiver(v,v,px,py) hold off
Create a 3-D array.
F(:,:,1) = magic(3); F(:,:,2) = pascal(3);
The command,
gradient(F)
takes dx
= dy
= dz
= 1
.
However, the command,
[PX,PY,PZ] = gradient(F,0.2,0.1,0.2)
takes dx = 0.2
, dy = 0.1
,
and dz = 0.2
.