# angvel

Angular velocity from quaternion array

## Syntax

``AV = angvel(Q,dt,'frame')``
``AV = angvel(Q,dt,'point')``
``[AV,qf] = angvel(Q,dt,fp,qi)``

## Description

example

````AV = angvel(Q,dt,'frame')` returns the angular velocity array from an array of quaternions, `Q`. The quaternions in `Q` correspond to frame rotation. The initial quaternion is assumed to represent zero rotation. ```
````AV = angvel(Q,dt,'point')` returns the angular velocity array from an array of quaternions, `Q`. The quaternions in `Q` correspond to point rotation. The initial quaternion is assumed to represent zero rotation. ```
````[AV,qf] = angvel(Q,dt,fp,qi)` allows you to specify the initial quaternion, `qi`, and the type of rotation, `fp`. It also returns the final quaternion, `qf`.```

## Examples

collapse all

Create an array of quaternions.

```eulerAngles = [(0:10:90).',zeros(numel(0:10:90),2)]; q = quaternion(eulerAngles,'eulerd','ZYX','frame');```

Specify the time step and generate the angular velocity array.

```dt = 1; av = angvel(q,dt,'frame') % units in rad/s```
```av = 10×3 0 0 0 0 0 0.1743 0 0 0.1743 0 0 0.1743 0 0 0.1743 0 0 0.1743 0 0 0.1743 0 0 0.1743 0 0 0.1743 0 0 0.1743 ```

## Input Arguments

collapse all

Quaternions, specified as an N-by-1 vector of quaternions.

Data Types: `quaternion`

Time step, specified as a nonnegative scalar.

Data Types: `single` | `double`

Type of rotation, specified as `'frame'` or `'point'`.

Initial quaternion, specified as a quaternion.

Data Types: `quaternion`

## Output Arguments

collapse all

Angular velocity, returned as an N-by-3 real matrix. N is the number of quaternions given in the input Q. Each row of the matrix corresponds to an angular velocity vector.

Final quaternion, returned as a quaternion. `qf` is the same as the last quaternion in the Q input.

Data Types: `quaternion`