外部インタフェース/API | ![]() ![]() |
MATLABの最も一般的なデータタイプは、複素数倍精度非スパース行列です。これらの行列は、タイプdouble
で、m
行n
列です。ここで、m
は行数で、n
は列数です。データは、倍精度数の2つのベクトルとして格納されます。1つには実数データが含まれ、もう1つには虚数データが含まれます。このデータのポインタは、pr
(実数データのポインタ)およびpi
(虚数データのポインタ)として参照されます。実数のみの倍精度行列は、pi
がNULL
です。
数値行列
MATLABは、その他のタイプの数値行列もサポートします。これらは、符号付きおよび符号なしの単精度浮動小数点および8, 16, 32ビット整数です。データは、倍精度行列と同じ方法で2つのベクトルに格納されます。
MATLAB文字列
MATLAB文字列は、タイプchar
で、虚数データ成分がないことを除いて、符号なし16ビット整数と同じ方法で格納されます。文字列内の各キャラクタは、16ビットASCII Unicodeとして格納されます。Cと異なり、MATLAB文字列はNULLで終了しません。
スパース行列
スパース行列は、MATLABではフル行列とは異なるストレージ方法をもちます。パラメータpr
とpi
は、倍精度数の配列ですが、nzmax
, ir
, jc
の3つの新しいパラメータがあります。
nzmax
は、ir
とpr
の長さ、また存在すれば、pi
の長さを含む整数です。これは、スパース行列の非ゼロ要素数の最大数です。ir
は、pr
とpi
の対応する要素の行インデックスを含む長さnzmax
の整数配列を示します。jc
は、列のインデックスの情報を含む長さがN+1
の整数配列を示します。範囲 0
j
N-1
のj
に対して、jc[j]
はj
列目の最初の非ゼロ要素のir
とpr
(存在すればpi
も)のインデックスで、 jc[j+1] - 1
は最後の非ゼロ要素のインデックスです。結果として、jc[N]
は行列の非ゼロ要素数であるnnz
と等しくなります。nnz
はnzmax
より小さければ、追加のストレージを割り当てずに配列内により多くの非ゼロ要素を挿入することが出来ます。セル配列
セル配列は、mxArray
がセルとして参照されるMATLAB配列の集合です。これにより、異なるタイプのMATLAB配列を一緒に格納することができます。セル配列は、データ部分がmxArray
のポインタのベクトルを含むことを除いて、数値配列と同じ方法で格納されます。このベクトルの要素は、セルと呼ばれます。各セルは、それ以外のセル配列を含む、任意のサポートされているデータタイプでかまいません。
構造体
1行1列の構造体は、1行n列のセル配列と同じ方法で格納されます。ここでn
は、構造体のフィールド数です。データベクトルの要素は、フィールドと呼ばれます。各フィールドは、mxArray
に格納された名前に関連付けられます。
オブジェクト
オブジェクトは、構造体と同じ方法で格納およびアクセスされます。MATLABでは、オブジェクトは登録されたメソッドをもつ名前が付いた構造体です。MATLAB以外では、オブジェクトはオブジェクト名を識別する追加のクラス名に対するストレージを含む構造体です。
多次元配列
任意のタイプのMATLAB配列は、多次元にすることができます。整数のベクトルは、各要素が対応する次元のサイズであるとして格納されます。データのストレージは、行列と同じです。
論理配列
非複素数数値配列またはスパース配列は、論理配列としてフラグを付けることができます。論理配列に対するストレージは、非論理配列に対するストレージと同じです。
空配列
任意のタイプのMATLAB配列は、空にすることができます。空のmxArray
とは、少なくとも1つの次元が0と等しいmxArray
です。たとえば、タイプdouble
の倍精度mxArray
は、m
とn
が0に等しく、pr
がNULL
であるとき空配列です。
![]() | データストレージ | データタイプの使用法 | ![]() |