Main Content

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 massu.m_e
Elementary chargeElectron chargeu.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 constantu.hbar
EnergyHartreeu.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').

See Also

| | | | | |

Related Topics

External Websites