ドキュメンテーション

最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

uencode

浮動小数点入力の量子化および符号化による整数出力

構文

y = uencode(u,n)
y = uencode(u,n,v)
y = uencode(u,n,v,'SignFlag')

説明

y = uencode(u,n) は、浮動小数点数 u から成る多次元配列のエントリを量子化、2n レベルの量子化 を使用して整数として符号化します。n は、2 ~ 32 の整数です。入力は、実数、複素数、倍精度、単精度のいずれでも可能です。出力 y と入力 u は、同じサイズの配列です。出力 y の要素は、振幅が範囲 [0, 2n-1] 内にある、符号なしの整数です。範囲 [-1,1] に入らない入力 u の要素は、オーバーフローとして取り扱われ、飽和されます。

  • 入力 u のエントリが -1 より小さい場合、関数 uencode の出力は 0 になります。

  • 入力 u のエントリが 1 より大きい場合、関数 uencode の出力は 2n-1 になります。

y = uencode(u,n,v) では、飽和を行う前に、入力 u が範囲 [-v,v] の浮動小数点値をもつエントリをもつことができます (v の既定値は 1 です)。範囲 [-v,v] に入らない入力 u の要素は、オーバーフローとして取り扱われ、飽和されます。

  • 入力のエントリが -v より小さい場合、関数 uencode の出力値は 0 になります。

  • 入力のエントリが v より大きい場合、関数 uencode の出力値は 2n - 1 になります。

y = uencode(u,n,v,'SignFlag') では、範囲 [-v,v] 内の値をもつ浮動小数点数 u 個の多次元配列内のエントリが整数出力 y にマッピングされます。この範囲外の入力エントリは飽和されます。出力の整数タイプは、量子化レベル 2n の数と 'SignFlag' の値に依存し、次のいずれかになります。

  • 'signed': 出力は範囲 [-2n/2, (2n/2) – 1] の大きさをもつ符号付き整数

  • 'unsigned' (既定): 出力は範囲 [0, 2n – 1] の大きさをもつ符号なし整数

出力データ型は、次の表に示すビット数に対して最適化されています。

n

符号なし整数

符号付き整数

2 ~ 8

uint8

int8

9 ~ 16

uint16

int16

17 ~ 32

uint32

int32

すべて折りたたむ

[-1, 1] の浮動小数点スカラーを uint8 (符号なし) 整数にマッピングします。階段型プロットを作成します。横軸は -1 ~ 1、縦軸は 0 ~ 7 (23-1) の範囲となります。

u = -1:0.01:1;
y = uencode(u,3);
plot(u,y,'.')

入力にピーク値を設定することで、飽和の影響をみることができます。

u = -2:0.5:2;
y = uencode(u,5,1)
y = 1x9 uint8 row vector

    0    0    0    8   16   24   31   31   31

符号付きの出力が必要であることを指定します。

u = -2:0.5:2;
y = uencode(u,5,2,'signed')
y = 1x9 int8 row vector

   -16   -12    -8    -4     0     4     8    12    15

アルゴリズム

uencode では、浮動小数点入力値が量子化の 2n レベルを基に決定される整数値にマッピングされます。この符号化は、ITU-T Recommendation G.701 に設定されている一様符号化の定義を忠実に実現しています。入力範囲 [-v,v] は、2n の等間隔の区間に分割されます。範囲 [-v,v] 内の入力エントリは、入力の範囲のサブ分割に従って、まず量子化され、2n 個の整数のいずれかにマッピングされます。出力の範囲は、符号付きか符号なしで決定されます。

参考文献

[1] International Telecommunication Union. General Aspects of Digital Transmission Systems: Vocabulary of Digital Transmission and Multiplexing, and Pulse Code Modulation (PCM) Terms. ITU-T Recommendation G.701. March, 1993.

参考

R2006a より前に導入