⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 pnl_calculation.m

📁 计算声音的感觉噪度
💻 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 + -