3 データ型

編集

Octave のすべてのバージョンには,数々の組み込みデータ型があります。その中には,実数および複素数のスカラと行列,文字列,あるいはデータ構造体型が含まれます。

少しのC++コードを書くことにより,新しい特殊なデータ型を定義することが可能です。システムの中には,Octave を実行している間に,新たなデータ型を動的にロードするものもあります。その場合は,新たなデータ型を追加するために,Octave の全てを再コンパイルする必要はありません。Octave の動的リンク機能に関する情報は,Section 13.8 [Dynamically Linked Functions]を参照してください。Section 3.2 [User-defined Data Types] には,Octave で新たなデータ型を定義するためにしなければならないことについて解説しています。

typeinfo (expr)

編集

                                [Built-in Function]

式expr の型を,文字列として返します。もしexpr を省略するならば,現在のところ準備されてい る全てのデータ型を含む文字列の配列を返します。

3.1 組み込みデータ型

編集

標準の組み込みデータ型は,実数および複素数型のスカラと行列,範囲,文字列,およびデータ構造体です。さらなる組み込みデータ型が,将来のバージョンにおいて追加されるかもしれません。もし,現在のところ組み込みデータ型として提供されていない特殊な型が必要であれば,あなた独自のユーザ定義型を書くことを決心し,それをOctave の将来のリリース配布に向けて寄贈してください。

3.1.1 数値オブジェクト 

編集

Octave の組み込み数値オブジェクトには,実数および複素数のスカラと行列があります。すべての数値データは,現在,倍精度数値として保持されます。IEEE 浮動小数点書式を利用するシステムにおいては,とりうる数値は,およそ2.2251×10-308 から1.7977×10+308 までの範囲で保持することになり,相対精度は,およそ2.2204×10-16 となります。正確な値は,それぞれrealmin,realmax,およびeps という変数によって与えられます。

行列オブジェクトは任意のサイズをとることができ,動的に変形したりサイズ変更することができます。さまざまな添え字機能を利用することにより,個々の行や列,部分行列を抜き出すことが容易です。Section 10.1 [Index Expressions]を参照してください。さらなる情報を得るには,Chapter 4 [Numeric Data Types]を参照してください。

3.1.2 欠損データ 

編集

                                                           [Built-in Variable]

欠損値を表します。

isna (x)

編集

                                                            [Mapping Function]

x の要素がNA (欠損値)であれば1,それ以外は0 を返します。以下に例を示します。

is_NA ([13, Inf, NA, NaN])
⇒[ 0, 0, 1, 0 ]

is_nan_or_na (x)

編集

                                                            [Mapping Function]

x の要素がNaN あるいはNA (欠損値)であれば1,それ以外は0 を返します。以下に例を示します。

is_NAN_or_NA ([13, Inf, NA, NaN])
⇒[ 0, 0, 1, 1 ]

3.1.3 文字列オブジェクト

編集

Octave における文字列型は,ダブルクオーテーションもしくはシングルクオーテーション記号でくくられた文字の並びから構成されています。内部的には,Octave は現在,文字列を文字の配列として 保持しています。行列オブジェクトで動作する添え字の操作は,文字列に対しても動作します。さらなる情報を得るには,Chapter 5 [Strings]を参照してください。

3.1.4 データ構造体オブジェクト 

編集

Octave のデータ構造体型は,さまざまな型の関連するオブジェクトを結びつける助けとなります。現在の実装では,結びつけた配列の添え字には文字列しか使えませんが,文法はC 言語の構造体に近いものになっています。さらなる情報を得るには,Chapter 6 [Data Structures] を参照してください。

3.2 ユーザ定義データ型

編集

いつの日か,ユーザ定義データ型を管理することについて,Octave のメカニズムの完全な記述を含めるために,これを展開したいと思っています。この機能がここで述べられるまで,‘ov.h’,‘ops.h’,およびOctave の‘src’ディレクトリにある関連するファイルを読むことによって,これを実践しなければならないのです。

3.3 オブジェクトサイズ

編集

以下に示す関数は,変数あるいは式のサイズを決定できるようにするものです。これらの関数は,全てのオブジェクトに対して使用することができます。意味のない命令を与えたときには,これら関数は !1 を返します。たとえば,Octave のデータ構造体型には行も列もありません。したがって,rowsとcolumns関数は,引数に構造体を与えると !1 を返します。

columns (a)

編集

                                 [Function File]

a の列数を返します。

rows (a)

編集

                                 [Function File]

a の行数を返します。

length (a)

編集

                                [Built-in Function]

a の「長さ」を返します。行列に対しては,行数と列数のどちらか大きい方の値を長さとします(この奇妙な定義は,Matlab との互換性を保つためです)。

size (a, n)

編集

                                [Built-in Function]

a の行数と列数を返します。引数を1 つだけ入力し,1 つの出力結果を受け取るとき,その結果は行ベクトルとして返される。複数の出力結果を受け取るならば,最初に行数,2 番目に列数のように値が割り当てられる。たとえば,以下のようになる。

size ([1, 2; 3, 4; 5, 6])
⇒[ 3, 2 ]
[nr, nc] = size ([1, 2; 3, 4; 5, 6])
⇒nr = 3
⇒nc = 2

2つめの引数を与えるならば,sizeは,指定した次元のサイズを返します。たとえば,

size ([1, 2; 3, 4; 5, 6], 2)
⇒2

この例では,与えた行列の列数を返します。

isempty (a)

編集

                                [Built-in Function]

aが空行列(行数と列数の片方,もしくは両方がゼロの行列)であれば1を返します。そうでなければ0を返します。