標(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,m和m+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 |