symunit
測定単位
説明
u = symunit
は単位のコレクションを返します。その後、u.
unit
を使用して単位を指定します。たとえば、3
メートルを 3*u.m
と指定します。u.meter
や u.metre
のように、単位の一般的な別名がサポートされています。複数形はサポートされていません。
例
測定単位の指定
単位を指定する前に、symunit
を使用して単位を読み込みます。その後、ドット表記で単位を指定します。
長さに 3
を指定します。エイリアス u.meter
または u.metre
も使用できます。
u = symunit; length = 3*u.m
length = 3*[m]
ヒント
単位の名前を探すにはタブの拡張を使用してください。u.
と入力し、Tab キーを押して、入力を続けてください。
加速度に重力加速度 9.81
メートル毎平方秒を指定します。単位はシンボリック式なので、数値の入力は厳密なシンボリック値に変換されます。ここで、9.81
は 981/100
に変換されます。
g = 9.81*u.m/u.s^2
g = (981/100)*([m]/[s]^2)
シンボリック演算と数値演算の違いの詳細については、数値演算またはシンボリック演算の選択を参照してください。
単位についての演算と double への変換
単位について標準的な演算を行うと、シンボリック式と同じように振る舞います。数値演算を行うには、値を単位から分離し、任意のシンボリック パラメーターを代入し、結果を double に変換します。
5
キロメートルを 2
時間で移動するのに必要な速度を求めます。
u = symunit; d = 5*u.km; t = 2*u.hr; s = d/t
s = (5/2)*([km]/[h])
値 5/2
はシンボリックです。double の出力が好ましい、あるいはシンボリック値を受けつけない MATLAB® 関数のために double の出力が要求されることがあります。separateUnits
を使用した後、double
を使用して数値と切り離すことで、double に変換します。
[sNum,sUnits] = separateUnits(s)
sNum = 5/2 sUnits = 1*([km]/[h])
sNum = double(sNum)
sNum = 2.5000
単位ワークフロー全体については、測定単位のチュートリアルを参照してください。
単位の変換
unitConvert
を使用して単位を書き換えることで、好きな単位を使用します。特定の単位を指定する代わりに、SI 単位系に準ずるように指定することもできます。
2
キログラムを 5
m/s2 に加速するのに必要な力を計算します。式の単位は自動的にはニュートンに書き換えられません。
u = symunit; m = 2*u.kg; a = 5*u.m/u.s^2; F = m*a
F = 10*(([kg]*[m])/[s]^2)
unitConvert
を使用して、式の単位をニュートンに変換します。
F = unitConvert(F,u.N)
F = 10*[N]
5
cm をインチに変換します。
length = 5*u.cm; length = unitConvert(length,u.in)
length = (250/127)*[in]
length
を SI 単位に変換します。結果はメートルで返されます。
length = unitConvert(length,'SI')
length = (1/20)*[m]
同次元の単位を単純化
simplify
を使用して、等しい次元の単位を含む式を単純化します。simplify
を呼び出すまでは、単位の単純化や整合性チェックは自動的には行われません。
u = symunit; expr = 300*u.cm + 40*u.inch + 2*u.m
expr = 300*[cm] + 40*[in] + 2*[m]
expr = simplify(expr)
expr = (3008/5)*[cm]
simplify
は返す単位を自動的に選択します。特定の単位を選ぶには、単位の変換を参照してください。
温度:絶対形式と差分形式
既定値では、温度は差分で表されることを仮定しています。たとえば、5*u.Celsius
は摂氏 5 度の差分温度を表します。この仮定により温度の値の算術演算、および温度スケール間での変換が可能になります。
絶対温度を表すにはケルビンを使用します。これにより絶対温度と温度の差分を区別する必要がなくなります。
摂氏 23
度を K に変換して、最初は温度の差分として扱っていた温度を絶対温度として扱います。
u = symunit; T = 23*u.Celsius; diffK = unitConvert(T,u.K)
diffK = 23*[K]
absK = unitConvert(T,u.K,'Temperature','absolute')
absK = (5923/20)*[K]
制限
シンボリック単位を使用する場合、シンボリック単位の
0
倍の値は無次元0
として返されます。シンボリック単位に0
を乗算するときに単位を保持するには、cell 配列を使用してゼロ測定値を表します。たとえば、摂氏
0
度を cell 配列として定義し、関数unitConvert
を使用してそれを華氏に変換できます。u = symunit; tC = {0,u.Celsius}; tF = unitConvert(tC,u.Fahrenheit,'Temperature','Absolute')
tF = 32*[Fahrenheit]
ヒント
1
は無次元単位であることを表します。したがって、isUnit(sym(1))
は logical1
(true
) を返します。デシベルのような特定の非線形単位は、数値演算が不可能なため実装されません。
単位の指定にドット表記を使用する代わりに、
symunit(unit)
で string 入力を使用することもできます。たとえば、symunit("m")
は単位をメートルに指定します。