在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结果一样即可