将分贝范围转换为字节范围

Convert decibel range to byte range

问候,

我正在寻找一个公式来转换一个范围,其中:

最小 = -100db 和最大 = -30db

至:

最小值 = 0 且最大值 = 255

例如:-60db = ?

看似简单,却让我头晕目眩。

假设您的意思是结果以 db 为单位,您要求的是简单的线性插值:

f(x) = ymin + (x - xmin)*(ymax - ymin)/(xmax - xmin)

或者在你的情况下,

f(x) = 0 + (x + 100)*(255 - 0)/(-30 + 100) 
f(-60 db) = 145.714 

相反,如果您是在谈论将 db 转换为用于与音频信号相乘的比例因子,那么它会稍微复杂一些。例如,将音频信号乘以 0 就是负无穷大 db。所以(至少)你必须特殊情况。