わかりました、これは宿題の質問であり、解決策ではなく方法を求めていることを認めているので、最初に信号値が必要です
x = Recorder.getaudiodata('int16');
量子化する予定なので、正規化される [-1, 1] の double とは対照的に、適切な範囲の値から始めることもできます。
したがって、次に 16 ビットから 15 に量子化する必要があります。これは実際、matlab では非常に簡単です。大量のコードを記述している場合、おそらく機能しないでしょう。いくつかの方法があります。
基本的に、1 ビットを削除すると、半分の情報が破棄されます。
2 ビット精度の数値 0、1、2、3 を取ります。バイナリでは、00、01、10、11 です。1 ビットに量子化すると、半分の情報が破棄されます。LSB がなくなったと想像してください。私は 0、0、1、1 を持っています。しかし、私の元の数値は 0 から 3 にまたがっています...通常は、数値に同じダイナミック レンジを持たせたいと考えています。数字の半分を捨てたので、新しい数字を 2 倍にするとどうなるでしょうか? 0、0、2、2 が得られます。これは 2 ビットから 1 ビットへの正しい量子化です。
あなたの問題で、すべての奇数が偶数だったらどうなるでしょうか?