Программа 16.2
100 'ПОЛОСОВОЙ ОКОННЫЙ ФИЛЬТР
110 'Данная программа выполняет расчёт фильтра 801-го порядка
120 '
130 DIM A[800] 'A[ ] область памяти для НЧ-фильтра
140 DIM B[800] 'B[ ] область памяти для ВЧ-фильтра
150 DIM H[800] 'H[ ] область памяти для полосового фильтра
160 '
170 PI = 3.1415926
180 M% = 800 'Определение порядка фильтра (801-й порядок)
190 '
200 ' 'Вычисление весовых коэффициентов НЧ-фильтра с частотой
210 FC = 0.196 'среза 0.196 (16.4) и размещение их в A[ ]
220 FOR I% = 0 TO 800
230 IF (I%-M%/2) = 0 THEN A[I%] = 2*PI*FC
240 IF (I%-M%/2) <> 0 THEN A[I%] = SIN(2*PI*FC * (I%-M%/2)) / (I%-M%/2)
250 A[I%] = A[I%] * (0.42 - 0.5*COS(2*PI*I%/M%) + 0.08*COS(4*PI*I%/M%))
260 NEXT I%
270 '
280 SUM = 0 'Нормирование коэффициентов НЧ-фильтра для получения
290 FOR I% = 0 TO 800 'единичного коэффициента усиления на нулевой частоте
300 SUM = SUM + A[I%]
310 NEXT I%
320 '
330 FOR I% = 0 TO 800
340 A[I%] = A[I%] / SUM
350 NEXT I%
360 ' 'Вычисление весовых коэффициентов НЧ-фильтра с частотой
370 FC = 0.204 'среза 0.204 (16.4) и размещение их в B[ ]
380 FOR I% = 0 TO 800
390 IF (I%-M%/2) = 0 THEN B[I%] = 2*PI*FC
400 IF (I%-M%/2) <> 0 THEN B[I%] = SIN(2*PI*FC * (I%-M%/2)) / (I%-M%/2)
410 B[I%] = B[I%] * (0.42 - 0.5*COS(2*PI*I%/M%) + 0.08*COS(4*PI*I%/M%))
420 NEXT I%
430 '
440 SUM = 0 'Нормирование коэффициентов НЧ-фильтра для получения
450 FOR I% = 0 TO 800 'единичного коэффициента усиления на нулевой частоте
460 SUM = SUM + B[I%]
470 NEXT I%
480 '
490 FOR I% = 0 TO 800
500 B[I%] = B[I%] / SUM
510 NEXT I%
520 '
530 FOR I% = 0 TO 800 'Преобразование НЧ-фильтра (массив B[ ])
540 B[I%] = - B[I%] 'в ВЧ-фильтр путём инверсии АЧХ (см. Рис. 14.5)
550 NEXT I%
560 B[400] = B[400] + 1
570 '
580 '
590 FOR I% = 0 TO 800 'Попарное сложение коэффициентов НЧ-фильтра A[ ]
600 H[I%] = A[I%] + B[I%] 'и ВЧ-фильтра B[ ] и сохранение получившегося
610 NEXT I% 'режекторного фильтра в H[ ] (см. Рис. 14.8)
620 '
630 FOR I% = 0 TO 800 'Преобразование режекторного фильтра в полосовой
640 H[I%] = -H[I%] 'с помощью инверсии АЧХ
650 NEXT I%
660 H[400] = H[400] + 1
670 ' 'Коэффициенты полосового фильтра находятся в H[ ]
680 END
660 H[400] = H[400] + 1
670 ' 'Коэффициенты полосового фильтра находятся в H[ ]
680 END