码迷,mamicode.com
首页 > 其他好文 > 详细

信号处理中数字增益的局限性

时间:2015-05-09 13:25:59      阅读:107      评论:0      收藏:0      [点我收藏+]

标签:算法

在信号处理领域,增益分为数字增益和模拟增益,数字增益用于操作离散的数字化的采样值,模拟增益直接操作连续的模拟的信号波形。对于目前大多数高端音响,都是采用模拟增益调整音量的,原因就在于数字增益有一些局限性。

数字30, 003在16bit DAC中是这么表达的:

0111010100110011 = 30,003

对数字增益来说,调低音量是直接减少这个数字:比如调低-10db,

而若20log(x)=-10,则x=0.3162,则降低10db就是把原音量值乘以0.3162。

于是,结果就是30003*0.3162=9488

0010010100010000 = 9,488

但是。。注意,其实不是应该是这样的吗?

30,003 * 0.3162 = 9487.7817

这个四舍五入造成的误差,虽然很小,但确实存在。

如果我们想更大幅度的降低音量,比如-35db,那么

-35db是0.0177828 ,最终得到结果:

0000001000010110 = 534

但实际上精确的结果是

30,003 * 0.3162 = 533.5372

这样的误差就是866PPM(parts per million),略有点大了。

所以,这样的误差,看上去不起眼,但是音量越低,就越难以忽视。

由此得到结论:数字增益无法处理分数会产生精度误差。

那么,怎么处理这个问题呢?

如果我们用32位定点小数表示一个16位的采样的话,30,003在32 bit DAC里是这么表示的:

0111010100110011.0000000000000000 = 30,003

当-35db音量时:

-35db is 0.0177828,因此结果是:

0000001000010110.1000100110000100 =533.5372

所以拓宽处理通路可以很有效得降低精度的丧失。

目前音频处理领域很多采用32位float采样来进行信号处理,其实原理是一样的。

信号处理中数字增益的局限性

标签:算法

原文地址:http://blog.csdn.net/ffmpeg4976/article/details/45600447

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!