異なる整数型の組み合わせ
概要
異なる整数型 (たとえば、符号付きと符号なし、または 8 ビット整数と 16 ビット整数) を組み合わせて行列にする場合、MATLAB® が返す出力行列の要素はすべて、1 つの共通の型になります。MATLAB では、結果の行列のすべての要素が、入力行列の最も左側の要素のデータ型に設定されます。たとえば、以下の連結の結果は、3 つの 16 ビット符号付き整数のベクトルになります。
A = [int16(450) uint8(250) int32(1000000)]
A = 1×3 int16 row vector 450 250 32767
異なる整数サイズを組み合わせる例
次の 2 つの数値を一度連結し、次にその順序を入れ替えます。出力値は、整数を連結する順序によって変わります。最も左側の型によって、ベクトルのすべての要素のデータ型が決定されます。
A = [int16(5000) int8(50)]
A = 1×2 int16 row vector 5000 50
B = [int8(50) int16(5000)]
B = 1×2 int8 row vector 50 127
最初の操作は、16 ビット整数のベクトルを出力します。2 つ目の操作は、8 ビット整数のベクトルを出力します。要素 int16(5000)
は、8 ビット符号付き整数の最大値 127
に設定されます。
縦方向の連結に対しても同様の規則が適用されます。
C = [int8(50); int16(5000)]
C = 2×1 int8 column vector 50 127
符号付き整数を符号なし整数と組み合わせる例
ここでは、符号付き整数と符号なし整数に対して同じ操作を行います。ここでも、最も左側の要素によって、得られる行列のすべての要素のデータ型が決定されます。
A = [int8(-100) uint8(100)]
A = 1×2 int8 row vector -100 100
B = [uint8(100) int8(-100)]
B = 1×2 uint8 row vector 100 0
要素 int8(-100)
は、符号付きではなくなるのでゼロに設定されます。
MATLAB では、各要素を配列に連結する "前に"、各要素が評価されます。つまり、次のステートメントでは、2 つの要素が連結される前に 8 ビット符号付き整数 (50 に等しい) と 8 ビット符号なし整数 (符号なしの -50 はゼロに設定される) に評価されます。連結後、2 つ目の要素ではゼロ値が保持されますが、符号なしの int8
型になります。
A = [int8(50), uint8(-50)]
A = 1×2 int8 row vector 50 0