nmovshov/physunits

Dimensioned variables with enforced dimensional consistency
1.2K Downloads
Updated 10 Nov 2023

The `physunits` toolbox is an attempt to confer "dimensional awareness" to the
MATLAB environment. The motivation and a suggested algorithm are explained in:
Petty, G.W., 2001. Automated computation and consistency checking of physical
dimensions and units in scientific programs. _Software: Practice and Experience_,
31(11), pp.1067-1076. The author also made available for download a FORTRAN90
module that implements this idea in the FORTRAN language. The module and paper can
be downloaded from http://rain.aos.wisc.edu/~gpetty/physunits.html. The
`physunits` toolbox is based on that module and expands it while trying to adhere
consistently to MATLAB standards and practices (_from 2006_).
The `physunits` toolbox works by defining the `preal` data type and overloaded
functions to support it. A variable of type `preal` represents a physical
quantity. It has two _private_ fields: 'value' - the numerical value, which must
be a numeric type with zero imaginary part, and 'units' - a vector of 7 numbers,
representing the physical dimensions associated with 'value'. The format for the
'units' vector is [length, mass, time, temperature, electric current, amount of
matter, illumination, luminous intensity]. But these details are never needed by
the user, who defines his or her variables via an interface structure. The
interface structure contains predefined variables of type `preal`, representing
the most useful SI units as well as many other units, derived units, constants of
nature, parameters, etc. Get this structure by calling the `setUnits` function.
Create your own dimensioned variables by multiplying a number with an existing
`preal` variable.

See the HTML documentation for more details and examples.

### Setup

The physunits toolbox is implemented as an old-style (pre-2008) MATLAB class. In
this style MATLAB classes are defined by a directory of the class name preceded by
a `@` sign. The `@preal` directory contains the `preal` class definition and
methods. **To use the `preal` class, the directory immediately above `@preal` must
be on the MATLAB search path.**

Cite As

Naor Movshovitz (2024). nmovshov/physunits (https://github.com/nmovshov/physunits), GitHub. Retrieved .

MATLAB Release Compatibility
Created with R14
Compatible with any release
Platform Compatibility
Windows macOS Linux
Categories
Find more on Fortran with MATLAB in Help Center and MATLAB Answers

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Versions that use the GitHub default branch cannot be downloaded

Version Published Release Notes
1.5.0.0

Moving the submission to GitHub for easier maintenance

1.4.0.0

Adding an overloaded cumsum function.

1.3.0.0

I modified the < and <= operators to avoid dimension checking in the special case where the second argument has value zero. The only reason is to allow the common usage of
>> validateattributes(d, {'numeric'}, {'positive'})

1.2.0.0

Added setFUnits.m to create a "fake units" structure with only type double for deployment to users who do not wish to install the toolbox. Deployment usually involves a single line (single character really) change to code.
Update documentation.

1.0.0.0

Added a couple of overloaded functions
Fixed a dead link in documentation

To view or report issues in this GitHub add-on, visit the GitHub Repository.
To view or report issues in this GitHub add-on, visit the GitHub Repository.