from
UnitConvert
by Christophe Tilman
this script allow conversion between various engineering units.
|
| DataOut=UnitConvert(DataIn,UnitIn,UnitOut)
|
%UNITCONVERT allow conversion between various units.
%
%Description:
%list=UNITCONVERT give a list of available categories
%
%units=UNITCONVERT('category') give a list of available units for one category
%
%category=UNITCONVERT('unit') give the category name for that unit
%
%DataOut=UNITCONVERT(DataIn,'UnitIn') convert DataIn(matrix) to Standard Unit:
% acceleration:meter/sec
% angle:degree
% area:meter
% computer:bit
% concentration:mole/liter
% Density:kilogram/meter
% Distance:meter
% Energy:joule
% Flow:liter/minute
% Force:newton
% Light:lux
% Mass:kilogram
% Power:watt
% Pressure:pascal
% Rotation:revolution/second
% Speed:meter/second
% Time:second
% Torque:newton meter
% Volume:cubic meter
% Volume - Dry:liter
% Without Dimension:[]
%
%DataOut=UNITCONVERT(DataIn,'UnitIn','UnitOut') convert DataIn(matrix)
% from UnitIn to UnitOut
%
%Exemple:
% UnitConvert(500,'meter','kilometer')
% ans =
% 0.5000
%
% Author: Christophe Tilman
% Creation date: 14/08/09
% Contact, comments, suggestions: chr_tilman@hotmail.com
% Based on Convert.exe (Joshua F. Madisson)
%
function DataOut=UnitConvert(DataIn,UnitIn,UnitOut)
categories={...
'Acceleration';...
'Angle';...
'Area';...
'Computer';...
'Concentration';...
'Density';...
'Distance';...
'Energy';...
'Flow';...
'Force';...
'Light';...
'Mass';...
'Power';...
'Pressure';...
'Rotation';...
'Speed';...
'Time';...
'Torque';...
'Volume';...
'Volume - Dry';...
'Without Dimension';...
};
%acceleration (StdUnit:meter/sec)
items{1}={'centimeter/sec';'foot/sec';'gravity';'meter/sec';'mile/hour second';'millimeter/sec'};
coef{1}=[0.01;0.3048;9.8066882;1;0.44704101;0.001];
%angle (StdUnit:degree)
items{end+1}={'degree';'grad';'minute';'radian';'revolution';'second'};
coef{end+1}=[1;0.9000009;0.01666666667;57.2958;360;0.0002777777778];
%area (StdUnit:meter)
items{end+1}={'acre';'centimeter';'foot';'hectare';'inch';'kilometer';'meter';'mile';'milimeter';'yard'};
coef{end+1}=[4046.825252;0.0001;0.09290304;10000;0.00064516;1000000;1;2589988.11;1e-6;0.83612736];
%computer (StdUnit:bit)
items{end+1}={'bit';'byte';'exabyte';'gigabyte';'kilobit';'kilobyte';'megabit';'megabyte';'nibble';...
'petabyte';'terabyte';'yottabyte';'zettabyte'};
coef{end+1}=[1;8;9.223372037e+018;8589934592;1024;8192;1048576;8388608;4;9.007199255e+015;8.796093022e+012;...
9.671406557e+024;9.444732966e+021];
%concentration (StdUnit:mole/liter)
items{end+1}={'kilomole/meter';'micromole/centimeter';'micromole/decimeter';'micromole/liter';...
'millimole/centimeter';'millimole/decimeter';'millimole/liter';'millimole/meter';...
'millimole/millileter';'mole/decimeter';'mole/liter';'mole/meter';'one elementary entity/meter'};
coef{end+1}=[1;0.001;1e-6;1e-6;1;0.001;0.001;1e-6;1;1;1;0.001;1.660540104e-027];
%Density (StdUnit:kilogram/meter)
items{end+1}={'gram/centimeter';'gram/meter';'kilogram/meter';'milligram/meter';'ounce/gallon';...
'pound/foot';'pound/gallon';'pound/inch';'specific gravity';'ton/yard'};
coef{end+1}=[1000;0.001;1;1e-6;7.489151707;16.01846337;0.46872;27679.90471;0.4487015;693.5925001];
%Distance (StdUnit:meter)
items{end+1}={'centimeter';'dekameter';'foot';'furlong';'hectometer';'inch';'kilometer';'lightyear';...
'meter';'micrometer';'mil';'mile';'millimeter';'nanometer';'nautical mile';'parsec';'yard'};
coef{end+1}=[0.01;10;0.3048;201.168;100;0.0254;1000;9.460528e+015;1;1e-6;1e-6;1609.344;0.001;1e-9;1852;...
3.085678186e+016;0.9144];
%Energy (StdUnit:joule)
items{end+1}={'attojoule';'BTU';'calorie';'dyne-centimeter';'electron volt';'erg';'gigajoule';...
'gigawatt-hour';'gram force-centimeter';'horsepower-hour';'joule';'kilocalorie';'kiloelectron volt';...
'kilojoule';'kilowatt-hour';'megaelectron volt';'megajoule';'megawatt-hour';'microjoule';...
'millijoule';'nanojoule';'newton-meter';'ounce force-inch';'pound force-foot';'pound force-inch';...
'poundal-foot';'therm';'watt-hour';'watt-second'};
coef{end+1}=[1e-18;1055.055853;4.1868;1e-7;1.60219e-019;1e-7;1e+9;3.6e+012;9.80665e-005;2684519.538;...
1;4186.8;1.60219e-016;1000;3600000;1.60219e-013;1e+6;3600000000;1e-6;0.001;1e-9;1;0.007061551814;...
1.355817948;0.112984829;0.04214011009;105506000;3600;1];
%Flow (StdUnit:liter/minute)
items{end+1}={'centimeter/hour';'centimeter/minute';'centimeter/second';...
'foot/hour';'foot/minute';'foot/second';...
'gallon (UK)/day';'gallon (UK)/hour';'gallon (UK)/minute';'gallon (UK)/second';...
'gallon/day';'gallon/hour';'gallon/minute';'gallon/second';...
'liter/day';'liter/hour';'liter/minute';'liter/second';...
'meter/day';'meter/hour';'meter/minute';'meter/second';...
'milliliter/hour';'milliliter/minute';'milliliter/second';...
'ounce (UK)/hour';'ounce (UK)/minute';'ounce (UK)/second';...
'ounce/hour';'ounce/minute';'ounce/second';...
'yard/hour';'yard/minute';'yard/second'};
coef{end+1}=[1.666666667e-005;0.001;0.06;0.4719474432;28.31684659;1699.010796;0.003157008333;...
0.0757682;4.546092;272.76552;0.002628758183;0.0630901964;3.785411784;227.124707;0.0006944444444;...
0.01666666667;1;60;0.6944444444;16.66666667;1000;60000;1.666666667e-005;0.001;0.06;0.00047355125;...
0.028413075;1.7047845;0.0004928921594;0.02957352956;1.774411774;12.74258097;764.554858;45873.29148];
%Force (StdUnit:newton)
items{end+1}={'dyne';'gram force';'kilogram force';'kilonewton';'millinewton';'newton';...
'ounce-force';'pound-force';'kilopound-force'};
coef{end+1}=[1e-5;0.00980665;9.80665;1000;0.001;1;0.278013851;4.448221615;4448.221615];
%Light (StdUnit:lux)
items{end+1}={'flame';'foot-candles';'lux';'meter-candles'};
coef{end+1}=[43.05564167;10.76391042;1;1];
%Mass (StdUnit:kilogram)
items{end+1}={'carat';'grain';'gram';'kilogram';'megagram';'microgram';'milligram';...
'ounce (avdp)';'ounce (troy)';'pennyweight';'pound (advp)';'pound (troy)';...
'stone';'ton (long)';'ton (short)';'tonne'};
coef{end+1}=[0.0002;6.479891e-005;0.001;1;1000;1e-009;1e-006;0.02834952312;0.031103475;...
0.00155517384;0.45359237;0.3732417;6.35029318;1016.046909;907.18474;1000];
%Power (StdUnit:watt)
items{end+1}={'BTU/hour';'BTU/minute';'BTU/second';'calorie/second';'horsepower';...
'kilowatt';'megawatt';'pound-feet/minute';'pound-feet/second';'watt'};
coef{end+1}=[0.2928104185;17.56862511;1054.117506;4.183076342;745.6998716;1000;1000000;...
0.02259696581;1.355817948;1];
%Pressure (StdUnit:pascal)
items{end+1}={'atmosphere';'bar';'centimeters of mercury';'dyne/centimeter';...
'inches of mercury';'kilogram/centimeter';'kilogram/meter';'kilopascal';...
'megapascal';'microbar';'millibar';'millimeters of mercury';'pascal';...
'pound/foot';'pound/Inch';'kilopound/Inch';'ton/foot';'ton/Inch';'torr'};
coef{end+1}=[101325;100000;1333.223684;0.1;...
3386.388158;98066.5;9.80665;1000;...
1000000;0.1;100;133.3223684;1;...
47.88025898;6894.757293;6894757.293;95760.51796;13789514.59;133.3223684];
%Rotation (StdUnit:degree/second)
items{end+1}={'revolution/hour';'revolution/minute';'revolution/second';...
'radian/hour';'radian/minute';'radian/second';...
'degree/hour';'degree/minute';'degree/second'};
coef{end+1}=[1/3600;1/60;1;1/22619;1/376.992;1/62.832;1/360;1/60;1];
%Speed (StdUnit:meter/second)
items{end+1}={'C';'centimeter/hour';'centimeter/minute';'centimeter/second';...
'foot/hour';'foot/minute';'foot/second';...
'kilometer/hour';'kilometer/minute';'kilometer/second';...
'knot';'mach';'meter/hour';'meter/minute';'meter/second';...
'mile/hour';'mile/minute';'mile/second'};
coef{end+1}=[299792458;2.777777778e-006;0.0001666666667;0.01;8.466666667e-005;...
0.00508;0.3048;0.2777777778;16.66666667;1000;0.5144444444;331.46;0.0002777777778;...
0.01666666667;1;0.44704;26.8224;1609.344];
%Time (StdUnit:second)
items{end+1}={'century';'day';'decade';'fortnight';'hour';'leap-year';'millennium';...
'millisecond';'minute';'month';'nanosecond';'second';'week';'year'};
coef{end+1}=[3153600000;86400;315360000;1209600;3600;31622400;3.1536e+010;0.001;...
60;2592000;1e-009;1;604800;31536000];
%Torque (StdUnit:newton meter)
items{end+1}={'dyne centimeter';'gram-force centimeter';'kilogram-force meter';...
'kilonewton meter';'kilopond meter';'meganewton meter';'micronewton meter';...
'millinewton meter';'newton meter';'ounce-force foot';'ounce-force inch';...
'pound-force foot';'pound-force inch'};
coef{end+1}=[1e-007;9.80665e-005;9.80665;1000;9.80665;1000000;1e-006;0.001;1;0.0847386;...
0.00706155;1.35582;0.112984775];
%Volume (StdUnit:cubic meter)
items{end+1}={'CC';'cubic centimeter';'cubic foot';'cubic inch';'cubic meter';'cubic yard';...
'cup';'dram';'drop';'gallon';'gallon (UK)';'liter';'milliliter';'minim';...
'ounce';'ounce (UK)';'pint';'pint (UK)';'quart';'tablespoon';'teaspoon'};
coef{end+1}=[1;1e-006;0.02831684659;1.6387064e-005;1;0.764554858;0.0002365882365;3.6967162e-006;...
6.48524e-008;0.003785411784;0.004546092;0.001;1e-006;6.161152e-008;2.957352956e-005;...
2.8413075e-005;0.000473176473;0.000568261;0.000946352946;1.478676478e-005;4.928921594e-006];
%Volume - Dry (StdUnit:liter)
items{end+1}={'barrel';'liter';'pint';'bushel';'quart';'peck'};
coef{end+1}=[115.6271292;35.23907188;1;8.809767971;0.5506104982;1.101220996];
%Without Dimension (StdUnit:[])
items{end+1}={'percent';'[]'};
coef{end+1}=[.01;1];
switch nargin
case 0%list of categories
DataOut={};
for i=1:length(categories)
DataOut={DataOut{:} categories{i}}';
end
case 1%list of items for one category
DataOut={};
SIunit=[];
for i=1:length(categories)
if strcmp(DataIn,categories{i})
DataOut=items{i};
SIunit=find(coef{i}==1);
end
end
if ~isempty(SIunit);
DataOut={DataOut{[SIunit(1),1:SIunit(1)-1,SIunit(1)+1:end]}};
end
%or category name for one unit
if isempty(DataOut)
for i=1:length(categories)
it=items{i};
for j=1:length(it)
if strcmp(DataIn,it{j})
DataOut=categories{i};
end
end
end
end
case 2%conversion to StdUnit
TypeIn='';
for i=1:length(categories)
it=items{i};
for j=1:length(it)
if strcmp(UnitIn,it{j});
TypeIn=categories{i};
coefs=coef{i};
CoefIn=coefs(j);
end
end
end
if ~isempty(TypeIn)
DataOut=DataIn.*CoefIn;
else
disp('UnitIn not found in available units')
DataOut='';
end
case 3%conversion
%conversion is done with 2 steps:
%step1 from UnitIn to StdUnit
%step2 from StdUnit to UnitOut
TypeIn='';
TypeOut='';
for i=1:length(categories)
it=items{i};
for j=1:length(it)
if strcmp(UnitIn,it{j});
TypeIn=categories{i};
coefs=coef{i};
CoefIn=coefs(j);
end
if strcmp(UnitOut,it{j});
TypeOut=categories{i};
coefs=coef{i};
CoefOut=coefs(j);
end
end
end
if strcmp(TypeIn,TypeOut) && ~isempty(TypeIn)
DataOut=DataIn.*CoefIn./CoefOut;
else
disp('No match found between UnitIn and UnitOut')
DataOut='';
end
end
|
|
Contact us at files@mathworks.com