概述
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main(int argc, char ** argv)
{
long double val = 0;//功率相对值
long double pwr = 0;//化为dbFS值
int i;
for (i = 1; i < argc; i++)//系统默认第一个参数为程序名CalcPwr.exe
{
val = atof(argv[i]);//字符串转换为浮点数函数
val = val / pow(2, 30);
long double pwr = 10 * (log(val) / log(10));
printf("Argument%1d: %3s ---> %6.8lf dbFSn", i, argv[i], pwr);
}
return 0;
}
概念:
dBFS的全称是"decibels full scale",翻译成中文就是“满量程分贝”。它是在有最大可用电平的数字系统中使用的dB幅度电平的简写。0dBFS指最大可用电平。需要注意一下的是这个系统中最大电平指的是峰值还是rms值,这是会造成差别的。
一个数字系统的动态范围是指满幅信号电平和底噪rms的比值。理论上的动态范围由下式给出:
DR = SNR = 20log10(2^n) = 6.02n
上式基于量化噪声是均匀分布的情况。当该条件满足时,一个16bit的量化将产生96.33 dBFS的动态范围。
dBFS由James Colotti在二十世纪八十年代首先提出。James Colotti是一名模拟电子工程师,他是评估高速ADC、DAC的先驱。1987年,在他的文章“Digital Dynamic Analysis of A/D Conversion Systems through Evaluation Software based on FFT/DFT Analysis”中,术语dBFS第一次正式出现。
参考资料:http://en.wikipedia.org
电学中分贝与放大倍数的转换关系为:
4) dBW,以1瓦为0dB。
4. dBc
5. dBi
dBi
[
最后
以上就是优秀乌龟为你收集整理的dbFS计算的全部内容,希望文章能够帮你解决dbFS计算所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复