把频谱图转换成声压级图

从可以听到的强度最小的声音,到强度大到能够引起痛觉的声音,声强的绝对值相差一千万亿倍。显然,用声强的绝对值表示声音的大小是不方便的。为了便于应用,人们便根据人耳对声音强弱变化响应的特性,引出一个对数量来表示声音的大小,这就是声强级,声压的平方与声强成正比,所以声强级可以转换成声压级。

声压级定义为将待测声压p与参考声压p(ref)的比值取常用对数,再乘以20,即:

20lg [p/p(ref)],其单位是分贝。声强级则是10lg [I/I(ref)]。

在空气中参考声压p一般取为2E-5帕(频率为1kHz),这个数值是正常人耳对1.4m(250Hz)机械波刚刚能觉察其存在的声压值,也就是波长1.4m(250Hz)机械波的最小可听声压。一般讲,低于这一声压值,人耳就再也不能觉察出这个机械波的存在了。显然该可听阈声压的声压级即为零分贝。

在较早的文献中一般采用声压级作为测量数据的单位,因为那时技术水平有限,人们只能测声压级

能够直接测量声强级以后,声压级的地位逐渐被声强级取代

一般讲,低于这一声压值,人耳就再也不能觉察出这个机械波的存在了。显然该可听阈声压的声压级即为零分贝。

 

有时在计算声压时希望频谱图能用声压级来表示,声压级也是分贝值,但在计算声压级时0dB有一个标准值,即2×10-5Pa(Pa是压力单位)。
在声学标准中规定,1000Hz下声压为2×105Pa时为0dB,计算声压级时都要和这个标准值进行比较,这就要求对整套声学仪器和记录设备都进行校准。当把声波经调理采样进入计算机时,大部分是电压信号,若知道系统的灵敏度,即计算机中录入多少数值,则对应的声压就为多少。
大部分用户估计很难有这种条件进行校正,但有的厂家生产的声级计把接收到的声波录制成wav文件,录入的数据都已校正为以Pa为单位(当然声级计本身要经过校正),这些数据可直接参与声压级的计算。以下就是一个计算声压级的例子,wav文件就是这类声级计录制的。
example:读人一组实验数据文件(文件名为sndwav1.wav),作出该组数据的频谱图并转换成声压级图。
matlab仿真代码如下:

clear all; clc; close all

[x,fs]=audioread('sndwav1.wav');  % 读入数据
N=length(x);                    % 数据个数
time=(0:N-1)/fs;                % 时间刻度
p0=2e-5;                        % 参考声压
nfft=2^nextpow2(N);             % 把FFT的个数扩展为2的整数次幂
n2=1:nfft/2+1;                  % 正频率的索引号
X = fft(x,nfft);                % FFT
freq = (0:nfft/2)*fs/nfft;      % 计算频率刻度
X_abs=abs(X(n2))*2/N;           % 计算幅值
X_level=20*log10(X_abs/p0);     % 计算声压级
% 作图
subplot(211);
plot(time,x,'k');
xlabel('时间/s'); ylabel('幅值/pa')
title('信号的波形图')
subplot 212; plot(freq/1000,X_level,'k');
xlabel('频率/kHz'); ylabel('声压级/dB')
title('信号的声压级谱图'); axis([0 24 -35 35]);

运行结果如下:

 

实验数据下载链接如下:

https://download.csdn.net/download/qq_42233059/86406327

参考文献:MATLAB数字信号处理85个实用案例精讲——入门到进阶;宋知用(编著)

  • 4
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值