在DSP實現前,先在matlab中實現:(對照上面公式一行行實現即可)
fs=48000;
fc=10000; %中心頻率
g=6;
Q=1; %值越大,峯值越尖
A=power(10,g/40);
w=2*pi*fc/fs;
sinw=sin(w);
cosw=cos(w);
alpha=sinw/(2*Q);
b0=1+alpha*A;
b1=-2*cosw;
b2=1-alpha*A;
a0=1+alpha/A;
a1=-2*cosw;
a2=1-alpha/A;
B=[b0,b1,b2];
A=[a0,a1,a2];
B=B/a0;
A=A/a0;
freqz(B,A)
結果:
freqz(B,A,65536,fs):
DSP上實現:(這裏展示部分代碼)
注意:係數存儲有順序
sections = 2:兩個二階濾波
驗證計算的係數是否正確:
matlab中檢驗:
符合:
最後:看output出來是不是和matlab結果一樣即可