为什么这个分贝计算是/10 而不是/20?
Why is this decibels calculation /10 instead of /20?
AudioKit 支持将音频文件规范化为以分贝 (dB) 为单位的给定最大级别。
我的理解是这些是场量而不是功率量。
因此,这不应该是 / 20.0
而不是 / 10.0
吗?
let gainFactor = Float( pow(10.0, newMaxLevel / 10.0) / pow(10.0, level / 10.0))
这不应该是 20 *
而不是 10 *
吗?
return 10 * log10(maxLev)
有问题的代码:
参考:
http://www.sengpielaudio.com/calculator-db.htm
https://en.wikipedia.org/wiki/Field,_power,_and_root-power_quantities
谢谢!
这是电气工程专业学生在学习功率增益和 voltage/current 对数刻度增益时的一个常见误解,我很惊讶你在这里遇到它。
在我的领域中,对数刻度图最常用于表示系统在给定频率范围内的功率增益。在这种情况下,功率增加 10 分贝相当于功率增加 10 倍。但是,电压和电流并非如此。如果信号的电压或电流增加 10 倍,那么信号的功率增加将 而不是 10 倍,它将是 sqrt(10) ~= 3.16。这是因为功率随着电压和电流的平方成比例增加。
因此,当我们对信号功率随频率变化的方程取对数时,我们会发现类似这样的结果; (对于电阻器)
log(P(ω)) = log(V(ω)^2 / R) = 2log(V(ω)) - log(R)
两边乘以 10 将 Bels 转换为分贝;
10log(P(ω)) = 20log(V(ω)) - 10log(R)
声波的振幅和功率之间的关系类似于电信号 AFAIK 的振幅和功率之间的关系。这就是为什么振幅增加 20 分贝对应于振幅增加 10 倍,功率增加 10 分贝对应于功率增加 10 倍。
P.S。要回答您的问题,您需要确定电平是功率单位还是振幅单位。您对函数使用的单位的了解比我多,因为我对音频文件的经验非常有限,但我的直觉是音频文件是振幅的表示,在这种情况下您是正确的;转换系数需要为 20,而不是 10。
AudioKit 支持将音频文件规范化为以分贝 (dB) 为单位的给定最大级别。
我的理解是这些是场量而不是功率量。
因此,这不应该是 / 20.0
而不是 / 10.0
吗?
let gainFactor = Float( pow(10.0, newMaxLevel / 10.0) / pow(10.0, level / 10.0))
这不应该是 20 *
而不是 10 *
吗?
return 10 * log10(maxLev)
有问题的代码:
参考:
http://www.sengpielaudio.com/calculator-db.htm
https://en.wikipedia.org/wiki/Field,_power,_and_root-power_quantities
谢谢!
这是电气工程专业学生在学习功率增益和 voltage/current 对数刻度增益时的一个常见误解,我很惊讶你在这里遇到它。
在我的领域中,对数刻度图最常用于表示系统在给定频率范围内的功率增益。在这种情况下,功率增加 10 分贝相当于功率增加 10 倍。但是,电压和电流并非如此。如果信号的电压或电流增加 10 倍,那么信号的功率增加将 而不是 10 倍,它将是 sqrt(10) ~= 3.16。这是因为功率随着电压和电流的平方成比例增加。
因此,当我们对信号功率随频率变化的方程取对数时,我们会发现类似这样的结果; (对于电阻器)
log(P(ω)) = log(V(ω)^2 / R) = 2log(V(ω)) - log(R)
两边乘以 10 将 Bels 转换为分贝;
10log(P(ω)) = 20log(V(ω)) - 10log(R)
声波的振幅和功率之间的关系类似于电信号 AFAIK 的振幅和功率之间的关系。这就是为什么振幅增加 20 分贝对应于振幅增加 10 倍,功率增加 10 分贝对应于功率增加 10 倍。
P.S。要回答您的问题,您需要确定电平是功率单位还是振幅单位。您对函数使用的单位的了解比我多,因为我对音频文件的经验非常有限,但我的直觉是音频文件是振幅的表示,在这种情况下您是正确的;转换系数需要为 20,而不是 10。