Main Content

単位変換と単位系

Symbolic Math Toolbox™ で単位を変換します。このページでは、単位間および単位系 (SI、CGS、ユーザー定義の単位系など) 間の変換を示します。

単位の変換

単位間の変換には、unitConvert を使用します。

1.2 メートルをセンチメートルに変換します。

u = symunit;
len = 1.2*u.m;
len = unitConvert(len,u.cm)
len =
120*[cm]

len をインチに変換します。結果は厳密なシンボリック型となります。単位を分離して double に変換します。

len = unitConvert(len,u.in)
len =
(6000/127)*[in]
[len units] = separateUnits(len);
len = double(len)
len =
   47.2441

質量 5 kg を 2 m/s2 で加速するのに必要な力を計算します。

m = 5*u.kg;
a = 2*u.m/u.s^2;
F = m*a
F =
10*(([kg]*[m])/[s]^2)

結果をニュートンに変換します。

F = unitConvert(F,u.N)
F =
10*[N]

ヒント

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

F を 3 メートルにわたって加えたときのエネルギーを計算します。結果をジュールに変換します。

d = 3*u.m;
E = F*d
E =
30*[N]*[m]
E = unitConvert(E,u.J)
E =
30*[J]

E をキロワット時に変換します。

E = unitConvert(E,u.kWh)
E =
(1/120000)*[kWh]

温度単位の変換

温度は、絶対温度または差分のいずれかで表すことができます。既定値では、温度は差分であると仮定しています。'Temperature' 入力を 'absolute' と指定し、温度を絶対温度であると仮定して変換します。

摂氏 23 度をケルビンに変換して、最初は温度の差分として扱っていた温度を絶対温度として扱います。

u = symunit;
T = 23*u.Celsius;
relK = unitConvert(T,u.K,'Temperature','difference')
relK =
23*[K]
absK = unitConvert(T,u.K,'Temperature','absolute')
absK =
(5923/20)*[K]

0 は無次元であり、0 度は表すことができないため、cell 入力を使用して 0 度の温度単位を変換します。

摂氏 0 度を華氏に変換します。

tC = {0,u.Celsius};
tF = unitConvert(tC,u.Fahrenheit,'Temperature','Absolute')
tF =
32*[Fahrenheit]

SI、CGS、US 単位系への変換

単位系への変換では、自動的に正しい単位に変換されます。また、単位系の "組立" 単位への変換では、使いやすい単位を選ぼうとします。使用可能な単位系には SI、CGS および US が含まれます。すべての単位系については、単位系の一覧を参照してください。さらに、カスタム単位系を定義することもできます。

質量 5 kg を 2 m/s2 で加速するのに必要な力を計算します。結果として返される単位は、読みにくくなっています。SI オプションと Derived オプションを指定して、これらを便利な単位に変換します。unitConvert は正しいニュートン単位を自動的に選択します。

u = symunit;
m = 5*u.kg;
a = 2*u.m/u.s^2;
F = m*a
F =
10*(([kg]*[m])/[s]^2)
F = unitConvert(F,'SI','Derived')
F =
10*[N]

F を US 単位に変換します。既定により、変換された単位は基本単位です。便宜上、Derived オプションを使用して組立単位への変更も行います。組立単位の方が容易に理解できます。

F = unitConvert(F,'US')
F =
(1250000000000/17281869297)*(([ft]*[lbm])/[s]^2)
F = unitConvert(F,'US','Derived')
F =
(20000000000000/8896443230521)*[lbf]

F を CGS 組立単位に変換します。

F = unitConvert(F,'CGS','Derived')
F =
1000000*[dyn]

SI での指定を US 組立単位に変換します。温度を絶対と指定します。

loadCell = [   3*u.kg;      % capacity
              50*u.mm;      % length
              15*u.mm;      % width
              10*u.mm;      % height
             -10*u.Celsius; % minimum temperature
              40*u.Celsius; % maximum temperature
            ];
loadCell = unitConvert(loadCell,'US','derived','Temperature','absolute')
loadCell =
 (300000000/45359237)*[lbm]
             (125/762)*[ft]
              (25/508)*[ft]
              (25/762)*[ft]
            14*[Fahrenheit]
           104*[Fahrenheit]

unitConvert が便利な単位を選択しなかった場合は、さらに unitConvert コマンドを使用して結果を調整します。ここでは、フィートよりインチの方が便利です。 結果をインチに変換します。

loadCell = unitConvert(loadCell,u.inch)
loadCell =
 (300000000/45359237)*[lbm]
             (250/127)*[in]
              (75/127)*[in]
              (50/127)*[in]
            14*[Fahrenheit]
           104*[Fahrenheit]

厳密なシンボリック値は、読みにくくなっています。単位を分離して double に変換します。

[loadCellDouble loadCellUnits] = separateUnits(loadCell);
loadCellDouble = double(loadCellDouble)
loadCellDouble =
    6.6139
    1.9685
    0.5906
    0.3937
   14.0000
  104.0000

または、vpa を使用して結果を高精度で近似します。また、vpa 関数はシンボリック出力を返すためシンボリック単位を保持します。

loadCell = vpa(loadCell)
loadCell =
 6.6138678655463274216892140403508*[lbm]
   1.968503937007874015748031496063*[in]
  0.5905511811023622047244094488189*[in]
  0.3937007874015748031496062992126*[in]
                       14.0*[Fahrenheit]
                      104.0*[Fahrenheit]

米国測量エーカー単位の 5 エーカー (ac) をメートル法の面積に変換します。

u = symunit;
area = 5*u.ac_US;
area = unitConvert(area,'SI')
area =
 
(313632000000/15499969)*[m]^2

既存の系からのカスタム単位系の定義

カスタム単位系を使用すると、単位を柔軟に変換できます。カスタム単位系は、既定の単位系を変更することで簡単に定義できます。または、単位系を直接定義することもできます。単位系、基本単位および組立単位の定義については、単位系の定義を参照してください。

フォトニクスでは、一般的に使用される単位はナノ秒 (ns)、電子ボルト (eV) およびナノメートル (nm) です。SI 単位系を変更することで、これらの単位を使用する単位系を定義します。baseUnitsderivedUnits を使用して SI 基本単位と組立単位を取得します。subs を使用して結果を変更します。

u = symunit;
bunits = baseUnits('SI');
bunits = subs(bunits,[u.m u.s],[u.nm u.ns])
bunits =
[ [kg], [ns], [nm], [A], [cd], [mol], [K]]
dunits = derivedUnits('SI');
dunits = subs(dunits,u.J,u.eV)
dunits =
[ [F], [C], [S], [H], [V], [eV], [N], [lx], [lm], [Wb], [W], [Pa],...
 [Ohm], [T], [Gy], [Bq], [Sv], [Hz], [kat], [rad], [sr], [Celsius]]

メモ

baseUnitsderivedUnits という名前の変数を定義しないでください。これらの変数を定義すると、baseUnits 関数と derivedUnits 関数へのアクセスが妨げられます。

newUnitSystem を使用して新しい単位系を定義します。

phSys = newUnitSystem('photonics',bunits,dunits)
phSys = 
    "photonics"

周波数 1 GHz のフォトンのエネルギーを計算し、結果を phSys 系の組立単位に変換します。結果は電子ボルトで返されます。

f = 1*u.GHz;
E = u.h_c*f;
E = unitConvert(E,phSys,'Derived')
E =
(44173801/10681177560000)*[eV]

シンボリック厳密解の結果は、読みにくくなっています。単位を分離して double に変換します。

[E Eunits] = separateUnits(E);
E = double(E)
E =
   4.1357e-06

計算が完了したら、単位系を削除します。

removeUnitSystem(phSys)

カスタム単位系の直接定義

原子単位 (au) のカスタム単位系を定義します。

以下の基本単位を定義します。

次元単位実装
質量電子静止質量u.m_e
電気素量電荷u.e
長さボーア半径 (a0)u.Bohr
時間ħ/Eh

newUnit を使用して定義

u = symunit;
t_au = newUnit('t_au',u.hbar/u.E_h);
bunits = [u.m_e u.e u.Bohr u.t_au]
bunits =
[ [m_e], [e], [a_0], [t_au]]

以下の組立単位を定義します。

次元単位実装
角運動量換算プランク定数u.hbar
エネルギーハートリーu.E_h
電気双極子モーメントea0

newUnit を使用して定義

磁気双極子モーメント2 ボーア磁子 = eħ/2me

newUnit を使用して定義

電位Eh/e

newUnit を使用して定義

edm_au = newUnit('edm_au',u.e*u.bohr);
mdm_au  = newUnit('mdm_au', u.e*u.hbar/(2*u.me));
ep_au  = newUnit('ep_au', u.E_h/u.e);
dunits = [u.hbar u.E_h u.edm_au u.mdm_au u.ep_au]
dunits =
[ [h_bar], [E_h], [edm_au], [mdm_au], [ep_au]]

単位系を定義します。

auSys = newUnitSystem('atomicUnits',bunits,dunits)
auSys = 
    "atomicUnits"

陽子のプロパティを原子単位に変換します。

proton = [  1.672621923e-27*u.kg;      % mass
            1.6021766208e-19*u.C;      % charge
            5.4e-24*u.e*u.cm;          % electric dipole moment
            1.4106067873e-26*u.J/u.T;  % magnetic dipole moment
         ];
proton = unitConvert(proton,auSys,'Derived')
proton =
                   1836.1526726825404620381265471117*[m_e]
                    0.99999999176120807953267071600981*[e]
 0.0000000000000010204521072979158730257341288851*[edm_au]
         0.00048415958374162452452052339364507*pi*[mdm_au]

計算が完了したら、単位系と追加した単位を削除します。

removeUnitSystem(auSys)
removeUnit([u.t_au u.edm_au u.mdm_au u.ep_au])

単位系の定義

単位系は、基本単位と組立単位の集合であり、以下の規則に従います。

  • 基本単位は、質量、時間、長さ、電流、光度、物質量および温度の次元において独立していなければなりません。そのため、単位系は最大 7 つの基本単位で構成されます。独立性が満たされている限り、任意の単位を基本単位にすることができます (ニュートンやワットなどの単位を含む)。

  • 単位系は、7 つ未満の基本単位で構成することができます。たとえば、機械システムには長さ、質量および時間の次元の基本単位だけが必要です。

  • 単位系内の組立単位は、その単位系の基本単位のべき乗の積で表されなければなりません。基本単位とは異なり、組立単位は独立している必要はありません。

  • 組立単位はオプションであり、表現の利便性のために追加されます。たとえば、kg m/s2 はニュートンで略記されます。

  • 単位系の例として、SI 単位系では基本単位は、キログラム、秒、メートル、アンペア、カンデラ、モルおよびケルビンの 7 つです。derivedUnits('SI') を呼び出すことで、22 種類の組立単位が見つかります。

参考

| | | | | |

関連するトピック

外部の Web サイト