メインコンテンツ

udecode

2n レベルの量子化された整数入力を浮動小数点出力に復号化

    説明

    x = udecode(y,n) は、2n レベルで量子化された整数 y の配列から浮動小数点値を再構築することで、uencode の逆演算を実行します。udecode 関数は、-1 から 1 までの範囲の値をもつ浮動小数点出力配列 x を返します。

    x = udecode(y,n,v) は、-v から v までの範囲の値をもつ浮動小数点出力配列を返します。

    x = udecode(y,n,v,OFM) は、量子化された整数入力 y のオーバーフローを処理する方法も指定します。

    すべて折りたたむ

    8 ビット符号付き整数のベクトルを作成します。3 ビットで復号化します。

    u = int8([-1 1 2 -5]);
    ysat = udecode(u,3)
    ysat = 1×4
    
       -0.2500    0.2500    0.5000   -1.0000
    
    

    u 内の最後のエントリが飽和され、既定のピーク入力振幅 1 になっていることに注意してください。ピーク入力振幅を 6 に変更します。

    ysatv = udecode(u,3,6)
    ysatv = 1×4
    
       -1.5000    1.5000    3.0000   -6.0000
    
    

    これでも、最後の入力エントリはまだ飽和状態です。オーバーフローをラップします。

    ywrap = udecode(u,3,6,'wrap')
    ywrap = 1×4
    
       -1.5000    1.5000    3.0000    4.5000
    
    

    量子化レベルを上げます。

    yprec = udecode(u,5)
    yprec = 1×4
    
       -0.0625    0.0625    0.1250   -0.3125
    
    

    入力引数

    すべて折りたたむ

    量子化された整数入力。ベクトル、行列、または多次元配列として指定します。

    • 符号付き入力 — int8int16、または int32 の値を指定します。

    • 符号なし入力 — uint8uint16、または uint32 の値を指定します。

    udecode 関数は、複素数値入力 y の実数部と虚数部を個別に復号化します。

    例: y = int16([-6 9 23 1 10 -7])

    データ型: int8 | int16 | int32 | uint8 | uint16 | uint32
    複素数のサポート: あり

    量子化レベルの数の測定。2 ~ 32 の正の整数スカラーとして指定します。2n の値は、量子化された配列 y に対して確立された量子化レベルの数を示し、y の量子化範囲を定義します。

    量子化範囲は、n の値と y の符号の性質によって決まります。

    • 符号付き入力 — –2n/2(2n/2) – 1

    • 符号なし入力 — 0(2n – 1)

    udecode 関数は、量子化範囲外の y の値をオーバーフローと見なします。

    データ型: double

    飽和しない振幅。正のスカラーとして指定します。udecode は、出力 x[-v,v] の範囲の値をもつように y を復号化し、浮動小数点出力の信号の飽和を防ぎます。

    データ型: double

    オーバーフローの処理方法。次のように指定します。

    • "saturate" — オーバーフローを飽和させます。udecode 関数は、y 内のオーバーフローした要素を、量子化範囲の最も近い端点に等しい値に再度割り当てます。

      • 符号付き入力 — udecode は、オーバーフローした要素を、-2^n/2 (量子化範囲を下回るオーバーフロー) または 2^n/2-1 (量子化範囲を上回るオーバーフロー) に設定します。

      • 符号なし入力 — udecode は、オーバーフローした要素を 2^n-1 (量子化範囲を上回るオーバーフロー) に設定します。

    • "wrap" — すべてのオーバーフローをラップします。udecode は、2n を法とする演算を使用して、y 内のオーバーフローしたエントリに値を再度割り当てます。

      • 符号付き入力 — udecode は、オーバーフローした要素 yOFmod(yOF+2^n/2,2^n)-(2^n/2) に設定します。

      • 符号なし入力 — udecode は、オーバーフローした要素 yOFmod(yOF,2^n) に設定します。

    データ型: char | string

    出力引数

    すべて折りたたむ

    符号化されていない浮動小数点出力。ベクトル、行列、または多次元配列として返されます。出力配列 x の次元は、y と同じになります。

    アルゴリズム

    このアルゴリズムでは、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.

    拡張機能

    すべて展開する

    C/C++ コード生成
    MATLAB® Coder™ を使用して C および C++ コードを生成します。

    バージョン履歴

    R2006a より前に導入

    すべて展開する

    参考