MATLABデータ型完全ガイド:15種類の基本型と変換・判定関数
MATLABでは型宣言や次元ステートメントは不要です。MATLABが新しい変数名に遭遇すると、変数を作成し、適切なメモリ空間を割り当てます。
変数がすでに存在する場合、MATLABは元の内容を新しい内容で置き換え、必要に応じて新しいストレージスペースを割り当てます。
例えば:
Total = 42
上記ステートメントは、'Total'という1行1列の行列を作成し、値42を格納します。
MATLABで利用可能なデータ型
MATLABは15の基本データ型を提供します。すべてのデータ型は、行列または配列の形でデータを格納します。この行列または配列のサイズは最小0行0列で、任意のサイズの行列または配列まで拡張できます。
以下の表は、MATLABで最も一般的に使用されるデータ型を示しています:
| 番号 | データ型と説明 |
|---|---|
| 1 | int8 8ビット符号付き整数 |
| 2 | uint8 8ビット符号なし整数 |
| 3 | int16 16ビット符号付き整数 |
| 4 | uint16 16ビット符号なし整数 |
| 5 | int32 32ビット符号付き整数 |
| 6 | uint32 32ビット符号なし整数 |
| 7 | int64 64ビット符号付き整数 |
| 8 | uint64 64ビット符号なし整数 |
| 9 | single 単精度数値データ |
| 10 | double 倍精度数値データ |
| 11 | logical 1または0の論理値、それぞれtrueとfalseを表す |
| 12 | char 文字データ(文字列は文字のベクトルとして格納) |
| 13 | cell配列 インデックス付きセルの配列、それぞれ異なる次元とデータ型の配列を格納可能 |
| 14 | 構造体 C言語風の構造体、各構造体は異なる次元とデータ型の配列を格納できる名前付きフィールドを持つ |
| 15 | 関数ハンドル 関数へのポインタ |
| 16 | ユーザークラス ユーザー定義クラスから構築されたオブジェクト |
| 17 | Javaクラス Javaクラスから構築されたオブジェクト |
例
以下のコードでスクリプトファイルを作成します:
Live Demostr = 'Hello World!' n = 2345 d = double(n) un = uint32(789.50) rn = 5678.92347 c = int32(rn)
上記コードをコンパイルして実行すると、以下の結果が生成されます:
str = Hello World! n = 2345 d = 2345 un = 790 rn = 5678.9 c = 5679
データ型変換
MATLABは、あるデータ型から別のデータ型へ値を変換するさまざまな関数を提供します。以下の表はデータ型変換関数を示しています:
| 関数 | 目的 |
|---|---|
| char | 文字配列(文字列)に変換 |
| int2str | 整数データを文字列に変換 |
| mat2str | 行列を文字列に変換 |
| num2str | 数値を文字列に変換 |
| str2double | 文字列を倍精度値に変換 |
| str2num | 文字列を数値に変換 |
| native2unicode | 数値バイトをUnicode文字に変換 |
| unicode2native | Unicode文字を数値バイトに変換 |
| base2dec | N進数文字列を10進数に変換 |
| bin2dec | 2進数文字列を10進数に変換 |
| dec2base | 10進数をN進数文字列に変換 |
| dec2bin | 10進数を2進数文字列に変換 |
| dec2hex | 10進数を16進数文字列に変換 |
| hex2dec | 16進数文字列を10進数に変換 |
| hex2num | 16進数文字列を倍精度数値に変換 |
| num2hex | 単精度と倍精度をIEEE 16進数文字列に変換 |
| cell2mat | セル配列を数値配列に変換 |
| cell2struct | セル配列を構造体配列に変換 |
| cellstr | 文字配列から文字列のセル配列を作成 |
| mat2cell | 配列を、潜在的に異なるサイズのセルを持つセル配列に変換 |
| num2cell | 配列を、一貫したサイズのセルを持つセル配列に変換 |
| struct2cell | 構造体をセル配列に変換 |
データ型の判定
MATLABは、変数のデータ型を特定するためのさまざまな関数を提供します。
以下の表は、変数のデータ型を判定するための関数を示しています:
| 関数 | 目的 |
|---|---|
| is | 状態を検出 |
| isa | 入力が指定クラスのオブジェクトか判定 |
| iscell | 入力がセル配列か判定 |
| iscellstr | 入力が文字列のセル配列か判定 |
| ischar | アイテムが文字配列か判定 |
| isfield | 入力が構造体配列フィールドか判定 |
| isfloat | 入力が浮動小数点配列か判定 |
| ishghandle | Handle Graphicsオブジェクトハンドルの場合true |
| isinteger | 入力が整数配列か判定 |
| isjava | 入力がJavaオブジェクトか判定 |
| islogical | 入力が論理配列か判定 |
| isnumeric | 入力が数値配列か判定 |
| isobject | 入力がMATLABオブジェクトか判定 |
| isreal | 入力が実数配列かチェック |
| isscalar | 入力がスカラか判定 |
| isstr | 入力が文字配列か判定 |
| isstruct | 入力が構造体配列か判定 |
| isvector | 入力がベクトルか判定 |
| class | オブジェクトのクラスを判定 |
| validateattributes | 配列の妥当性をチェック |
| whos | ワークスペースの変数をサイズと型付きでリスト |
例
以下のコードでスクリプトファイルを作成します:
Live Demox = 3 isinteger(x) isfloat(x) isvector(x) isscalar(x) isnumeric(x) x = 23.54 isinteger(x) isfloat(x) isvector(x) isscalar(x) isnumeric(x) x = [1 2 3] isinteger(x) isfloat(x) isvector(x) isscalar(x) x = 'Hello' isinteger(x) isfloat(x) isvector(x) isscalar(x) isnumeric(x)
ファイルを実行すると、以下の結果が生成されます:
x = 3 ans = 0 ans = 1 ans = 1 ans = 1 ans = 1 x = 23.540 ans = 0 ans = 1 ans = 1 ans = 1 ans = 1 x = 1 2 3 ans = 0 ans = 1 ans = 1 ans = 0 x = Hello ans = 0 ans = 0 ans = 1 ans = 0 ans = 0
MATLAB