udecode
2n レベルの量子化された整数入力を浮動小数点出力に復号化
構文
y = udecode(u,n)
y = udecode(u,n,v)
y = udecode(u,n,v,'SaturateMode'
)
説明
y = udecode(u,n)
は、uencode
を逆演算し、符号化された多次元整数配列 u
から、量子化浮動小数点値を再構成します。入力引数 n
は 2 ~ 32 の整数でなければなりません。整数 n
は、入力に対する 2n の量子化レベルを指定し、したがって u
内のエントリは以下のいずれかでなければなりません。
[-2n/2, (2n/2) – 1] の範囲の符号付き整数
[0, 2n – 1] の範囲の符号なし整数
入力には、任意の整数データ型 (uint8
、uint16
、uint32
、int8
、int16
、int32
) の実数または複素数を使用できます。オーバーフロー (u
内のエントリが、上で指定した範囲を超えている) した場合は、範囲区間の端の点に飽和されます。結果として得られる y
の次元は、u
と同じになります。そのエントリは範囲 [-1,1]
の値をとります。
y = udecode(u,n,v)
では、出力 y
の値が範囲 [-v,v]
内になるように u
が復号化されます。ここで、v
の既定の値は 1 です。
y = udecode(u,n,v,
では、'SaturateMode'
)u
を復号化し、'saturatemode'
(以下のいずれかが設定可能) に従って、入力のオーバーフロー ([-v,v]
の範囲外にある u
のエントリ) を処理します。
'saturate'
— オーバーフローを飽和させます。これは、オーバーフロー処理の既定の方法です。値が範囲 [-2n/2, (2n/2) - 1] 外の符号付き入力
u
のエントリには、この区間で最も近い端点により決定される値が割り当てられます。値が範囲 [0, 2n-1] 外の符号なし入力
u
のエントリには、この区間で最も近い端点により決定される値が割り当てられます。
'wrap'
— 以下に従ってオーバーフローをラップします。値が範囲 [-2n/2, (2n/2) – 1] 外の符号付き入力
u
のエントリは、2n を法とする算術演算 (u
=mod(u+2^n/2,2^n)-(2^n/2)
を使用した計算) によりラップされてその範囲内に戻されます。値が範囲 [0, 2n – 1] 外の符号なし入力
u
のエントリは、2n を法とする算術演算 (u
=mod(u,2^n)
を使用した計算) によりラップされて必要とされる範囲内に戻された後、復号化されます。
例
アルゴリズム
このアルゴリズムでは、ITU-T Recommendation G.701 に設定されている一様復号化の定義が忠実に実現されています。整数入力値は、2n 個の一様分布している整数値の 1 つから、範囲 [-v,v]
の量子化された浮動小数点数に、一意にマッピング (復号化) されます。許容される最小の整数入力値は -v
に、最大の整数入力値は v
にマッピングされます。オーバーフローしている値は、指定に従って処理されます。
複素数入力の実数部と虚数部は別々に復号化されます。
参考文献
[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 より前に導入