Программа 33

Программа 33.2

100 'ФИЛЬТР ЧЕБЫШЕВА – ВЫЧИСЛЕНИЕ ВЕСОВЫХ КОЭФФИЦИЕНТОВ

110 '

120 'НАЧАЛЬНЫЕ ЗНАЧЕНИЯ

130 DIM A[22] 'содержит коэффициенты a по завершении выполнения программы

140 DIM B[22] 'содержит коэффициенты b по завершении выполнения программы

150 DIM TA[22] 'используется внутри программы для объединения ступеней

160 DIM TB[22] 'используется внутри программы для объединения ступеней

170 '

180 FOR I% = 0 TO 22

190 A[I%] = 0

200 B[I%] = 0

210 NEXT I%

220 '

230 A[2] = 1

240 B[2] = 1

250 PI = 3.14159265

260 'ВВОД ЧЕТЫРЁХ ПАРАМЕТРОВ ФИЛЬТРА

270 INPUT "Введите частоту среза (от 0 до 0.5): ", FC

280 INPUT "Введите 0 для НЧ-фильтра, 1 для ВЧ-фильтра: ", LH

290 INPUT "Введите размах колебаний АЧХ в процентах (0…29): ", PR

300 INPUT "Введите количество полюсов (2,4,...20): ", NP

310 '

320 FOR P% = 1 TO NP/2 'ЦИКЛ ДЛЯ КАЖДОЙ ПАРЫ ПОЛЮСОВ

330 '

340 GOSUB 1000 'Подпрограмма (Программа 33.3)

350 '

360 FOR I% = 0 TO 22 'Добавление коэффициентов в каскад

370 TA[I%] = A[I%]

380 TB[I%] = B[I%]

390 NEXT I%

400 '

410 FOR I% = 2 TO 22

420 A[I%] = A0*TA[I%] + A1*TA[I%-1] + A2*TA[I%-2]

430 B[I%] = TB[I%] - B1*TB[I%-1] - B2*TB[I%-2]

440 NEXT I%

450 '

460 NEXT P%

470 '

480 B[2] = 0 'Окончание объединения коэффициентов

490 FOR I% = 0 TO 20

500 A[I%] = A[I%+2]

510 B[I%] = -B[I%+2]

520 NEXT I%

530 '

540 SA = 0 'НОРМИРОВАНИЕ КОЭФФИЦИЕНТА УСИЛЕНИЯ

550 SB = 0

560 FOR I% = 0 TO 20

570 IF LH = 0 THEN SA = SA + A[I%]

580 IF LH = 0 THEN SB = SB + B[I%]

590 IF LH = 1 THEN SA = SA + A[I%] * (-1)^I%

600 IF LH = 1 THEN SB = SB + B[I%] * (-1)^I%

610 NEXT I%

620 '

630 GAIN = SA / (1 - SB)

640 '

650 FOR I% = 0 TO 20

660 A[I%] = A[I%] / GAIN

670 NEXT I%

680 ' 'Результирующие коэффициенты содержатся в A[ ] и B[ ]

690 END