回复【10楼】cowboy
这个是否可以这样计算?
设 a 为 1~65535,且a的二进制数为:
0 0 0 0 0 1 x x x x x x x x x x
\___ ___/ \___ ___/
v v
前面n个0 i取5位二进制数,不足5位后面补0
则a的分贝值可表示为:
90-6*n+log_tab
n和i可以轻松以移位求得。而对数表如下:
unsigned char log_tab[32]={0,0,0,0,1,1,1,1,1,2,2,2,2,2,3,3,3,3,3,4,4,4,4,4,4,5,5,5,5,5,5,5,};
式中常90为log(32768)*20,系数6为log(2)*20
这个是否可以这样计算?
设 a 为 1~65535,且a的二进制数为:
0 0 0 0 0 1 x x x x x x x x x x
\___ ___/ \___ ___/
v v
前面n个0 i取5位二进制数,不足5位后面补0
则a的分贝值可表示为:
90-6*n+log_tab
n和i可以轻松以移位求得。而对数表如下:
unsigned char log_tab[32]={0,0,0,0,1,1,1,1,1,2,2,2,2,2,3,3,3,3,3,4,4,4,4,4,4,5,5,5,5,5,5,5,};
式中常90为log(32768)*20,系数6为log(2)*20
-----------------------------------------------------------------------
牛仔的这个表没有处理四舍五入,我来个带四舍五入的版本:
log_tab[32]={0,0,1,1,1,1,1,2,2,2,2,3,3,3,3,3,4,4,4,4,4,4,5,5,5,5,5,5,5,6,6,6,}
一周热门 更多>