ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Суббота
20 апреля
805088 Топик полностью
fk0, легенда (28.12.2017 13:29, просмотров: 387) ответил fk0 на Большой К -- большие погрешности. Хотя в цифре оно конечно может и не страшно. Скорей нужен фильтр Баттерворта (с "гладкой" АЧХ).
Например: 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]; } }
image
[ZX]