Например: https://www-users.cs.york.ac.uk/~fisher/mkfilter/trad.html
Summary
You specified the following parameters:
filtertype = Butterworth
passtype = Bandstop
ripple =
order = 4
samplerate = 8000
corner1 = 300
corner2 = 500
adzero =
logmin =
Results
Command line: /www/usr/fisher/helpers/mkfilter -Bu -Bs -o 4 -a 3.7500000000e-02 6.2500000000e-02
raw alpha1 = 0.0375000000
raw alpha2 = 0.0625000000
warped alpha1 = 0.0376744577
warped alpha2 = 0.0633157730
gain at dc : mag = 1.228117168e+00 phase = 0.0000000000 pi
gain at centre: mag = 2.625838338e-04 phase = -0.1007860644 pi
gain at hf : mag = 1.228117167e+00 phase = 0.0000000000 pi
S-plane zeros:
0.0000000000 + j 0.3068734601 4 times
0.0000000000 + j -0.3068734601 4 times
S-plane poles:
-0.0381253082 + j -0.3887681161
-0.0820853942 + j -0.3302289594
-0.0820853942 + j 0.3302289594
-0.0381253082 + j 0.3887681161
-0.0235284888 + j 0.2399226833
-0.0667600386 + j 0.2685751624
-0.0667600386 + j -0.2685751624
-0.0235284888 + j -0.2399226833
Z-plane zeros:
0.9539973718 + j 0.2998149672 4 times
0.9539973718 + j -0.2998149672 4 times
Z-plane poles:
0.8936865359 + j -0.3612167241
0.8740091229 + j -0.2972270418
0.8740091229 + j 0.2972270418
0.8936865359 + j 0.3612167241
0.9493412214 + j 0.2311265590
0.9032562103 + j 0.2473278641
0.9032562103 + j -0.2473278641
0.9493412214 + j -0.2311265590
Recurrence relation:
y[n] = ( 1 * x[n- 8])
+ ( -7.6319789745 * x[n- 7])
+ ( 25.8426636502 * x[n- 6])
+ (-50.6797285443 * x[n- 5])
+ ( 62.9381593930 * x[n- 4])
+ (-50.6797285443 * x[n- 3])
+ ( 25.8426636502 * x[n- 2])
+ ( -7.6319789745 * x[n- 1])
+ ( 1 * x[n- 0])
+ ( -0.6630104844 * y[n- 8])
+ ( 5.3195795874 * y[n- 7])
+ (-18.9433682149 * y[n- 6])
+ ( 39.0847521667 * y[n- 5])
+ (-51.0880587708 * y[n- 4])
+ ( 43.3162291990 * y[n- 3])
+ (-23.2667680099 * y[n- 2])
+ ( 7.2405861811 * y[n- 1])
Ansi ``C'' Code
/* Digital filter designed by mkfilter/mkshape/gencode A.J. Fisher
Command line: /www/usr/fisher/helpers/mkfilter -Bu -Bs -o 4 -a 3.7500000000e-02 6.2500000000e-02 -l */
#define NZEROS 8
#define NPOLES 8
#define GAIN 1.228117167e+00
static float xv[NZEROS+1], yv[NPOLES+1];
static void filterloop()
{ for (;;)
{ xv[0] = xv[1]; xv[1] = xv[2]; xv[2] = xv[3]; xv[3] = xv[4]; xv[4] = xv[5]; xv[5] = xv[6]; xv[6] = xv[7]; xv[7] = xv[8];
xv[8] = next input value / GAIN;
yv[0] = yv[1]; yv[1] = yv[2]; yv[2] = yv[3]; yv[3] = yv[4]; yv[4] = yv[5]; yv[5] = yv[6]; yv[6] = yv[7]; yv[7] = yv[8];
yv[8] = (xv[0] + xv[8]) - 7.6319789745 * (xv[1] + xv[7]) + 25.8426636500 * (xv[2] + xv[6])
- 50.6797285440 * (xv[3] + xv[5]) + 62.9381593930 * xv[4]
+ ( -0.6630104844 * yv[0]) + ( 5.3195795874 * yv[1])
+ (-18.9433682150 * yv[2]) + ( 39.0847521670 * yv[3])
+ (-51.0880587710 * yv[4]) + ( 43.3162291990 * yv[5])
+ (-23.2667680100 * yv[6]) + ( 7.2405861811 * yv[7]);
next output value = yv[8];
}
}