# sph2cartvec

Convert vector from spherical basis components to Cartesian components

*Since R2020a*

## Description

converts the components of a vector or set of vectors, `vr`

= sph2cartvec(`vs`

,`az`

,`el`

)`vs`

, from their
*spherical basis representation* to their representation in a local
Cartesian coordinate system. A spherical basis representation is the set of components of a
vector projected into the right-handed spherical basis given by $$({\widehat{e}}_{az},{\widehat{e}}_{el},{\widehat{e}}_{R})$$. The orientation of a spherical basis depends upon its location on the
sphere as determined by azimuth, `az`

, and elevation,
`el`

.

## Examples

### Cartesian Representation of Azimuthal Vector

Start with a vector in a spherical basis located at 45° azimuth, 45° elevation. The vector points along the azimuth direction. Compute the vector components with respect to Cartesian coordinates.

vs = [1;0;0]; vr = sph2cartvec(vs,45,45)

`vr = `*3×1*
-0.7071
0.7071
0

## Input Arguments

`vs`

— Vector in spherical basis representation

3-by-1 column vector | 3-by-*N* matrix

Vector in spherical basis representation specified as a 3-by-1 column vector or
3-by-*N* matrix. Each column of `vs`

contains the
three components of a vector in the right-handed spherical basis $$({\widehat{e}}_{az},{\widehat{e}}_{el},{\widehat{e}}_{R})$$.

**Example: **`[4.0; -3.5; 6.3]`

**Data Types: **`double`

**Complex Number Support: **Yes

`az`

— Azimuth angle

scalar in range [–180,180]

Azimuth angle specified as a scalar in the closed range [–180,180].
Angle units are in degrees. To define the azimuth angle of a point
on a sphere, construct a vector from the origin to the point. The
azimuth angle is the angle in the *xy*-plane from
the positive *x*-axis to the vector's orthogonal
projection into the *xy*-plane. As examples, zero
azimuth angle and zero elevation angle specify a point on the *x*-axis
while an azimuth angle of 90° and an elevation angle of zero
specify a point on the *y*-axis.

**Example: **`45`

**Data Types: **`double`

`el`

— Elevation angle

scalar in range [–90,90]

Elevation angle specified as a scalar in the closed range [–90,90].
Angle units are in degrees. To define the elevation of a point on
the sphere, construct a vector from the origin to the point. The elevation
angle is the angle from its orthogonal projection into the *xy*-plane
to the vector itself. As examples, zero elevation angle defines the
equator of the sphere and ±90° elevation define the north
and south poles, respectively.

**Example: **`30`

**Data Types: **`double`

## Output Arguments

`vr`

— Vector in Cartesian representation

3-by-1 column vector | 3-by-*N* matrix

Cartesian vector returned as a 3-by-1 column vector or 3-by-*N* matrix having
the same dimensions as `vs`

. Each column of `vr`

contains the three components of the vector in the right-handed *x,y,z*
basis.

## More About

### Spherical basis representation of vectors

Spherical basis vectors are a local set of basis vectors which point along the radial and angular directions at any point in space.

The spherical basis is a set of three mutually orthogonal unit vectors $$({\widehat{e}}_{az},{\widehat{e}}_{el},{\widehat{e}}_{R})$$ defined at a point on the sphere. The first unit vector points along lines of azimuth at constant radius and elevation. The second points along the lines of elevation at constant azimuth and radius. Both are tangent to the surface of the sphere. The third unit vector points radially outward.

The orientation of the basis changes from point to point on
the sphere but is independent of *R* so as you move
out along the radius, the basis orientation stays the same. The following
figure illustrates the orientation of the spherical basis vectors
as a function of azimuth and elevation:

For any point on the sphere specified by *az* and *el*,
the basis vectors are given by:

$$\begin{array}{ll}{\widehat{e}}_{az}\hfill & =-\mathrm{sin}(az)\widehat{i}+\mathrm{cos}(az)\widehat{j}\hfill \\ {\widehat{e}}_{el}\hfill & =-\mathrm{sin}(el)\mathrm{cos}(az)\widehat{i}-\mathrm{sin}(el)\mathrm{sin}(az)\widehat{j}+\mathrm{cos}(el)\widehat{k}\hfill \\ {\widehat{e}}_{R}\hfill & =\mathrm{cos}(el)\mathrm{cos}(az)\widehat{i}+\mathrm{cos}(el)\mathrm{sin}(az)\widehat{j}+\mathrm{sin}(el)\widehat{k}\text{}\text{.}\hfill \end{array}$$

Any vector can be written in terms of components in this basis as $$v={v}_{az}{\widehat{e}}_{az}+{v}_{el}{\widehat{e}}_{el}+{v}_{R}{\widehat{e}}_{R}$$. The transformations between spherical basis components and Cartesian components take the form

$$\left[\begin{array}{c}{v}_{x}\\ {v}_{y}\\ {v}_{z}\end{array}\right]=\left[\begin{array}{ccc}-\mathrm{sin}(az)& -\mathrm{sin}(el)\mathrm{cos}(az)& \mathrm{cos}(el)\mathrm{cos}(az)\\ \mathrm{cos}(az)& -\mathrm{sin}(el)\mathrm{sin}(az)& \mathrm{cos}(el)\mathrm{sin}(az)\\ 0& \mathrm{cos}(el)& \mathrm{sin}(el)\end{array}\right]\left[\begin{array}{c}{v}_{az}\\ {v}_{el}\\ {v}_{R}\end{array}\right]$$

.

and

$$\left[\begin{array}{c}{v}_{az}\\ {v}_{el}\\ {v}_{R}\end{array}\right]=\left[\begin{array}{ccc}-\mathrm{sin}(az)& \mathrm{cos}(az)& 0\\ -\mathrm{sin}(el)\mathrm{cos}(az)& -\mathrm{sin}(el)\mathrm{sin}(az)& \mathrm{cos}(el)\\ \mathrm{cos}(el)\mathrm{cos}(az)& \mathrm{cos}(el)\mathrm{sin}(az)& \mathrm{sin}(el)\end{array}\right]\left[\begin{array}{c}{v}_{x}\\ {v}_{y}\\ {v}_{z}\end{array}\right]$$.

## Extended Capabilities

### C/C++ Code Generation

Generate C and C++ code using MATLAB® Coder™.

Usage notes and limitations:

Does not support variable-size inputs.

## Version History

**Introduced in R2020a**

## See Also

## Open Example

You have a modified version of this example. Do you want to open this example with your edits?

## MATLAB Command

You clicked a link that corresponds to this MATLAB command:

Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.

Select a Web Site

Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .

You can also select a web site from the following list:

## How to Get Best Site Performance

Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.

### Americas

- América Latina (Español)
- Canada (English)
- United States (English)

### Europe

- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)

- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)