Friday, January 9, 2015

Questionable Quantities in MATLAB

I am proud to introduce Quantities for MATLAB. Quantities is an units and uncertainties package for MATLAB. It is inspired by Pint, a Python package for quantities.

Installation

Clone or download the Quantities package to your MATLAB folder as +Quantities.

Usage

1. Construct a units registry, which contains all units, constants, prefixes and dimensions.
2.     >> ureg = Quantities.unitRegistry

ureg =

Map with properties:

Count: 279
KeyType: char
ValueType: any

3. Optionally pass verbosity parameter to unitRegistry to see list of units loaded.
4.     >> ureg = Quantities.unitRegistry('v',2)

5. Units and constants can be indexed from the unitRegsitry using their name or alias in parentheses or as dot-notation. The unit, constant and quantity class all subclass to double so you can perform any operation on them. Combining a double with a unit creates a quantity class object.
6.     >> T1 = 45*ureg('celsius') % index units using parentheses or dot notation
T1 =
45 ± 0 [degC];

>> T2 = 123.3*ureg.degC % index units by name or by alias
T2 =
123.3 ± 0 [degC];

>> heat_loss = ureg.stefan_boltzmann_constant*(T1^4 - T2^4)
heat_loss =
-819814 ± 0 [gram*second^-3];

7. Perform operations. All units are converted to base.
8.     >> T2.to_base
ans =
396.45 ± 0 [kelvin];

>> heat_loss = ureg.stefan_boltzmann_constant*(T1.to_base^4 - T2.to_base^4)
heat_loss =
-819814 ± 0 [gram*second^-3];

9. Add uncertainty to quantities by calling constructor. Uncertainty is propagated using 1st order linear combinations.
10.     >> T3 = Quantities.quantity(56.2, 1.23, ureg.degC)
T3 =
56.2 ± 1.23 [degC];

>> heat_loss = ureg.stefan_boltzmann_constant*(T1^4 - T3^4)
heat_loss =
-86228.1 ± 9966.66 [gram*second^-3];

11. Convert output to different units.
12.     >> heat_loss_kg = heat_loss.convert(ureg.kg/ureg.s^3)
heat_loss_kg =
-819.814 ± 0 [kilogram*second^-3];

13. Determine arbitrary conversion factor.
14.     >> conversion_factor = ureg.mile.convert(ureg.km)
conversion_factor =
1.60934 ± 0 [kilometer];

MATLAB Syntax Highlighter brush by Will Schleter 