実際、興味深い質問です。私はあなたが言っていることを知っています。周波数軸は確かに対数です。しかし、振幅はどうですか?別のポスターへの回答では、dB にはゼロの概念がないため、振幅を単純に dB 単位にすることはできません。これにより、量子化誤差、SNR、およびダイナミック レンジの概念が導入されます。
受信したデジタル化された (つまり、離散時間と離散振幅) 時間領域信号 x[n] が s[n] + e[n] に等しいと仮定します。ここで、s[n] は送信された離散時間信号です (すなわち、連続振幅) であり、e[n] は量子化誤差です。x[n] が b ビットで表され、簡単にするために [0,1) の値を取るとします。その場合、e[n] の最大ピーク ツー ピーク振幅は 1 つの量子化レベル、つまり 2^{-b} です。
ダイナミック レンジは、デシベル単位で 20 log10 (最大ピーク ツー ピーク |s[n]|)/(最大ピーク ツー ピーク |e[n]|) = 20 log10 1/(2 ^{-b}) = 20b log10 2 = 6.02b dB。16 ビット オーディオの場合、ダイナミック レンジは 96 dB です。8 ビット オーディオの場合、ダイナミック レンジは 48 dB です。
では、Winamp はどのように振幅をプロットするのでしょうか? 私の推測:
最小振幅は -6.02b dB と想定され、最大振幅は 0 dB です。視覚的には、Winamp はこれらのしきい値を考慮してウィンドウを描画します。
log(1+X) などの別の非線形マップが使用されます。この関数は常に非負であり、X が大きい場合、log(X) に近似します。
他に知っている専門家はいますか?どう考えているか教えてください。これがどのように実装されているのか、私も興味があります。