2010-03-17 59 views

回答

17

范围从-160 dB到0 dB。您可能希望将其显示在从-90 dB到0 dB的仪表中。将其显示为分贝实际上比线性音频水平更有用,因为分贝是对数刻度,这意味着它更接近我们感知声音的声音。

这就是说,可以使用它来从分贝转换为线性的:

linear = pow (10, decibels/20);

和反向:

decibels = log10 (linear) * 20;

范围用于上述分贝为负无穷大到零,线性为0.0至1.0。当线性值为0.0时,即-inf dB;在1.0时线性为0dB。

+10

这里'20'究竟是什么? – 2011-10-14 19:59:54

+0

当测量空气中的声强时,参考值通常为20微帕(μPa)的声压,这是健康的年轻人能够听到的平均最安静的声音的教科书值(频率为1000Hz) https: //www.researchgate.net/post/Is_there_any_relationship_between_dB_decibel_and_dBA_how_to_convert_dB_to_dBA – 2017-10-23 17:06:07

4

Apple还实现了dB线性幅度转换类MeterTable.cpp和MeterTable.h 在SpeakHere应用示例中查找它。

您可以使用该计算值的内联函数“上即时”

inline double DbToAmp(double inDb); 

OR

创建MeterTable例如使用预先计算的查找表。这将转换值存储在内存中,以便您的应用程序可以减少计算次数。

float ValueAt(float inDecibels); 

注:如果您有很多其他计算在同一时间进行或您需要非常快的处理,可能需要查找表。

+1

SpeakHere应用示例链接 - > http://developer.apple.com/library/ios/#samplecode/SpeakHere/Introduction/Intro.html – 2013-06-26 21:31:06

+0

而DbToAmp函数返回:' pow(10。,0.05 * inDb);' – CharlesA 2014-05-27 09:55:37

+0

也https://github.com/warrenburton/MeterTableOC,如果你不想在你的项目中轻微的C++文件的麻烦 – 2015-07-03 22:37:34