?? pnl_calculation.m
字號:
function pnl_band= pn_calculation(spl_band, noys_cur)
% 本函數(shù)為計算噪度的程序,需要輸入信號的三分之一倍頻帶(中心頻率53——10000赫茲)的聲壓級,并要輸入等噪度表格。
%本程序返回值為噪度值矩陣,此矩陣的說明見函數(shù)最后一條說明。
[e,f]=size(spl_band);%得到聲壓級信號的尺寸
[m,n]=size(noys_cur);%得到噪度表矩陣的尺寸,其中表格中第一列為聲壓級值
spl_band=round(spl_band);%將各個頻帶的聲壓級取為整數(shù)
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,此矩陣為本函數(shù)的最終返回結果
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -