📄 iir_biquad.c
字号:
#define NX 32
void iir_biquad
(
short * input,
int nx,
short * output,
short * state,
short * coeff
);
{
int in, out;
int x, t0, t1, p0, p1, p2, p3;
short s0, s1, c0, c1, c2, c3;
short s2, s3, c4, c5, c6, c7;
int i;
s0 = state[0]; s1 = state[1];
s2 = state[2]; s3 = state[3];
c0 = coeff[0]; c1 = coeff[1];
c2 = coeff[2]; c3 = coeff[3];
c4 = coeff[4]; c5 = coeff[5];
c6 = coeff[6]; c7 = coeff[7];
for (i=0;i<nx;i++)
{
in = input[i] << 14;
p0 = c2*s0 + c3*s1;
p1 = c6*s2 + c7*s3;
p2 = c0*s0 + c1*s1;
p3 = c4*s2 + c5*s3;
t0 = in + p0;
x = in + p0 + p2;
t1 = x + p1;
out = x + p1 + p3;
s1 = s0;
s0 = t0 >> 14;
s3 = s2;
s2 = t1 >> 14;
output[i] = out >> 14;
}
state[0] = t0 >> 14; state[1] = s0;
state[2] = t1 >> 14; state[3] = s2;
}
int main(){
short state[4];
short coeff[8];
short input[NX];
short output[NX];
int i;
for(i=0;i<NX;i++)input[i]=i>>5;
for(i=0;i<4;i++)state[i]=i<<3;
for(i=0;i<8;i++)coeff[i]=i>>7;
iir_biquad(input,NX,output,state,coeff);
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -