3.1 Built-in Data Types

Last-modified: 2025-03-01 (土) 21:13:52

3.1 組み込みデータ型

標準の組み込みデータ型は、実数および複素数のスカラーと行列、範囲、文字列、データ構造型、およびセル配列です。将来のバージョンでは、追加の組み込みデータ型が追加される可能性があります。現在組み込み型として提供されていない特殊なデータ型が必要な場合は、独自のユーザー定義データ型を作成し、将来のリリースの Octave で配布できるようにすることをお勧めします。

変数のデータ型は、次の関数を使用して決定および変更できます。

: classname = class (obj)
: cls = class (s, classname)
: cls = class (s, classname, parent1, …)

オブジェクトobjのクラスを返すか、構造体sのフィールドと名前 (文字列) classnameを持つクラスを作成します。

追加の引数には、新しいクラスの派生元となる親クラスのリストを指定します。d.

See also: typeinfo, isa.

: tf = isa (obj, classname)

obj がクラスclassnameのオブジェクトである場合は true を返します。

classname は、次のクラス カテゴリのいずれかになることもあります。

"float"
"double"クラスとで 構成される浮動小数点値"single"。
"integer"

クラス (u)int8、(u)int16、(u)int32、(u)int64 で構成される整数値。

"numeric"

浮動小数点値または整数値のいずれかで構成される数値。

classnameが文字列のセル配列の場合、 obj が属する 各クラスの true を含む同じサイズの論理配列が返されます。

See also: class, typeinfo.

: y = cast (x, "type")
: y = cast (x, "like", var)

x をデータ型typeに変換します

入力x は、ターゲット クラスに変換可能なクラスのスカラー、ベクトル、または行列です (以下を参照)。

の後に変数varが指定された場合"like"、x は同じデータ型とスパース属性に変換されます。varが複素数の場合、xも複素数になります。

varおよびtypeには、次の組み込み数値クラスのいずれかを指定できます。

"double"
"single"
"logical"
"char"
"int8"
"int16"
"int32"
"int64"
"uint8"
"uint16"
"uint32"
"uint64"

値x は、新しい型の範囲内に収まるように変更される場合があります。

例:

cast (-5, "uint8")
  ⇒ 0
cast (300, "int8")
  ⇒ 127

プログラミング ノート: この関数は、オブジェクトx がtypeという変換メソッドを持つことを前提としています。ユーザー定義クラスは、上記の完全な型リストのサブセットのみを実装できます。その場合、目的の型に到達するには、cast を 2 回呼び出す必要がある場合があります。たとえば、double への変換はほぼ常に実装されていますが、uint8 への変換は実装されていない可能性があります。その場合、次のコードが機能します。

cast (cast (user_defined_val, "double"), "uint8")

See also: typecast, int8, uint8, int16, uint16, int32, uint32, int64, uint64, double, single, logical, char, class, typeinfo.

: y = typecast (x, "class")

メモリ内のxのデータを 数値クラスclassのデータとして解釈した結果の新しい配列yを返します。

xのクラスとclass は両方とも組み込みの数値クラスのいずれかである必要があります。

"logical"
"char"
"int8"
"int16"
"int32"
"int64"
"uint8"
"uint16"
"uint32"
"uint64"
"double"
"single"
"double complex"
"single complex"

最後の 2 つは、 classでのみ使用され、複素数値の結果が要求されていることを示します。複素配列は、連続する実数のペアとしてメモリに格納されます。整数型のサイズは、ビット数によって決まります。logical と char はどちらも通常は 1 バイト幅ですが、これは C++ では保証されません。システムが IEEE 準拠の場合、single と double はそれぞれ 4 バイトと 8 バイト幅になります。 は、 class"logical"では許可されません。

入力が行ベクトルの場合、戻り値は行ベクトルになり、それ以外の場合は列ベクトルになります。

xのビット長がclassのビット長で割り切れない場合は、エラーが発生します。

リトルエンディアンのマシンで型キャストを使用する例は次のとおりです。

x = uint16 ([1, 65535]);
typecast (x, "uint8")
⇒ [   1,   0, 255, 255]

See also: cast, bitpack, bitunpack, swapbytes.

: y = swapbytes (x)

値のバイト順序を入れ替え、リトルエンディアンからビッグエンディアンへ、またはその逆に変換します。

例えば:

swapbytes (uint16 (1:4))
⇒   256   512   768  1024

See also: typecast, cast.

: y = bitpack (x, class)

論理配列 x を数値クラスclassのデータの生のビットパターンとして解釈した結果得られる新しい配列yを返します。

クラスは組み込みの数値クラスのいずれかである必要があります

"double"
"single"
"double complex"
"single complex"
"char"
"int8"
"int16"
"int32"
"int64"
"uint8"
"uint16"
"uint32"
"uint64"

xの要素数は、クラスのビット長で割り切れる必要があります 。割り切れない場合は、余分なビットは破棄されます。ビットは、重要性の昇順、つまり、x(1)はビット 0、x(2)はビット 1 などになります。

xが行ベクトルの場合、結果は行ベクトルになります。それ以外の場合は列ベクトルになります。

See also: bitunpack, typecast.

: y = bitunpack (x)

xの生のビットパターンに対応する 論理配列yを返します。

x は組み込みの数値クラスのいずれかに属している必要があります。

"double"
"single"
"char"
"int8"
"int16"
"int32"
"int64"
"uint8"
"uint16"
"uint32"
"uint64"

xが行ベクトルの場合、結果は行ベクトルになります。それ以外の場合は、列ベクトルになります。

See also: bitpack, typecast.

Numeric Objects
Missing Data
String Objects
Data Structure Objects
Cell Array Objects