| 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 | ![]() |