dbFS计算

#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 dbFS\n", i, argv[i], pwr);
	}


    return 0;
}

概念:

原文地址:【转】db, dbm, dbfs作者:willow

dBFS的全称是"decibels full scale",翻译成中文就是“满量程分贝”。它是在有最大可用电平的数字系统中使用的dB幅度电平的简写。0dBFS指最大可用电平。需要注意一下的是这个系统中最大电平指的是峰值还是rms值,这是会造成差别的。

一个数字系统的动态范围是指满幅信号电平和底噪rms的比值。理论上的动态范围由下式给出:

DR = SNR = 20log10(2^n) = 6.02n

 

上式基于量化噪声是均匀分布的情况。当该条件满足时,一个16bit的量化将产生96.33 dBFS的动态范围。

dBFSJames Colotti在二十世纪八十年代首先提出。James Colotti是一名模拟电子工程师,他是评估高速ADCDAC的先驱。1987年,在他的文章“Digital Dynamic Analysis of A/D Conversion Systems through Evaluation Software based on FFT/DFT Analysis”中,术语dBFS第一次正式出现。

参考资料:http://en.wikipedia.org

电学中分贝与放大倍数的转换关系为:  

  AV (dB) = 20 lg ( Vo / Vi ) 
  AI (dB) = 20 lg ( Io / Ii )
  Ap (dB) = 10 lg ( Po / Pi )
分贝数值中,-3dB和0dB两个点是必须了解的。
  -3dB也叫半功率点截止频率点,这时功率是正常时的一半电压或电流是正常时的1/2在电声系统中,±3dB的差别被认为不会影响总特性,所以各种设备指标,如频率范围,输出电平等,不加说明的话都可能有±3dB的出入。
  0dB表示输出与输入或两个比较信号一样大
  分贝是一个相对大小的量,没有绝对的量值可您在电平表或马路上的噪声计上也能看到多少dB的测出值,这是因为人们给0dB先定了一个基准
  常用的0dB基准有下面几种:
  1) dBFS,以满刻度的量值为0dB,常用于各种特性曲线上;
  2) dBm,在600Ω负载上产生1mW功率(或0.775V电压)为0dB,常用于交流电平测量仪表上;
  3) dBV,以1伏为0dB;

  4) dBW,以1瓦为0dB。

4. dBc

常用在射频器件的性能上。dBc也是一个表征相对功率的单位,其计算方法与dB的计算方法完全一样。一般来说,dBc是相对于载波功率而言的,在许多情况下用来度量与载波功率的相对值,如度量干扰(同频干扰、互调干扰、交调干扰和带外干扰)、耦合、杂散等相对量值,在采用dBc的地方,原则上可以使用dB替代。

5. dBi、dBd

dBi和dBd均用于表达功率增益,两者都是一个相对值,只是其参考的基准不一样。dBi的参考基准为全方向性天线(点源天线),dBd的参考基准为偶极子(半波偶极子天线),因此两者的值略有不同,同一增益用dBi表示要比用dBd表示大2.15

[例:对于增益为16dBd的天线,其增益按单位dBi进行折算后为18.15dBi(忽略小数点后为18dBi)。


### 关于dBFS和dBc的理解 dBFS (decibels relative to full scale) 是一种用于描述信号电平相对于数字系统的最大可能不失真幅度的比例单位[^1]。通常情况下,0 dBFS代表系统能够处理的最大峰值电平。 dBc (decibels relative to carrier) 则是用来衡量某个频率成分相对载波强度的比例,在通信工程中经常用来评估谐波失真和谐波干扰的程度[^2]。 需要注意的是,dBFS 和 dBc 并不是文件格式,而是两种不同的测量标准或表达方式,因此不存在直接意义上的 “文件” 转换过程。但是可以在特定应用场景下通过计算实现两者间的数值转换: 对于给定的一个信号,假设已知该信号的峰值得到了 X dBFS 的读数,并且在同一时刻测得了 Y dBc 的杂散响应,则可以通过下面的方式理解这两个值的关系: - 如果信号本身被视作“载波”,那么任何偏离此理想正弦波形的部分都可以视为‘杂散发射’; - 假设原始信号(即所谓的'载波')具有 Z dBFS 的水平,而某一特定频偏处存在一个大小为 W dBFS 的杂音/谐波分量;此时W-Z就等于Y dBc。 具体来说,如果有一个信号在满刻度下的 SNR 测量结果为 64.1 dBFS,这意味着噪声底比主要信号低了大约 64.1 dB。而在 SFDR 中提到的 70.4 dBc 表明最显著的非线性产物距离主信号有约 70.4 dB 的差距[^3]。 ```python def calculate_dbc_from_dbfs(signal_level_dbfs, harmonic_or_noise_level_dbfs): """ 计算dBFS到dBc的变化 参数: signal_level_dbfs -- 主信号的电平(dBFS) harmonic_or_noise_level_dbfs -- 杂音或其他分量的电平(dBFS) 返回: dbc_value -- 相对载波的电平变化(dBc) """ dbc_value = harmonic_or_noise_level_dbfs - signal_level_dbfs return dbc_value # 示例:当信号电平为-3 dBFS,杂音电平为-78 dBFS时, print(f"The difference is {calculate_dbc_from_dbfs(-3,-78)} dBc.") ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值