Home  |  About Us  |  Link To Us  |  FAQ  |  Contact

# Automatic UNITS conversion 1.0

Date Added: June 28, 2013  |  Visits: 224

Eliminate UNITS related errors in code, through automatic units conversionA UNIT class is defined to automatically perform units conversion into the MKS system (metre,kg,sec).I aim to solve the problem of using, say, mm instead of m, or converting mm to inches.This is also a problem during plotting, because of the need to keep track of the unitsof what is being plotted.For this reason I like to define all variables into the MKS system by writing:diameter = 10.0 * mm;This is an automatic conversion into MKS, while still allowing me to think in mm (or grams, N, inches ...)If the value of mm is 1e-3, then the value of diameter is 1e-2, which, experessed inmetres is = 10 mm. (everything is fine)From this point onward all the calculations that use 'diameter' can be done in the MKS,avoiding any "order of magnitude error". The syntax above is also particularly useful ininput files where a lot of scalar parameters are defined. It provides a lot ofinformation at a glance.When a variable needs to be displayed or plotted the following syntax can be used:disp(diameterVector/mm)orplot(diameterVector/mm,lengthVector/mm)Also it is possible to perform units conversions in functions or on the command line.For example the following statement converts 10 mm into inches>> 10 * mm/inans =0.3937all of this is not a my invention, being in use in at least another software. I adoptedit because for me it works very well.This new submission allows to create composite units, like:typing: kg/mm^3will display: kg/(mm^3) = 1.000000e+009in this case the class returned variable is 'COMPOSITEUNIT'Other examples:typing: kg*m/sec^2 / (kg/mm^3)will display: kg*m/(sec^2)/(kg/(mm^3)) = 1.000000e-009in this case the class returned variable is 'COMPOSITEUNIT' or: kg*m/sec^2 kg*m/(sec^2) = 1.000000INSTALLATIONTo implement the syntax above I created a class called 'unit', which must be saved intoa directory called 'unitClasses'. The directory 'unitClasses' must be added to theclasspath.The function 'unitClasses@unitprivategetStructure.m' contains a comprehensive list ofunits, which can be extended as suitable.Then by calling the method 'update(unit)', a number of classes will be created, one foreach of the units defined in 'getStructure'.You might then have to type:'clear classes''rehash toolbox'the updating can be done at any time a new unit is added to the function 'unitsList'.from now on every time a syntax like 'diameter = 10.0 * mm;' is used a unit conversionis made.More info in the README.txt fileYour feedback is welcome

 Requirements: No special requirements Platforms: Matlab Keyword: 1000000e009in,  1000000e2b009in,  Composite,  Compositeunit,  Create,  Created,  Display,  Examplestyping,  Implement,  Installationto,  Kgmm,  Kgmsec,  Kgmsec Kgmm,  Liketyping,  Returned,  Statement,  Submission Users rating: 0/10