## 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