MFC计算分贝

分贝的一种定义是,表示功率量之比的一种单位,等于功率强度之比的常用对数的10倍;

主要用于度量声音强度,常用dB表示;

其计算,摘录网上一段资料;

声音的分贝值可以通过以下公式计算:
dB = 10 log10(P / P0)
其中,P表示声音的功率(瓦特),P0表示参考声音的功率(通常为10^-12瓦特),log10表示以10为底的对数。

已知声音的功率为P,则可以按照以下步骤计算分贝值:
1. 将P除以参考声音功率P0,得到一个数值
2. 对这个数值取对数,以10为底
3. 将这个对数乘以10,得到分贝值

例如,如果声音的功率为1瓦特,参考声音功率为10^-12瓦特,则可以按照以下步骤计算分贝值:
1. 1 / 10^-12 = 1e+12
2. log10(1e+12) = 12
3. 12 * 10 = 120 dB
因此,这个声音的分贝值为120 dB;

下面MFC做一下;VC6新建一个对话框工程;

设计如下界面并为编辑框添加成员变量,

先定义参考功率,

    #define ZEROPOWER 10E-12

并包含 <math.h>;

按钮单击代码;

void CDbDlg::OnButton1() 
{
	// TODO: Add your control notification handler code here
	UpdateData(TRUE);
	m_result = 10 * log10(m_wt / ZEROPOWER);
	//m_result = m_wt / ZEROPOWER;
    UpdateData(FALSE);	
}

运行一下;计算一次, 

 

再计算一次;

 

 1瓦的时候他的是120dB,我算的为什么是110dB;我也不知道参考功率是否是10^-12瓦特;有时间再看;

摘录一点常见声音响度的分贝参考如下;

10 分贝:非常安静的房间,树叶被风略过的沙沙声
20 分贝:乡村的夜晚
30 分贝:安静的办公室内、钟表的滴答声
40~60 分贝:正常谈话,相距约一臂远的人声
50 分贝左右:洗衣机的工作声
70 分贝:3 米外吸尘器的工作声
80 分贝: 3 米外经过的车辆轰鸣声
110~130 分贝:夜总会、迪厅、酒吧、体育赛场
120 分贝:会让耳朵里疼痛的声音

猜你喜欢

转载自blog.csdn.net/bcbobo21cn/article/details/132158497
MFC