Программа 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[ ]