typecast
基となるデータを変更せずにデータ型を変換
説明
例
整数を同じストレージ サイズの符号なし整数に変換
整数を同じストレージ サイズの符号なし整数に変換します。
X = int16(-1)
X = int16
-1
Y = typecast(X,'uint16')
Y = uint16
65535
ビット パターンを 16 進数表現で表示します。typecast
を使用してデータ型を変更しても、基となるデータは変更されません。
format hex
X
X = int16
ffff
Y = typecast(X,'uint16')
Y = uint16
ffff
8 ビット整数を単精度に変換
8 ビット整数の 1 行 4 列のベクトルを作成します。
X = int8([77 60 43 26])
X = 1x4 int8 row vector
77 60 43 26
4 バイト (32 ビット) のストレージを使用する 4 つの 8 ビット整数を、同じ 4 バイトのストレージを使用する単精度数に変換します。
Y = typecast(X,'single')
Y = single
3.5411e-23
ビット パターンを 16 進数表現で表示します。16 進数表記で、1 バイト (8 ビット) は 2 桁で表されます。関数 typecast
は、データを変更せずにビット パターンを再配列します。
format hex
X
X = 1x4 int8 row vector
4d 3c 2b 1a
Y = typecast(X,'single')
Y = single
1a2b3c4d
32 ビット整数から 8 ビット整数への変換
32 ビット符号なし整数の 1 行 3 列のベクトルを作成します。
X = uint32([1 255 256])
X = 1x3 uint32 row vector
1 255 256
typecast
を使用して、X
を 8 ビット符号なし整数にキャストします。各 32 ビット値は、4 つの 8 ビット セグメントに分割されます。このコードをリトル エンディアンのシステムで実行すると、以下の結果が出力されます。
Y = typecast(X,'uint8')
Y = 1x12 uint8 row vector
1 0 0 0 255 0 0 0 0 1 0 0
X
の 3 番目の要素である 256 は、8 ビットで格納可能な最大値を超えています。そのため、Y(9) の変換した値が Y(10) にオーバーフローします。
Y(9:12)
ans = 1x4 uint8 row vector
0 1 0 0
基となるデータを変更せずに、Y
を 32 ビット符号なし整数に変換して戻すことができます。
X2 = typecast(Y,'uint32')
X2 = 1x3 uint32 row vector
1 255 256
typecast
の出力と cast
の出力を比較して、2 つの関数の違いを確認します。
Z = cast(X,'uint8')
Z = 1x3 uint8 row vector
1 255 255
X2 = cast(Z,'uint32')
X2 = 1x3 uint32 row vector
1 255 255
8 ビット整数から 16 ビット整数への変換
小さなデータ型 (uint8
) から大きなデータ型 (uint16
) に整数をキャストします。16 進数表現を使用して、ビット パターンの再配列を表示します。関数 typecast
は、出力をリトル エンディアン形式で返し、入力データの 4 つの 8 ビット セグメントを結合して 2 つの 16 ビット セグメントを生成します。
format hex
X = uint8([44 55 66 77])
X = 1x4 uint8 row vector
2c 37 42 4d
Y = typecast(X,'uint16')
Y = 1x2 uint16 row vector
372c 4d42
関数 swapbytes
を使用して、リトル エンディアン出力をビッグ エンディアン出力に変換できます (逆も可能)。
Y = swapbytes(typecast(X,'uint16'))
Y = 1x2 uint16 row vector
2c37 424d
入力引数
X
— 入力配列
スカラー | ベクトル
入力配列。スカラーまたはベクトルとして指定します。
データ型: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
type
— 新しいデータ型
'single'
| 'double'
| 'int8'
| 'int16'
| 'int32'
| 'int64'
| 'uint8'
| 'uint16'
| 'uint32'
| 'uint64'
新しいデータ型。'single'
、'double'
、'int8'
、'int16'
、'int32'
、'int64'
、'uint8'
、'uint16'
、'uint32'
または 'uint64'
として指定します。
type
のビット サイズが X
の各要素のビット サイズの n
倍の大きさである場合、X
をデータ型 type
に変換するには、X
に含まれる要素数が n
の倍数でなければなりません。そうでない場合、MATLAB® はエラーをスローします。
ヒント
関数
typecast
は、MATLAB 関数cast
とは異なり、入力データを変更しません。関数typecast
は常に、入力X
と同じバイト数を出力Y
に返します。たとえば、typecast
を使用して 16 ビット整数 1000 をuint8
にキャストすると、16 ビット全体を 2 つの 8 ビット セグメントに を返し (3 と 232)、元の値 (3*256 + 232 = 1000) を保持します。一方、関数cast
は、入力値を 255 に切り捨てます。typecast
の出力形式は、ご使用のシステムによって異なる場合があります。最下位バイトからデータを格納する ("リトル エンディアン" と呼ばれる順序) コンピューター システムも、最上位バイトからデータを格納する ("ビッグ エンディアン" と呼ばれる順序) コンピューター システムもあります。関数swapbytes
を使用して、バイト順をリトル エンディアンからビッグ エンディアン (またはその逆) に反転できます。
拡張機能
C/C++ コード生成
MATLAB® Coder™ を使用して C および C++ コードを生成します。
使用上の注意事項および制限事項:
データ型の引数の値は小文字でなければなりません。
MATLAB Function ブロック内で、継承された入力端子のデータ型を指定して
typecast
を使用すると、ソフトウェアがサイズ エラーをスローする場合があります。このエラーを回避するには、ブロックの入力端子のデータ型を明示的に指定してください。入力または結果の整数クラスは、ターゲット ハードウェアの C の型に直接マッピングされなければなりません。
入力は可変長ベクトルまたは固定サイズのベクトルでなければなりません。ツールボックス関数のコード生成に対する可変サイズの制限 (MATLAB Coder)を参照してください。
出力ベクトルの方向は常に入力ベクトルと同じです。
GPU コード生成
GPU Coder™ を使用して NVIDIA® GPU のための CUDA® コードを生成します。
使用上の注意事項および制限事項:
データ型の引数の値は小文字でなければなりません。
MATLAB Function ブロック内で、継承された入力端子のデータ型を指定して
typecast
を使用すると、ソフトウェアがサイズ エラーをスローする場合があります。このエラーを回避するには、ブロックの入力端子のデータ型を明示的に指定してください。入力または結果の整数クラスは、ターゲット ハードウェアの C の型に直接マッピングされなければなりません。
入力は可変長ベクトルまたは固定サイズのベクトルでなければなりません。
出力ベクトルの方向は常に入力ベクトルと同じです。
スレッドベースの環境
MATLAB® の backgroundPool
を使用してバックグラウンドでコードを実行するか、Parallel Computing Toolbox™ の ThreadPool
を使用してコードを高速化します。
この関数はスレッドベースの環境を完全にサポートしています。詳細については、スレッドベースの環境での MATLAB 関数の実行を参照してください。
GPU 配列
Parallel Computing Toolbox™ を使用してグラフィックス処理装置 (GPU) 上で実行することにより、コードを高速化します。
この関数は GPU 配列を完全にサポートしています。詳細については、GPU での MATLAB 関数の実行 (Parallel Computing Toolbox)を参照してください。
分散配列
Parallel Computing Toolbox™ を使用して、クラスターの結合メモリ上で大きなアレイを分割します。
この関数は分散配列を完全にサポートしています。詳細については、分散配列を使用した MATLAB 関数の実行 (Parallel Computing Toolbox)を参照してください。
バージョン履歴
R2006a より前に導入
MATLAB コマンド
次の MATLAB コマンドに対応するリンクがクリックされました。
コマンドを MATLAB コマンド ウィンドウに入力して実行してください。Web ブラウザーは MATLAB コマンドをサポートしていません。
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)