標(biāo)題: 基于LPC內(nèi)插法求取聲信號(hào)共振峰的MATLAB程序,得到共振峰頻率和帶寬 [打印本頁(yè)]

作者: huanglinran    時(shí)間: 2018-3-13 17:02
標(biāo)題: 基于LPC內(nèi)插法求取聲信號(hào)共振峰的MATLAB程序,得到共振峰頻率和帶寬
x=sheng_500co2_2;
fs=62500;
u=filter([1 -.99],1,x);                     % 預(yù)加重
wlen=length(u);                             % 幀長(zhǎng)
p=12;                                      % LPC階數(shù)
a=lpc(u,p);                                 % 求出LPC系數(shù)
U=lpcar2pf(a,256);                          % LPC系數(shù)求出頻譜曲線
freq=(0:256)*fs/512;                        % 頻率刻度
df=fs/512;                                  % 頻率分辨率
U_log=10*log10(U);                          % 功率譜分貝值
subplot 211; plot(u,'k');                   % 作圖
axis([0 wlen -0.5 0.5]);
title('預(yù)加重波形');
xlabel('樣點(diǎn)數(shù)'); ylabel('幅值')
subplot 212; plot(freq,U,'k');
title('聲道傳遞函數(shù)功率譜曲線');
xlabel('頻率/Hz'); ylabel('幅值');
[Loc,Val]=findpeaks(U);                     % U中尋找峰值
ll=length(Loc);                             % 有幾個(gè)峰值
for k=1 : ll
   m=Val(k);                              % 設(shè)置m-1,mm+1
   m1=m-1; m2=m+1;
   p=Loc(k);                              % 設(shè)置P(m-1),P(m)P(m+1)
   p1=U(m1); p2=U(m2);
   aa=(p1+p2)/2-p;                        % 按式(9-3-4)計(jì)算
   bb=(p2-p1)/2;
   cc=p;
   dm=-bb/2/aa;                           % 按式(9-3-6)計(jì)算
   pp=-bb*bb/4/aa+cc;                     % 按式(9-3-8)計(jì)算
   m_new=m+dm;
    bf=-sqrt(bb*bb-4*aa*(cc-pp/2))/aa;      % 按式(9-3-13)計(jì)算
   F(k)=(m_new-1)*df;                     % 按式(9-3-7)計(jì)算
   Bw(k)=bf*df;                           % 按式(9-3-14)計(jì)算
   line([F(k) F(k)],[0 pp],'color','k','linestyle','-.');
end
fprintf('F =%5.2f   %5.2f  %5.2f   %5.2f\n',F)
fprintf('Bw=%5.2f   %5.2f  %5.2f   %5.2f\n',Bw)

作者: l拉里123    時(shí)間: 2020-1-8 13:44
U=lpcar2pf(a,256); 請(qǐng)問(wèn)為什么lpcar2pf的第二個(gè)參數(shù)是256




歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1