📄 pnl_calculation.m
字号:
function pnl_band= pn_calculation(spl_band, noys_cur)
% 本函数为计算噪度的程序,需要输入信号的三分之一倍频带(中心频率53——10000赫兹)的声压级,并要输入等噪度表格。
%本程序返回值为噪度值矩阵,此矩阵的说明见函数最后一条说明。
[e,f]=size(spl_band);%得到声压级信号的尺寸
[m,n]=size(noys_cur);%得到噪度表矩阵的尺寸,其中表格中第一列为声压级值
spl_band=round(spl_band);%将各个频带的声压级取为整数
pn_band=zeros(e,f);%定义与信号声压级矩阵相对应的噪度矩阵
for r=1:e%对各个信号依次查找对应的噪度值
for t=1:f%对同一信号的各个频带的声压级依次查找对应的噪度值
for i=1:m%对某一声压级,从噪度表中查找相等的声压级
if spl_band(r,t)==noys_cur(i,1)%将声信号的个频带的声压级分别与等噪度表格的声压级想比较
pn_band(r,t)=noys_cur(i,t+1);%当找到一致的声压级时,从噪度表中将相应的同频带的噪度取出,如果找不到则此频带噪度值赋值为0
end
end
end
end
pn_max=max(pn_band,[],2); % 每个声信号噪度最大的一个频带的感觉噪度
pn_sum=sum(pn_band,2); % 每个声信号所有频带的感觉噪度之和
pn_total=zeros(f,1); %总噪度的空向量
pn_total=(1-0.15)*pn_max+0.15*pn_sum;%计算噪度
pnl_total=zeros(f,1);%总噪度级的空向量
pnl_total=40+33.3*log10(pn_total);%计算总噪度级
pnl_band=[pn_band,pn_max,pn_sum,pn_total,pnl_total];%将各频带的噪度、每个信号各频带中的最大噪度、各信号的各频带的噪度之和、各信号...
%计算得到的噪度、各信号计算得到的噪...
%度级逐列成新的矩阵pnl_band,此矩阵为本函数的最终返回结果
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -