我得到的分贝值是负值。我只想在从0到100的图形上绘制这些值。那么有没有办法把分贝值转换成正值呢?
发布于 2011-06-29 06:36:30
只需使用fabs() C++方法
fabs函数双fabs ( double X );浮动fabs ( float X );长双fabs ( long double X );计算绝对值
返回x( /x/ )的绝对值。
在C++中,abs也在此标头中声明,具有相同的行为。
参数x浮点值。
返回值x的绝对值。
可移植性在C中,只有此函数的双倍版本具有此名称。
发布于 2011-06-29 06:49:15
0 dB
通常对应于全比例输入(请记住,普通的dB scale实际上定义的是比率,而不是绝对值,因此0 dB
的含义有点随意)。例如,对于16位音频,值的范围通常从0 dB
到-96 dB
。要在0 - 100
的规模上表示这一点,您只需添加96 dB
,将此范围扩大到0..+96 dB
。
发布于 2011-06-29 06:38:37
这不是一个特定于分贝的解决方案,但是如果你想要你的刻度在0-100之间,取你的最小值(让我们称之为minVal
),然后加上-minVal
得到0。然后除以你的最大值,再乘以100。
https://stackoverflow.com/questions/6516510
复制相似问题