Compute curl and angular velocity of vector field

`[curlx,curly,curlz,cav] = curl(X,Y,Z,U,V,W)`

[curlx,curly,curlz,cav] =
curl(U,V,W)

[curlz,cav]= curl(X,Y,U,V)

[curlz,cav]= curl(U,V)

[curlx,curly,curlz] = curl(...)

[curlx,curly] = curl(...)

cav = curl(...)

`[curlx,curly,curlz,cav] = curl(X,Y,Z,U,V,W)`

computes
the curl (`curlx`

, `curly`

, `curlz`

)
and angular velocity (`cav`

) perpendicular to the
flow (in radians per time unit) of a 3-D vector field `U`

, `V`

, `W`

.

The arrays `X`

, `Y`

, and `Z`

,
which define the coordinates for `U`

, `V`

,
and `W`

, must be monotonic, but do not need to be
uniformly spaced. `X`

, `Y`

, and `Z`

must
have the same number of elements, as if produced by `meshgrid`

.

```
[curlx,curly,curlz,cav] =
curl(U,V,W)
```

assumes `X`

, `Y`

,
and `Z`

are determined by the expression

[X Y Z] = meshgrid(1:n,1:m,1:p)

where `[m,n,p] = size(U)`

.

`[curlz,cav]= curl(X,Y,U,V)`

computes
the curl `z`

-component and the angular velocity perpendicular
to `z`

(in radians per time unit) of a 2-D vector
field `U`

, and `V`

.

The arrays `X`

and `Y`

, which
define the coordinates for `U`

and `V`

,
must be monotonic, but do not need to be uniformly spaced. `X`

and `Y`

must
have the same number of elements, as if produced by `meshgrid`

.

`[curlz,cav]= curl(U,V)`

assumes `X`

and `Y`

are
determined by the expression

[X Y] = meshgrid(1:n,1:m)

where `[m,n] = size(U)`

.

`[curlx,curly,curlz] = curl(...)`

, `[curlx,curly] = curl(...)`

returns only the
curl.

`cav = curl(...)`

returns
only the curl angular velocity.