Signal Processing Toolbox | ![]() ![]() |
表示
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
] (1は、v
に対するデフォルト値)内の浮動小数点値をもつ要素として扱えます。範囲[-v,v
] 外の入力 u
の要素は、オーバフローとして取り扱かわれ、飽和します。
u
の要素が -v
より小さいものは、関数 uencode
の出力は0になります。 u
の要素が v
より大きいものは、関数 uencode
の出力は 2n
-1 になります。y = uencode(u,n,v,'
は、範囲 [-SignFlag
')
v
,v
] 内の値をもつ浮動小数点数 u
個の多次元配列の中の要素を、整数出力 y
にマッピングします。この範囲外の入力要素は、飽和します。出力の整数タイプは、文字列'SignFlag
' と量子化レベル 2n
の数に依存します。文字列 'SignFlag
'には、つぎのいずれかを設定することができます。
'signed'
:
範囲 [-2n
/2, (2n
/2) - 1] 内の大きさをもつ符号付き整数を出力します。'unsigned'
(デフォルト):
範囲 [0, 2n
-1] 内の大きさをもつ符号なし整数を出力します。出力データタイプは、つぎの表に示されるビット数で最適化されます。
例題
[-1,1] の中の浮動小数点スカラを uint8
(符号なし)整数にマッピングし、階段状のプロットを作成しましょう。水平軸は、-1から1までの範囲で、垂直軸は、0から7 (2^3-1
)までの範囲です。
u = [-1:0.01:1]; y = uencode(u,3); plot(u,y,'.')
さて、入力にピーク値を設定することで、飽和の影響をみることができます。
u = [-2:0.5:2]; y = uencode(u,5,1) y = 0 0 0 8 16 24 31 31 31
u = [-2:0.5:2]; y = uencode(u,5,2,'signed') y = -8 -4 0 4 8 12 16 20 23
アルゴリズム
uencode
は、浮動小数点値を量子化の 2n
レベルを基に決定される整数値にマッピングします。この符号化は、ITU-T Recommendation G.701に設定されている一様復号化の定義を忠実に実現しています。入力範囲 [-v
,v
] は、2n
の等間隔に分割されます。[-v
,v
] の中の入力要素は、入力の範囲のサブ分割に従って、まず、量子化され、2n
個の整数のいずれかにマッピングされます。出力の範囲は、符号付きまたは符号なしのいずれかにより、依存します。
参考
udecode
2n レベルの量子化整数を浮動小数点に復号化
参考文献
General Aspects of Digital Transmission Systems: Vocabulary of Digital Transmission and Multiplexing, and Pulse Code Modulation (PCM) Terms, International Telecommunication Union, ITU-T Recommendation G.701, March, 1993.
![]() | udecode | unwrap | ![]() |