ドキュメンテーション

最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

symunit

説明

u = symunit は単位のコレクションを返します。その後、u.unit を使用して単位を指定します。たとえば、3 メートルを 3*u.m と指定します。u.meteru.metre のように、単位の一般的な別名がサポートされています。複数形はサポートされていません。

測定単位の指定

単位を指定する前に、symunit を使用して単位を読み込みます。その後、ドット表記で単位を指定します。

長さに 3 を指定します。エイリアス u.meter または u.metre も使用できます。

u = symunit;
length = 3*u.m
length =
3*[m]

ヒント

単位の名前を探すにはタブの拡張を使用してください。u. と入力し、Tab を押して、入力を続けてください。

加速度に重力加速度 9.81 メートル毎平方秒を指定します。単位はシンボリック式なので、数値の入力は厳密なシンボリック値に変換されます。ここで、9.81981/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 度をケルビンに変換して、最初は温度の差分として扱っていた温度を絶対温度として扱います。

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]

ヒント

  • 1 は無次元単位であることを表します。したがって、isUnit(sym(1)) は論理値 1 (true) を返します。

  • デシベルのような特定の非線形単位は、数値演算が不可能なため実装されません。

  • 単位の指定にドット表記を使用する代わりに、string の入力を symunit(unit) で使用する方法も選べます。たとえば、symunit('m') は単位をメートルに指定します。

R2017a で導入