Программа 33.1. Объединение последовательно и параллельно соединённых рекурсивных фильтров
100 'ОБЪЕДИНЕНИЕ ПОСЛЕДОВАТЕЛЬНО И ПАРАЛЛЕЛЬНО СОЕДИНЁННЫХ ФИЛЬТРОВ
110 '
120 ' 'ОБЪЯВЛЕНИЕ МАССИВОВ
130 DIM A1[8], B1[8] 'Коэффициенты a и b системы 1
140 DIM A2[8], B2[8] 'Коэффициенты a и b системы 2
150 DIM A3[16], B3[16] 'Коэффициенты a и b системы 3 (результирующей)
160 '
170 'Выбор типа соединения: последовательное или параллельное
180 INPUT "Введите для каскадного соединения 0, для параллельного 1: ", CP%
190 '
200 GOSUB XXXX 'Подпрограмма загрузки A1[ ], B1[ ], A2[ ], B2[ ]
210 '
220 FOR I% = 0 TO 8 'Переход от коэффициентов к передаточной функции
230 B2[I%] = -B2[I%]
240 B1[I%] = -B1[I%]
250 NEXT I%
260 B1[0] = 1
270 B2[0] = 1
280 '
290 FOR I% = 0 TO 16 'Умножение полиномов с использованием свёртки
300 A3[I%] = 0
310 B3[I%] = 0
320 FOR J% = 0 TO 8
330 IF I%-J% < 0 OR I%-J% > 8 THEN GOTO 370
340 IF CP% = 0 THEN A3[I%] = A3[I%] + A1[J%]*A2[I%-J%]
350 IF CP% = 1 THEN A3[I%] = A3[I%] + A1[J%]*B2[I%-J%] + A2[J%]*B1[I%-J%]
360 B3[I%] = B3[I%] + B1[J%] * B2[I%-J%]
370 NEXT J%
380 NEXT I%
390 '
400 FOR I% = 0 TO 16 'Переход от передаточной функции к коэффициентам
410 B3[I%] = -B3[I%]
420 NEXT I%
430 B3[0] = 0
440 ' 'Весовые коэффициенты результирующего фильтра теперь
450 END 'записаны в A3[ ] и B3[ ]