ドキュメンテーション センター

  • 評価版
  • 製品アップデート

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

整数

整数クラス

MATLAB® には、4 種類の符号付きおよび符号なしの整数クラスがあります。符号付きタイプを使うと、正の整数だけでなく負の整数も扱うことができますが、数値の正と負の符号を指定するために 1 ビットを使用するため、符号なしタイプのように広範な数値を網羅することはできません。符号なしタイプを使うと数値範囲は広くなりますが、ゼロまたは正の数値しか扱えません。

MATLAB では、整数データの保存に対し 1、2、4、8 バイトがサポートされています。データの処理に最小の整数タイプを使用すれば、メモリ消費量と実行時間を削減できます。たとえば、値 100 を保存するためには 32 ビットの整数は必要ありません。

8 つの整数クラス、各タイプで保存可能な値の範囲、そのタイプを作成するために必要な MATLAB 変換関数を以下に示します。

クラス

値の範囲

変換関数

符号付き 8 ビット整数

-27 ~ 27-1

int8

符号付き 16 ビット整数

-215 ~ 215-1

int16

符号付き 32 ビット整数

-231 ~ 231-1

int32

符号付き 64 ビット整数

-263 ~ 263-1

int64

符号なし 8 ビット整数

0 ~ 28-1

uint8

符号なし 16 ビット整数

0 ~ 216-1

uint16

符号なし 32 ビット整数

0 ~ 232-1

uint32

符号なし 64 ビット整数

0 ~ 264-1

uint64

整数データの作成

MATLAB では既定で、数値データが倍精度浮動小数点 (double) として保存されます。データを整数として保存するには、上記の表に示した変換関数のいずれかを使用して、double から希望する整数型に変換しなければなりません。

たとえば、325 を変数 x に割り当て、16 ビット符号付き整数として保存するには、次のように入力します。

x = int16(325);

整数に変換される数値が小数部分をもつ場合は、最も近い整数に丸められます。小数部分がちょうど 0.5 である場合は、等距離にある 2 つの整数から、絶対値の大きい方の整数が選択されます。

x = 325.499;                  x = x + .001;

int16(x)                      int16(x)
ans =                         ans =
     325                           326

既定の方法以外で、数値を丸める必要がある場合、MATLAB では 4 つの丸め関数、roundfixfloorceil が提供されています。ゼロでない小数部がある場合は、関数 fix によって既定の方法がオーバーライドされ、"ゼロ方向" に丸められます。

x = 325.9;

int16(fix(x))
ans =
     325

整数と浮動小数点の両方を含む算術演算の結果は、常に、整数データ型になります。MATLAB では、必要な場合、既定の丸めアルゴリズムに従って結果を丸めます。次の例は、厳密な答え 1426.75 を出した後に、次に最も大きい整数に丸めています。

int16(325) * 4.39
ans =
     1427

変換関数は、文字列などのその他のクラスを整数に変換する場合にも便利です。

str = 'Hello World';

int8(str)
ans =
   72  101  108  108  111   32   87  111  114  108  100

整数クラスの算術演算

MATLAB では、次のデータ型に対して整数の算術演算を実行できます。

  • 同じ整数データ型をもつ、整数あるいは整数配列。この場合、結果はオペランドと同じデータ型をもちます。

    x = uint32([132 347 528]) .* uint32(75);
    class(x)
    ans =
       uint32
  • 整数あるいは整数配列と、スカラー倍精度浮動小数点数。この場合、結果は整数オペランドと同じデータ型をもちます。

    x = uint32([132 347 528]) .* 75.49;
    class(x)
    ans =
       uint32

二項演算で、一方のオペランドが整数データ型 (ただし、64 ビット整数以外) の配列で、他方のオペランドがスカラー double である場合、MATLAB では、要素単位の倍精度算術演算を行った後、結果がオリジナルの整数データ型に変換されます。二項演算で、64 ビット整数の配列とスカラー double を使用する場合、MATLAB では、80 ビット拡張精度算術であるかのように演算して精度を失わないようにします。

整数クラスの最大値と最小値

各整数データ型には、データ型で表現できる最大整数値と最小整数値があります。整数の表の「数値範囲」列に、各整数データ型の最大値と最小値がリストされています。

これらの値は、関数 intmax と関数 intmin を使用しても得ることができます。

intmax('int8')                intmin('int8')
ans =                         ans =
   127                           -128

整数データ型の最大値よりも大きい数をこのデータ型に変換する場合、MATLAB では値が最大値に設定されます。同様に、整数データ型の最小値よりも小さい数を変換する場合は、MATLAB によって最小値に設定されます。たとえば、次のようになります。

x = int8(300)                 x = int8(-300)
x =                           x =
   127                           -128

また、整数を含む算術演算の結果が、データ型の最大(あるいは最小) 値を超える場合、MATLAB では結果が最大 (あるいは最小) 値に設定されます。

x = int8(100) * 3             x = int8(-100) * 3
x =                           x =
   127                           -128

整数関数

MATLAB で一般的に整数に対して使用される関数のリストは、「整数関数」を参照してください。

この情報は役に立ちましたか?