## Unit Conversions and Unit Systems

Convert between units with Symbolic Math Toolbox™. This page shows conversions between units and between systems of units, such as SI, CGS, or a user-defined unit system.

### Convert Units

Convert between units by using `unitConvert`.

Convert 1.2 meters to centimeters.

```u = symunit; len = 1.2*u.m; len = unitConvert(len,u.cm)```
```len = 120*[cm]```

Convert `len` to inches. The result is in exact symbolic form. Separate units and convert to double.

`len = unitConvert(len,u.in)`
```len = (6000/127)*[in]```
```[len units] = separateUnits(len); len = double(len)```
```len = 47.2441```

Calculate the force needed to accelerate a mass of 5 kg at 2 m/s2.

```m = 5*u.kg; a = 2*u.m/u.s^2; F = m*a```
```F = 10*(([kg]*[m])/[s]^2)```

Convert the result to newton.

`F = unitConvert(F,u.N)`
```F = 10*[N]```

Tip

Use tab expansion to find names of units. Type `u.`, press Tab, and continue typing.

Calculate the energy when force `F` is applied for 3 meters. Convert the result to joule.

```d = 3*u.m; E = F*d```
```E = 30*[N]*[m]```
`E = unitConvert(E,u.J)`
```E = 30*[J]```

Convert `E` to kilowatt-hour.

`E = unitConvert(E,u.kWh)`
```E = (1/120000)*[kWh]```

### Temperature Unit Conversion

Temperatures can represent either absolute temperatures or temperature differences. By default, temperatures are assumed to be differences. Convert temperatures assuming temperatures are absolute by specifying the `'Temperature'` input as `'absolute'`.

Convert `23` degrees Celsius to degrees Kelvin, first as a temperature difference and then as an absolute temperature.

```u = symunit; T = 23*u.Celsius; relK = unitConvert(T,u.K,'Temperature','difference')```
```relK = 23*[K]```
`absK = unitConvert(T,u.K,'Temperature','absolute')`
```absK = (5923/20)*[K]```

Because the value `0` is dimensionless and `0` degrees cannot be represented, convert `0` degrees between temperature units by using cell input.

Convert `0` degrees Celsius to degrees Fahrenheit.

```tC = {0,u.Celsius}; tF = unitConvert(tC,u.Fahrenheit,'Temperature','Absolute')```
```tF = 32*[Fahrenheit]```

### Convert to SI, CGS, or US Unit Systems

Automatically convert to the correct units by converting to a unit system. Further, converting to the derived units of a unit system attempts to select convenient units. Available unit systems include SI, CGS, and US. For all unit systems, see Unit Systems List. In addition, you can define custom unit systems.

Calculate the force due to a 5 kg mass accelerating at 2 m/s2. The resulting units are hard to read. Convert them to convenient units by specifying the `SI` and `Derived` options. `unitConvert` automatically chooses the correct units of newton.

```u = symunit; m = 5*u.kg; a = 2*u.m/u.s^2; F = m*a```
```F = 10*(([kg]*[m])/[s]^2)```
`F = unitConvert(F,'SI','Derived')`
```F = 10*[N]```

Convert `F` to US units. By default, the converted units are base units. For convenience, also convert into derived units by specifying the `Derived` option. The derived units are easier to read.

`F = unitConvert(F,'US')`
```F = (1250000000000/17281869297)*(([ft]*[lbm])/[s]^2)```
`F = unitConvert(F,'US','Derived')`
```F = (20000000000000/8896443230521)*[lbf]```

Convert `F` to CGS derived units.

`F = unitConvert(F,'CGS','Derived')`
```F = 1000000*[dyn]```

Convert a specification in SI to US derived units. Specify the temperatures as absolute.

```loadCell = [ 3*u.kg; % capacity 50*u.mm; % length 15*u.mm; % width 10*u.mm; % height -10*u.Celsius; % minimum temperature 40*u.Celsius; % maximum temperature ]; loadCell = unitConvert(loadCell,'US','derived','Temperature','absolute')```
```loadCell = (300000000/45359237)*[lbm] (125/762)*[ft] (25/508)*[ft] (25/762)*[ft] 14*[Fahrenheit] 104*[Fahrenheit]```

If `unitConvert` does not choose your preferred unit, then adjust the result with further `unitConvert` commands. Here, inches are more convenient than feet. Convert the result to inches.

`loadCell = unitConvert(loadCell,u.inch)`
```loadCell = (300000000/45359237)*[lbm] (250/127)*[in] (75/127)*[in] (50/127)*[in] 14*[Fahrenheit] 104*[Fahrenheit]```

The exact symbolic values are hard to read. Separate the units and convert to `double`.

```[loadCellDouble loadCellUnits] = separateUnits(loadCell); loadCellDouble = double(loadCellDouble)```
```loadCellDouble = 6.6139 1.9685 0.5906 0.3937 14.0000 104.0000```

Alternatively, approximate the result to high precision by using `vpa`. The `vpa` function also keeps the symbolic units because it returns symbolic output.

`loadCell = vpa(loadCell)`
```loadCell = 6.6138678655463274216892140403508*[lbm] 1.968503937007874015748031496063*[in] 0.5905511811023622047244094488189*[in] 0.3937007874015748031496062992126*[in] 14.0*[Fahrenheit] 104.0*[Fahrenheit]```

Convert five acres (`ac`), whose unit is a U.S. survey acre, to metric area.

```u = symunit; area = 5*u.ac_US; area = unitConvert(area,'SI')```
```area = (313632000000/15499969)*[m]^2```

### Define Custom Unit System from Existing System

Custom unit systems provide flexibility in converting units. You can easily define a custom unit system by modifying a default unit system. Alternatively, you can define the system directly. For definitions of unit system, base units, and derived units, see Unit System Definition.

In photonics, commonly used units are nanosecond (ns), electron volt (eV), and nanometer (nm). Define a unit system with these units by modifying the SI unit system. Get SI base and derived units by using `baseUnits` and `derivedUnits`. Modify the units by using `subs`.

```u = symunit; bunits = baseUnits('SI'); bunits = subs(bunits,[u.m u.s],[u.nm u.ns])```
```bunits = [ [kg], [ns], [nm], [A], [cd], [mol], [K]]```
```dunits = derivedUnits('SI'); dunits = subs(dunits,u.J,u.eV)```
```dunits = [ [F], [C], [S], [H], [V], [eV], [N], [lx], [lm], [Wb], [W], [Pa],... [Ohm], [T], [Gy], [Bq], [Sv], [Hz], [kat], [rad], [sr], [Celsius]]```

Note

Do not define variables called `baseUnits` and `derivedUnits` because the variables prevent access to the `baseUnits` and `derivedUnits` functions.

Define the new unit system by using `newUnitSystem`.

`phSys = newUnitSystem('photonics',bunits,dunits)`
```phSys = "photonics"```

Calculate the energy of a photon of frequency 1 GHz and convert the result to derived units of the `phSys` system. The result is in electron volts.

```f = 1*u.GHz; E = u.h_c*f; E = unitConvert(E,phSys,'Derived')```
```E = (44173801/10681177560000)*[eV] ```

The exact symbolic result is hard to read. Separate the units and convert to double.

```[E Eunits] = separateUnits(E); E = double(E)```
```E = 4.1357e-06```

After completing calculations, remove the unit system.

`removeUnitSystem(phSys)`

### Define Custom Unit System Directly

Define a custom unit system for atomic units (au).

Define these base units:

DimensionUnitImplementation
MassElectron rest mass`u.m_e`
Elementary chargeElectron charge`u.e`
LengthBohr radius (a0)`u.Bohr`
Timeħ/Eh

Define by using `newUnit`.

```u = symunit; t_au = newUnit('t_au',u.hbar/u.E_h); bunits = [u.m_e u.e u.Bohr u.t_au]```
```bunits = [ [m_e], [e], [a_0], [t_au]]```

Define these derived units:

DimensionUnitImplementation
Angular momentumReduced Planck's constant`u.hbar`
EnergyHartree`u.E_h`
Electric dipole momentea0

Define by using `newUnit`.

Magnetic dipole moment2 Bohr magneton = eħ/2me

Define by using `newUnit`.

Electric potentialEh/e

Define by using `newUnit`.

```edm_au = newUnit('edm_au',u.e*u.bohr); mdm_au = newUnit('mdm_au', u.e*u.hbar/(2*u.me)); ep_au = newUnit('ep_au', u.E_h/u.e); dunits = [u.hbar u.E_h u.edm_au u.mdm_au u.ep_au]```
```dunits = [ [h_bar], [E_h], [edm_au], [mdm_au], [ep_au]]```

Define the unit system.

`auSys = newUnitSystem('atomicUnits',bunits,dunits)`
```auSys = "atomicUnits"```

Convert the properties of a proton to atomic units.

```proton = [ 1.672621923e-27*u.kg; % mass 1.6021766208e-19*u.C; % charge 5.4e-24*u.e*u.cm; % electric dipole moment 1.4106067873e-26*u.J/u.T; % magnetic dipole moment ]; proton = unitConvert(proton,auSys,'Derived')```
```proton = 1836.1526726825404620381265471117*[m_e] 0.99999999176120807953267071600981*[e] 0.0000000000000010204521072979158730257341288851*[edm_au] 0.00048415958374162452452052339364507*pi*[mdm_au]```

After completing calculations, remove the unit system and the added units.

```removeUnitSystem(auSys) removeUnit([u.t_au u.edm_au u.mdm_au u.ep_au])```

### Unit System Definition

A unit system is a collection of base units and derived units that follows these rules:

• Base units must be independent in terms of the dimensions mass, time, length, electric current, luminous intensity, amount of substance, and temperature. Therefore, a unit system has up to 7 base units. As long as the independence is satisfied, any unit can be a base unit, including units such as newton or watt.

• A unit system can have less than 7 base units. For example, mechanical systems need base units only for the dimensions length, mass, and time.

• Derived units in a unit system must have a representation in terms of the products of powers of the base units for that system. Unlike base units, derived units do not have to be independent.

• Derived units are optional and added for convenience of representation. For example, kg m/s2 is abbreviated by newton.

• An example of a unit system is the SI unit system, which has 7 base units: kilogram, second, meter, ampere, candela, mol, and kelvin. There are 22 derived units found by calling `derivedUnits('SI')`.